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:
auto_deploy.sh(script de despliegue).[nombre].tar(imagen de la máquina virtual).
📌 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
-sVC: Escaneo de versiones de servicios y ejecución de scripts.-p-: Escanea todos los puertos (1-65535).-n: Desactiva la resolución DNS.--min-rate 5000: Envía paquetes a una tasa mínima de 5000 por segundo para acelerar el escaneo.
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

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.

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
-u http://172.17.0.2/: URL del servidor web objetivo donde se realizará el escaneo.-w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt: Ruta al archivo de palabras (wordlist) que contiene posibles nombres de directorios y archivos a buscar.
El análisis con Gobuster revela las siguientes rutas activas:
http://172.17.0.2/index.phphttp://172.17.0.2/scripts.jshttp://172.17.0.2/styles.csshttp://172.17.0.2/http://172.17.0.2/upload.phphttp://172.17.0.2/uploadshttp://172.17.0.2/machine.php
🕵️ 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.


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://172.17.0.2:5000: Apunta al servidor SSH en la IP y puerto especificado.-p lapassworddebackupmaschingonadetodas: Prueba la contraseña fijalapassworddebackupmaschingonadetodascon cada usuario.-t 64: Utiliza 64 hilos para realizar el ataque de forma más rápida.

Descubrimos que el usuario eslovely.
Nos conectamos a través de SSH utilizando el siguiente comando:
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

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
