DockerLabs Muy Fácil Debian 9

BreakMySSH

DockerLabs · Hydra SSH user enum → lovely:rockyou → Hydra root → root:estrella

// ruta Nmap Hydra user enum Hydra lovely SSH lovely Enum post-acceso Hydra root ROOT ✓
01

// Planificación & objetivo

paso 01
Objetivo del ejercicio
BreakMySSH es una máquina de dificultad Muy Fácil en DockerLabs. El propio nombre lo dice todo: el único servicio expuesto es SSH en el puerto 22 y el objetivo es comprometerlo mediante fuerza bruta.

A diferencia de máquinas anteriores donde la fuerza bruta era un paso intermedio, aquí es el vector principal desde el inicio hasta root. Esta máquina introduce un concepto importante: cuando el acceso inicial no tiene vectores de escalada convencionales (sudo, SUID explotable), la fuerza bruta directa contra el usuario root puede ser viable si el servidor no tiene protecciones como fail2ban o rate limiting.
paso 02
Resumen de fases
FaseTécnica / HerramientaResultado
ReconocimientoNmap -sV -sCPuerto 22 OpenSSH 7.7
User EnumHydra + wordlists de usuariosUsuario: lovely
Acceso inicialHydra + rockyou.txtlovely : rockyou
Post-explotaciónsudo, SUID, writable, /etc/passwdSin vectores directos — pivot a hydra root
EscaladaHydra root + rockyou.txtroot : estrella
02

// Reconocimiento & despliegue

paso 03
Despliegue y primer contacto
Desplegamos la máquina con auto_deploy.sh. IP asignada: 172.28.0.2. El nombre BreakMySSH ya orienta el vector de ataque antes de lanzar cualquier herramienta.
03

// Escaneo & análisis

paso 04
Escaneo de puertos — Nmap
Lanzamos Nmap con detección de versiones y scripts NSE. Resultado: un único puerto abierto, 22/tcp SSH con OpenSSH 7.7 en Debian. Superficie de ataque mínima — el único vector es el servicio SSH.
Nmap
# nmap -sV -sC 172.28.0.2 PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.7 (Debian) # Único puerto abierto. Vector: fuerza bruta SSH.
// hallazgo
Solo SSH en el 22. OpenSSH 7.7 — versión antigua que no tiene protecciones modernas. Vector único: fuerza bruta de usuario y contraseña.
paso 05
Enumeración de usuarios — Hydra con wordlists
Sin ninguna pista sobre usuarios válidos, intentamos enumeración mediante fuerza bruta de usuarios con una contraseña fija. Primero probamos con la lista de credenciales por defecto de SecLists — sin resultados. Luego con la wordlist de nombres comunes, que revela el usuario lovely.
Hydra — user enum
# Intento 1: credenciales por defecto → sin resultados # hydra -C /usr/share/seclists/Passwords/Default-Credentials/ssh-betterdefaultpasslist.txt ssh://172.28.0.2 -t 4 0 valid passwords found # Intento 2: wordlist de nombres con contraseña fija → usuario lovely encontrado # hydra -L /usr/share/wordlists/rockyou.txt -p rockyou ssh://172.28.0.2 -t 4 [22][ssh] host: 172.28.0.2 login: lovely password: rockyou
captura — hydra credenciales por defecto sin resultado● ● ●
Hydra con lista default sin resultados
captura — hydra encontrando lovely:rockyou● ● ●
Hydra encontrando usuario lovely con contraseña rockyou
// usuario y contraseña obtenidos
La contraseña del usuario lovely es literalmente rockyou — el nombre del wordlist más usado en CTFs. Contraseña elegida con intención humorística por el creador de la máquina.
04

// Explotación & acceso inicial

paso 06
Conexión SSH — Acceso como lovely
Nos conectamos por SSH con las credenciales obtenidas. El servidor emite el aviso habitual de OpenSSH sobre algoritmos post-cuánticos. Obtenemos shell como lovely.
SSH
# ssh lovely@172.28.0.2 lovely@172.28.0.2's password: rockyou lovely@c06584699c13:~$ ← acceso inicial obtenido
captura — shell SSH como lovely● ● ●
Shell SSH obtenida como usuario lovely
Usuariolovely
Contraseñarockyou
ServicioSSH / 22
05

// Post-Explotación & privesc

paso 07
Enumeración post-acceso — Descartando vectores convencionales
Ejecutamos la enumeración estándar de escalada de privilegios. Ninguno de los vectores convencionales da resultado:

sudo bash -lsudo no instalado
find / -perm -4000 → binarios SUID estándar, ninguno explotable vía GTFOBins
/etc/passwd → usuarios: root y lovely con bash
find / -writable → solo archivos del propio usuario y /dev, sin scripts de root
ls /usr/src/ → archivos de compilación, sin exploit de kernel obvio
uname -a → kernel 6.12.76, cat /etc/os-release → Debian 9 Stretch (EOL)

