DockerLabs Muy Fácil Ubuntu 24.04

Hedgehog

DockerLabs · Web hint → Hydra invertido → tails:3117548331 → sudo tails→sonic→root

// ruta Nmap Web "tails" tac rockyou Hydra SSH tails sudo sonic sudo root ROOT ✓
01

// Planificación & objetivo

paso 01
Objetivo del ejercicio
Hedgehog es una máquina de dificultad Muy Fácil en DockerLabs, basada en Ubuntu 24.04 LTS. Expone SSH en el puerto 22 y un servidor web Apache en el 80.

Esta máquina introduce una técnica de pensamiento lateral en fuerza bruta: cuando el ataque convencional con rockyou.txt no da resultado en un tiempo razonable, invertir el diccionario con tac puede revelar contraseñas que están al final del wordlist. La escalada introduce una cadena de pivoting de usuario: tails → sonic → root, todos mediante permisos sudo encadenados.
paso 02
Resumen de fases
FaseTécnica / HerramientaResultado
ReconocimientoNmap -sV -sCPuertos 22 y 80, Ubuntu 24.04
Enum. Webcurl / navegadorPágina muestra solo "tails" → usuario
Preparacióntac + sed (rockyou invertido)rockyou_reversed.txt sin espacios
Fuerza brutaHydra + rockyou_reversed.txttails : 3117548331
Acceso inicialSSHShell como tails
PrivEsc paso 1sudo -u sonic /bin/bashShell como sonic
PrivEsc paso 2sudo -u root /bin/bashShell root ✓
02

// Reconocimiento & despliegue

paso 03
Despliegue de la máquina
Desplegamos con auto_deploy.sh. IP asignada: 172.29.0.2.
captura — despliegue● ● ●
Despliegue máquina Hedgehog
03

// Escaneo & análisis

paso 04
Escaneo de puertos — Nmap
Lanzamos Nmap con detección de versiones y scripts NSE. Resultado: SSH en el 22 (OpenSSH 9.6p1 Ubuntu) y HTTP en el 80 (Apache 2.4.58 Ubuntu). El sistema operativo es Ubuntu 24.04 LTS.
Nmap
# nmap -sV -sC 172.29.0.2 PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 9.6p1 Ubuntu 80/tcp open http Apache httpd 2.4.58 (Ubuntu) |_http-title: Site doesn't have a title (text/html)
captura — nmap output● ● ●
Nmap mostrando puertos 22 y 80 en Hedgehog
paso 05
Inspección web — pista del usuario
Accedemos al puerto 80 en el navegador. La página muestra una única palabra: tails. Sin más contenido, sin links, sin formularios. Esta palabra es la pista directa del nombre de usuario del sistema — el creador de la máquina lo expone explícitamente en la web para guiar el vector de ataque hacia fuerza bruta SSH con ese usuario.
captura — web mostrando "tails"● ● ●
Web mostrando solo la palabra tails
// usuario identificado
La web expone directamente el nombre de usuario: tails. Vector: fuerza bruta SSH contra este usuario.
04

// Explotación & acceso inicial

paso 06
Primer intento — Hydra con rockyou normal
Lanzamos Hydra con rockyou.txt en orden estándar. Tras más de 15 minutos sin resultado, detenemos el ataque. DockerLabs tiene como norma que la contraseña debe estar entre las primeras 5000 líneas de rockyou — este comportamiento inusual sugiere que la contraseña está al final del wordlist, no al principio.
Hydra normal
# hydra -l tails -P /usr/share/wordlists/rockyou.txt ssh://172.29.0.2 -t 4 # +15 minutos sin resultado → contraseña al final del diccionario # Solución: invertir rockyou.txt con tac
captura — hydra normal sin resultado tras largo tiempo● ● ●
Hydra con rockyou normal sin encontrar contraseña
paso 07
Preparación del diccionario invertido — tac + sed
La solución es invertir el orden de rockyou.txt para que las contraseñas del final pasen al principio. Usamos dos comandos encadenados:

tac: invierte el orden de líneas de un archivo (lo opuesto a cat)
sed 's/ //g': elimina los espacios en blanco que pueden generar líneas vacías o problemas de parsing en Hydra

El resultado es rockyou_reversed.txt — el mismo diccionario pero de abajo hacia arriba.
Invertir diccionario
# Paso 1: invertir el orden de líneas # tac /usr/share/wordlists/rockyou.txt > rockyou_reversed.txt # Paso 2: eliminar espacios que pueden romper Hydra # cat rockyou_reversed.txt | sed 's/ //g' rockyou_reversed.txt > temp.txt && mv temp.txt rockyou_reversed.txt
captura — tac invirtiendo rockyou● ● ●
tac invirtiendo rockyou.txt a rockyou_reversed.txt
captura — sed eliminando espacios● ● ●
sed eliminando espacios de rockyou_reversed.txt
paso 08
Hydra con diccionario invertido — Credenciales obtenidas
Relanzamos Hydra con el diccionario invertido y aumentamos los hilos a 64 para acelerar el proceso. En menos de 2 minutos Hydra encuentra la contraseña: 3117548331 — un número que efectivamente estaba en la parte final de rockyou.txt, lo que explica por qué el ataque normal no la encontraba en tiempo razonable.
Hydra invertido
# hydra -l tails -P rockyou_reversed.txt ssh://172.29.0.2 -t 64 [22][ssh] host: 172.29.0.2 login: tails password: 3117548331 1 of 1 target successfully completed, 1 valid password found
captura — hydra con -t 4 y reversed (inicio)● ● ●
Hydra con rockyou invertido lanzado
captura — hydra encontrando tails:3117548331● ● ●
Hydra encontrando credenciales tails:3117548331
Usuariotails
Contraseña3117548331
ServicioSSH / 22
paso 09
Conexión SSH — Acceso como tails
Nos conectamos por SSH con las credenciales obtenidas. El servidor es Ubuntu 24.04 LTS. Obtenemos shell como tails.
SSH
# ssh tails@172.29.0.2 tails@172.29.0.2's password: 3117548331 tails@462530a48527:~$ ← acceso inicial obtenido
captura — shell SSH como tails● ● ●
Shell SSH obtenida como tails en Ubuntu 24.04
// acceso inicial conseguido
Shell como tails. Iniciamos enumeración de escalada.
05

