Pntopntobarra

🚀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

🕵️ Análisis de vulnerabilidades

Después de realizar un fuzzing inicial e inspeccionar el código fuente de la página, no había encontrado nada relevante. Sin embargo, algo se me escapaba. Al observar más detenidamente el mensaje de la LeFvIrus", noté que hacía referencia a LFI (Local File Inclusion). Esto era una pista directa sobre la presencia de esta vulnerabilidad en la aplicación.

Explorando la página, hice clic en el enlace "Ejemplos de computadoras infectadas", que apuntaba a:
http://172.17.0.2/ejemplos.php?images=./ejemplo1.png.

Al cargar la página, noté que el parámetro images era vulnerable, ya que aceptaba rutas relativas para cargar archivos. Esto confirmó la presencia de una vulnerabilidad LFI.

Para explotarla, utilicé el siguiente comando de fuzzing para probar diferentes entradas y buscar archivos sensibles como /etc/passwd:

wfuzz -c --hc=404 --hw=33 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt "http://172.17.0.2/ejemplos.php?FUZZ=/etc/passwd"



🎯 Explotación

Tras confirmar la vulnerabilidad LFI, ingresamos la siguiente URL en el navegador:
http://172.17.0.2/ejemplos.php?images=/etc/passwd

Al cargar la página, observamos el contenido del archivo /etc/passwd, que lista los usuarios del sistema. Entre ellos, encontramos un usuario llamado nico, lo que llamó nuestra atención.
Pasted image 20241203160930.png
Pasted image 20241203160949.png
Sabíamos que para conectarnos como el usuario nico era necesaria una clave privada. Siguiendo la lógica, nos dirigimos al directorio de claves SSH del usuario:
http://172.17.0.2/ejemplos.php?images=/home/nico/.ssh/id_rsa

Al acceder a esta URL, obtuvimos el contenido de la clave privada id_rsa del usuario nico. Copiamos la clave y la guardamos en un archivo local para utilizarla más adelante en nuestra conexión SSH.
Pasted image 20241203161509.png
Después de obtener la clave privada, intentamos conectarnos al sistema como el usuario nico utilizando el siguiente comando:

ssh nico@172.17.0.2 -i id_rsa

Ahora ya que tenemos la clave privada podremos conectarnos
Pasted image 20241206190244.png


📈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 hay un servicio llamado ENV que podemos ejecutar como administrador.
Pasted image 20241206190333.png
l consultar la página GTFOBins, encontramos que usando el siguiente comando podemos obtener privilegios de administrador:
Pasted image 20241206191012.png

¡Ya somos root!

Pasted image 20241206191114.png

¡Ya somos root!

Pasted image 20241128120424.png