Sin vectores directos disponibles. La conclusión es clara: si el servidor SSH no tiene rate limiting ni fail2ban, podemos intentar fuerza bruta directamente contra root.
captura — sudo no instalado● ● ●
sudo command not found en lovely
captura — find SUID sin vectores explotables● ● ●
Binarios SUID estándar sin vectores explotables
captura — /etc/passwd usuarios del sistema● ● ●
/etc/passwd mostrando root y lovely
captura — home de lovely sin archivos interesantes● ● ●
ls -la home de lovely
captura — find writable sin vectores útiles● ● ●
find writable sin scripts de root explotables
captura — /usr/src archivos de compilación● ● ●
/usr/src con archivos de compilación
captura — uname y os-release Debian 9 Stretch● ● ●
uname y os-release mostrando Debian 9 Stretch
// sin vectores convencionales
sudo no instalado, SUID estándar, sin scripts writable de root. Sistema Debian 9 EOL. Pivotamos a fuerza bruta directa contra root via SSH.
paso 08
Fuerza bruta directa — Hydra contra root
El servidor SSH no tiene protección contra fuerza bruta. Lanzamos Hydra directamente contra el usuario root con rockyou.txt desde nuestro Kali. En menos de un minuto obtenemos la contraseña: estrella.
Hydra root
# hydra -l root -P /usr/share/wordlists/rockyou.txt ssh://172.28.0.2 -t 4 [22][ssh] host: 172.28.0.2 login: root password: estrella 1 of 1 target successfully completed, 1 valid password found
captura — hydra encontrando root:estrella● ● ●
Hydra encontrando credenciales root:estrella
Usuarioroot
Contraseñaestrella
ServicioSSH / 22
paso 09
Conexión SSH como root
Nos conectamos directamente como root via SSH. Verificamos con whoami.
SSH root
# ssh root@172.28.0.2 root@172.28.0.2's password: estrella root@c06584699c13:~# whoami root
captura — SSH como root● ● ●
Conexión SSH directa como root
captura — whoami root● ● ●
whoami confirmando root
// root obtenido ✓
Acceso como root via SSH directo con credenciales obtenidas por fuerza bruta.
06

// Reporte & conclusiones

vulnerabilidades
Vectores explotados
VulnerabilidadImpactoMitigación
Contraseña débil usuario lovely (rockyou)Acceso inicial al sistemaContraseñas largas y aleatorias. Deshabilitar autenticación por password, usar solo claves SSH
SSH accesible para root con contraseña débilAcceso root directo al sistemaDeshabilitar login root por SSH (PermitRootLogin no). Usar clave pública exclusivamente
Sin protección anti-fuerza bruta (fail2ban)Ataques de diccionario sin límiteInstalar fail2ban, configurar MaxAuthTries en sshd_config
Debian 9 Stretch (EOL)Sin parches de seguridadActualizar a versión soportada de Debian
lecciones
Lecciones aprendidas
BreakMySSH enseña que SSH expuesto sin protección es uno de los vectores más peligrosos en un servidor. Con rockyou.txt y Hydra, un atacante puede comprometer un servidor con contraseñas débiles en minutos. El segundo aprendizaje es metodológico: cuando los vectores convencionales (sudo, SUID, scripts writable) no dan resultado, hay que pensar fuera del sistema — en este caso volviendo al punto de entrada inicial para atacar directamente a root. La enumeración exhaustiva del sistema, aunque no encontró el vector, fue necesaria para descartar opciones y confirmar que la fuerza bruta era el camino.
07

// Glosario

fail2ban
Herramienta de seguridad que monitoriza logs del sistema y bloquea automáticamente IPs que realizan demasiados intentos fallidos de autenticación. Para SSH, detecta múltiples fallos de login y aplica reglas de iptables para bloquear la IP atacante durante un tiempo configurable. Su ausencia en esta máquina permite ataques de fuerza bruta ilimitados. Es una de las primeras herramientas a instalar en cualquier servidor con SSH expuesto.
PermitRootLogin
Directiva en /etc/ssh/sshd_config que controla si el usuario root puede autenticarse directamente via SSH. Los valores posibles son yes (permitido), no (bloqueado) y prohibit-password (solo con clave pública). La buena práctica es no o prohibit-password — los administradores deben entrar como usuario normal y luego usar su o sudo, nunca directamente como root.
Enumeración de usuarios SSH
Técnica para identificar usuarios válidos en un sistema SSH sin autenticación. Se puede realizar por fuerza bruta de usuarios con una contraseña fija, aprovechando diferencias en los tiempos de respuesta (en versiones antiguas de OpenSSH), o usando herramientas específicas como ssh-user-enum. En esta máquina se usó Hydra con una contraseña conocida para encontrar el usuario lovely mediante una wordlist de nombres.
Debian 9 Stretch (EOL)
Debian 9 "Stretch" alcanzó su End of Life en junio de 2022 — ya no recibe actualizaciones de seguridad. Sistemas EOL son objetivos prioritarios en pentesting porque acumulan vulnerabilidades sin parchear. uname -a muestra la versión del kernel y cat /etc/os-release la distribución exacta — ambos comandos esenciales en la fase de reconocimiento post-acceso para identificar posibles exploits de kernel o servicios desactualizados.
rockyou.txt
El wordlist de contraseñas más utilizado en ciberseguridad ofensiva. Contiene ~14 millones de contraseñas reales filtradas en 2009 del breach de RockYou, una empresa de aplicaciones sociales. Está ordenado por frecuencia de uso, lo que hace que las contraseñas más comunes aparezcan primero y acelere los ataques. En esta máquina, la contraseña de root (estrella) estaba dentro de las primeras posiciones del wordlist.