// Post-Explotación & privesc

paso 10
sudo -l — Cadena de pivoting tails → sonic → root
Ejecutamos sudo -l. El resultado revela que tails puede ejecutar cualquier comando como sonic sin contraseña (NOPASSWD: ALL). Pivotamos a sonic con sudo -u sonic /bin/bash.

Desde sonic, ejecutamos de nuevo sudo -l (implícito en la captura) — sonic puede ejecutar cualquier comando como root. Un segundo sudo -u root /bin/bash nos da la shell final.
PrivEsc encadenado
# Como tails — verificamos permisos sudo tails@host:~$ sudo -l (sonic) NOPASSWD: ALL # Pivotamos a sonic tails@host:~$ sudo -u sonic /bin/bash sonic@host:/home/tails$ # Desde sonic — escalamos a root sonic@host:~$ sudo -u root /bin/bash root@host:/home/tails# whoami root
captura — sudo -l mostrando sonic NOPASSWD● ● ●
sudo -l mostrando permisos tails sobre sonic
captura — pivot tails → sonic● ● ●
sudo -u sonic /bin/bash obteniendo shell sonic
// root obtenido ✓
Cadena completada: tails → sonic → root via permisos sudo NOPASSWD encadenados.
06

// Reporte & conclusiones

vulnerabilidades
Vectores explotados
VulnerabilidadImpactoMitigación
Information disclosure en web (usuario expuesto)Usuario SSH identificado sin autenticaciónNo exponer usuarios del sistema en webs públicas
Contraseña débil SSH (en rockyou.txt)Acceso inicial via fuerza brutaContraseñas largas y aleatorias. Usar solo autenticación por clave pública
sudo NOPASSWD tails → sonic (ALL)Movimiento lateral a sonic sin credencialesLimitar comandos específicos en sudoers, nunca usar ALL
sudo NOPASSWD sonic → root (ALL)Escalada completa a rootAuditar /etc/sudoers, eliminar permisos innecesarios
lecciones
Lecciones aprendidas
Hedgehog enseña que el pensamiento lateral es clave en pentesting. Cuando una técnica no da resultado en tiempo razonable, hay que cambiar el enfoque — en este caso invertir el diccionario fue la solución. La lección metodológica: si rockyou.txt en orden normal no encuentra la contraseña rápido, vale la pena probar el orden inverso, una wordlist diferente, o mutaciones de contraseña antes de rendirse.

La escalada refuerza que sudo ALL sin restricciones es siempre un riesgo crítico, especialmente en cadena. Cada usuario del sistema con NOPASSWD: ALL es un peldaño hacia root.
07

// Glosario

tac — inversor de líneas
Comando Unix que imprime un archivo en orden inverso — última línea primero. Es literalmente cat al revés, tanto en nombre como en función. tac archivo.txt muestra las líneas de abajo hacia arriba. En pentesting es útil para invertir wordlists cuando se sospecha que la contraseña objetivo está al final del diccionario, convirtiéndola en la primera candidata del ataque.
sed — Stream Editor
Herramienta de procesamiento de texto en Unix que aplica transformaciones a streams de datos. El patrón s/buscar/reemplazar/flags es la sintaxis más común. En este writeup se usó sed 's/ //g' para eliminar todos los espacios del diccionario invertido — el flag g indica reemplazo global (todas las ocurrencias de la línea, no solo la primera).
sudo -u usuario comando
La flag -u de sudo permite ejecutar un comando como un usuario específico distinto de root. sudo -u sonic /bin/bash abre una shell con la identidad de sonic. Si el usuario actual tiene permiso sudo sobre ese usuario (definido en /etc/sudoers), la ejecución se realiza sin contraseña cuando está marcado como NOPASSWD. Es un vector de escalada cuando los permisos están mal configurados en cadena.
Pivoting de usuarios (sudo chaining)
Técnica de escalada donde se encadenan múltiples saltos de usuario mediante permisos sudo. En lugar de ir directamente a root, el atacante sigue una cadena: usuario_inicial → usuario_intermedio → root. Cada salto requiere que el usuario actual tenga permiso sudo sobre el siguiente. Es especialmente peligroso cuando se usa ALL en lugar de restringir comandos específicos en /etc/sudoers.