Máquina Mailforge (Vulnyx)
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.84
Comprobamos si tenemos conexión con la Máquina Victima, para ello ejecutamos el siguiente comando:
$ ping -c 1 10.0.2.84
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.84 -sVC
Como podemos comprobar la Máquina Victima tiene abiertos los puertos 22, 80 y 5000. Tambien nos muestra el dominio mailforge.nyx, lo agregamos al archivo /etc/hosts, para ello ejecutamos el siguiente comando:
$ nano /etc/host
Comprobamos que es lo que corre en el puerto 5000.
Encontramos una aplicación para subir y previsualizar archivos .eml, presentando un riesgo potencial de Server-Side Template Injection (SSTI). Por lo tanto, probamos esta vulnerabilidad creandonos un archivo .eml con el siguiente payload en el nombre del archivo:
$ touch {{7*7}}.eml
Lo subimos y lo previsualizamos en la opción de Preview.
Observamos en el título de la pestaña del navegador se muestra el resultado de la operación matemática, confirmando así dicha vulnerabilidad.
A continuación, creamos otro archivo .eml con un payload mas avanzado en el campo Subject para identificar el motor de plantillas que usa, para ello ejecutamos el siguiente comando:
$ nano correo.eml
Lo subimos y lo previsualizamos.
Tras varias pruebas comprobamos que se trata del motor de plantillas Flask/Jinja2.
A continuación, modificamos el archivo para utilizar el siguiente payload el cual se aprovecha del contexto interno de Flask/Jinja2 para acceder al módulo os.
Lo subimos y lo previsualizamos.
Con esto confirmamos la ejecución de comandos vía SSTI.
Volvermos a modificar el archivo para utilizar el siguiente payload con la siguiente reverse shell:
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
Lo subimos y lo previsualizamos.
Y obtenemos una shell como mailforge.
A continuación, hacemos un tratamiento de la TTY para obtener una shell interactiva y así evitar problemas, para ello ejecutamos los siguientes comandos.
$ python -c 'import pty; pty.spawn("/bin/bash")'
Ctrl + Z
$ stty raw -echo;fg
$ reset xterm
$ export TERM=xterm
Enumeramos los permisos sudo, para ello ejecutamos el siguiente comando:
$ sudo -l
Nos encontramos con el script cleaner.sh que lo podemos ejecutar como el usuario root, revisamos los permisos de este script para ello ejecutamos el siguiente comando:
$ ls -la /usr/local/bin/cleaner.sh
El archivo es completamente escribible por cualquier usuario, por lo tanto, lo modificamos para ello ejecutamos el siguiente comando:
$ nano /usr/local/bin/cleaner.sh
Lo ejecutamos de la siguiente manera:
$ sudo -u root /usr/local/bin/cleaner.sh














