BuscaLove

🚀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.18.0.2

El escaneo revela que los servicios SSH y HTTP 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.
Pasted image 20241120193027.png
Como siguiente paso, realizamos un escaneo de posibles directorios en la página web utilizando el siguiente comando:

gobuster dir -u "http://172.18.0.2/" -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt


🕵️ Análisis de vulnerabilidades

La apariencia del sitio web no muestra cambios significativos. Por lo tanto, en este punto, decidimos comprobar si existe una vulnerabilidad de Local File Inclusion (LFI). Para ello, utilizamos la herramienta wfuzz con el siguiente comando:

wfuzz -w /usr/share/wordlists/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -u http://172.18.0.2/wordpress/index.php?FUZZ=../../../../../etc/passwd --hc 404 --hl 40

El uso de ?FUZZ permite identificar qué parámetro dentro de la URL es vulnerable. Si el ataque es exitoso, el servidor devolverá contenido del archivo objetivo (como /etc/passwd), lo que confirma que el parámetro probado es explotable para LFI.

Pasted image 20241120191637.png
Confirmamos que la página es vulnerable a un Local File Inclusion (LFI) al pasarle la palabra love como parámetro a index.php. Esto se dedujo gracias a una pista obtenida previamente en un comentario en el código de la página.


🎯 Explotación

Para verificarlo, accedemos a la siguiente URL para ver el archivo /etc/passwd:

http://172.18.0.2/wordpress/index.php?love=../../../../../etc/passwd
Pasted image 20241120192100.png
Observamos que, además del usuario root, existen dos usuarios adicionales, rosa y pedro. Esto se deduce porque ambos tienen directorios asignados en /home.
Dado que ya identificamos dos usuarios, como suele ser común en los retos de CTF, procederemos a realizar un ataque de fuerza bruta utilizando la herramienta Hydra.

hydra -l rosa -P /usr/share/wordlists/rockyou.txt ssh://172.18.0.2 -t 4 

Y he encontramos la contraseña de rosa que es lovebug
Pasted image 20241120192717.png
Entramos por ssh con el comando

ssh rosa@172.18.0.2

📈 Escalada de privilegios

Una vez dentro del sistema, ejecutamos el comando sudo -l para listar los privilegios de sudo del usuario actual. Esto nos permite identificar qué comandos se pueden ejecutar como administrador sin necesidad de proporcionar una contraseña, lo que podría abrir la puerta a una

sudo -l

Observamos que tenemos la capacidad de utilizar los comandos ls y cat para listar directorios y acceder a archivos a los que normalmente no tendríamos acceso.
Pasted image 20241120193315.png
Como primer paso, intentamos listar el contenido del directorio /home/pedro utilizando el siguiente comando:
Pasted image 20241120193346.png
El directorio del usuario pedro no contiene nada de interés. Ahora, intentamos explorar el directorio del usuario root.

sudo /usr/bin/ls -la /root

Encontramos un archivo algo inusual llamado secret.txt. Dado que ahora podemos ver el contenido de archivos a los que normalmente no tendríamos acceso, procedemos a visualizar el contenido de secret.txt utilizando el siguiente comando:
Pasted image 20241120193834.png
Pasted image 20241120193853.png
Procedemos a decodificarlo.
Pasted image 20241120193943.png
Parece que hemos obtenido una contraseña en texto plano. A continuación, nos autenticamos como el usuario pedro de la siguiente manera:

su pedro

Continuamos con el mismo procedimiento, ejecutando sudo -l como el usuario pedro, y obtenemos el siguiente resultado:
Pasted image 20241120194504.png
Consultamos nuevamente la página de GTFOBins para investigar cómo escalar privilegios utilizando el comando env. env es una herramienta que permite establecer o imprimir las variables de entorno del sistema.

Para escalar privilegios, utilizamos el siguiente comando:

sudo env /bin/sh 

¡Ya somos root!

Pasted image 20241120194743.png