ConsoleLog

🚀Preparación del Entorno

El proceso para desplegar las máquinas de DockerLabs es bastante sencillo. Sigue estos pasos:

📌 Paso 1: Descargar el archivo CTF

Descarga el archivo ZIP del CTF que deseas utilizar.

📌 Paso 2: Descomprimir el archivo

Ejecuta el siguiente comando en la terminal:

unzip [nombre].zip

📂 Esto extraerá los siguientes archivos:

📌 Paso 3: Ejecutar el script de despliegue

Para iniciar el despliegue de la máquina virtual, ejecuta:

sudo bash auto_deploy.sh [nombre].tar

🕐 Después de unos minutos, el script te proporcionará la IP de la máquina lista para atacar.


🎯 Resolución

🔍 Reconocimiento

Comenzamos realizando un escaneo con Nmap para identificar los puertos abiertos y los servicios disponibles en el objetivo

nmap -sVC -p- -n --min-rate 5000 172.17.0.2

El escaneo revela que los servicios SSH en el puerto 5000, así como HTTP en los puertos 80 y 3000 (donde este último parece corresponder a una instancia de Node.js), están activos
Pasted image 20241124145148.png
Accedemos al sitio web y observamos que se trata de una página de Apache genérica. Esto nos lleva a investigar si existen otros recursos disponibles en el servidor.
Pasted image 20241124145216.png
Como segundo paso, realizamos un escaneo de los posibles directorios de la página web utilizando el siguiente comando:

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

El análisis con Gobuster revela las siguientes rutas activas:


🕵️ Análisis de vulnerabilidades

En la ruta http://172.17.0.2/backend/server.js, se encuentra expuesta una contraseña: lapassworddebackupmaschingonadetodas.

Además, este servidor implementa un endpoint en la ruta /recurso/ que acepta solicitudes POST. Para interactuar correctamente con este endpoint, es necesario enviar un JSON con un campo "token" y el valor 'tokentraviesito'.

Si se envía el token adecuado, el servidor responde con un mensaje que incluye una contraseña, que en este caso es: lapassworddebackupmaschingonadetodas.
Pasted image 20241124145817.png
Pasted image 20241124145824.png
Para comprobar si la contraseña es correcta, podemos probar el endpoint utilizando curl. Si enviamos una solicitud POST con el token adecuado, el servidor nos devolverá la contraseña esperada. En caso de enviar un token incorrecto, la respuesta será diferente, probablemente indicando un error o un mensaje distinto.

El comando utilizado es el siguiente:

curl -X POST http://172.17.0.2:3000/recurso/ -H "Content-Type: application/json" -d '{"token": "tokentraviesito"}'



Al enviar esta solicitud con el token correcto (tokentraviesito), el servidor responde con la contraseña:

lapassworddebackupmaschingonadetodas


🎯 Explotación

Ahora que tenemos la contraseña, solo falta descubrir el usuario. Para ello, realizaremos un ataque de fuerza bruta con Hydra utilizando el siguiente comando:

hydra ssh://172.17.0.2:5000 -L /usr/share/wordlists/rockyou.txt -p lapassworddebackupmaschingonadetodas -t 64 

ssh lovely@172.17.0.2

📈 Escalada de privilegios

Ejecutamos el comando sudo -l para verificar qué podemos ejecutar como administrador sin necesidad de proporcionar una contraseña

sudo -l

Pasted image 20241124154120.png
Identificamos que tenemos permisos para ejecutar el comando nano (que permite editar archivos de texto) como el usuario pingu, lo cual podría ser aprovechado para escalar privilegios. Al consultar la página de GTFOBinsencontramos que con el siguiente comando podemos obtener privilegios de administrador:

sudo nano
^R^X
reset; sh 1>&0 2>&0
¡Ya somos root!

Pasted image 20241124154702.png