AguaDeMayo
Introducción
Sección titulada «Introducción»Este documento presenta la resolución completa de la máquina AguaDeMayo, diseñada por The Hackers Labs para la plataforma DockerLabs y clasificada como fácil.
El objetivo es ofrecer un análisis claro, ordenado y técnicamente fundamentado, que incluya:
- Identificación de vectores de entrada.
- Explotación basada en credenciales expuestas y técnicas de enumeración.
- Recuperación de información oculta por medio de esteganografía y análisis de contenido.
- Escalada de privilegios mediante abuso de binarios con
sudo.
La metodología empleada se articula en tres fases principales:
- Reconocimiento: detección de puertos y análisis del contenido web.
- Explotación: obtención de credenciales y acceso inicial mediante SSH.
- Escalada de privilegios: interacción entre usuarios hasta la obtención de root.
Todas las pruebas se realizaron en el entorno aislado proporcionado por DockerLabs.
Información General
Sección titulada «Información General»| Atributo | Valor |
|---|---|
| Nombre | AguaDeMayo |
| Autor | The Hackers Labs |
| Dificultad | Fácil |
| Fecha | 14/05/2024 |
| Plataforma | DockerLabs |
Paso 0 — Preparación y despliegue
Sección titulada «Paso 0 — Preparación y despliegue»Descomprimir la máquina:
unzip AguaDeMayo.zipArrancar el contenedor:
sudo bash auto_deploy.sh AguaDeMayo.tarEl script de despliegue devuelve la IP interna que utilizaremos durante el análisis:

Paso 1 — Reconocimiento
Sección titulada «Paso 1 — Reconocimiento»1.1 Organización del entorno de trabajo
Sección titulada «1.1 Organización del entorno de trabajo»Mantener un árbol de trabajo ordenado facilita documentar y reproducir cada fase:
mkdir -p AguaDeMayo/{content,exploits,nmap,gobuster,scripts}cd AguaDeMayo1.2 Escaneo de puertos
Sección titulada «1.2 Escaneo de puertos»Se realiza un escaneo completo de puertos TCP abiertos para identificar servicios expuestos:
nmap -p- --open -sS --min-rate 5000 -vvv -n 172.18.0.2 -oG allPortsextractPorts allPortsPuertos detectados:
- 22/tcp — SSH
- 80/tcp — HTTP

La combinación de SSH y un servidor web sugiere que la aplicación web podría contener pistas (credenciales, archivos ocultos o recursos descargables) que permitan acceso al servicio SSH.
1.3 Enumeración web (puerto 80)
Sección titulada «1.3 Enumeración web (puerto 80)»Se empleó un escaneo de directorios con ffuf para localizar recursos y rutas interesantes:
ffuf -u "http://172.17.0.2/FUZZ" \ -w /usr/share/seclists/Discovery/Web-Content/directory-list-lowercase-2.3-medium.txt \ -t 200 -e js,php,txt,html -c -fs 0Resultados relevantes:
- Página principal (
index).
- Directorio
/Images.
Al inspeccionar el contenido de la página principal se encontró un bloque de código que, a primera vista, no era legible:
++++++++++[>++++++++++>++++++++++>++++++++++>++++++++++>++++++++++>++++++++++>++++++++++++>++++++++++>+++++++++++>++++++++++++>++++++++++>++++++++++++>++++++++++>+++++++++++>+++++++++++>+>+<<<<<<<<<<<<<<<<<-]>--.>+.>--.>+.>---.>+++.>---.>---.>+++.>---.>+..>-----..>---.>.>+.>+++.>.Ese fragmento coincide con código en el lenguaje Brainfuck. Se procedió a decodificarlo (con una herramienta de traducción a texto) y se obtuvo una pista significativa para el siguiente paso.
(La imagen con la traducción se conserva en el repositorio de evidencia.)

Paralelamente, se descargó y analizó la imagen agua_ssh.jpg ubicada en /Images. Para buscar información oculta se aplicaron técnicas habituales de esteganografía y análisis de metadatos:
exiftool agua_ssh.jpg— para inspeccionar metadatos.steghidey otras herramientas de esteganografía — intento de extracción con posibles contraseñas derivadas del contexto.
No se encontró información utilizable directamente en los metadatos ni mediante steghide con contraseñas comunes.
Paso 2 — Explotación (acceso inicial)
Sección titulada «Paso 2 — Explotación (acceso inicial)»La combinación de pistas (nombre de la imagen agua_ssh.jpg y la salida de la decodificación Brainfuck) indicaba la posible existencia de credenciales relacionadas con el servicio SSH.
Con los datos obtenidos, se inició sesión SSH desde la máquina atacante:
ssh agua@172.18.0.2(La captura de pantalla muestra el acceso correcto al sistema con el usuario Agua.)

Comentario técnico: antes de intentar contraseñas, es buena práctica correlacionar cualquier pista textual encontrada en la web (incluido el resultado del Brainfuck) con nombres de usuario, rutas y nombres de archivos en la aplicación web. En este caso, las pistas permitieron identificar un par usuario/contraseña válido para SSH.
Paso 3 — Escalada de privilegios
Sección titulada «Paso 3 — Escalada de privilegios»Una vez dentro como el usuario Agua, el siguiente objetivo es evaluar opciones de escalada de privilegios. Empezamos por listar los privilegios sudo otorgados al usuario:
sudo -lLa salida mostró que Agua puede ejecutar /usr/bin/bettercap como root sin contraseña:

3.1 Abuso de mejorcap (bettercap) para elevar privilegios
Sección titulada «3.1 Abuso de mejorcap (bettercap) para elevar privilegios»Razonamiento: cualquier binario ejecutable con sudo sin contraseña y que acepte comandos o cargue módulos dinámicos puede usarse como vector para ejecutar código arbitrario como root. En este caso bettercap es una utilidad que, al ejecutarse con privilegios, permite interacción con el sistema y la ejecución de subcomandos; por tanto, puede explotarse para escalar privilegios.
Ejecución (como Agua):
sudo /usr/bin/bettercapUna vez dentro del contexto con privilegios, se aprovechó la capacidad de ejecutar comandos para establecer el bit SUID sobre /bin/bash:
chmod +s /bin/bashCon el bit SUID establecido en /bin/bash, fue posible lanzar una shell privilegiada preservando los privilegios de root:
/bin/bash -pResultado: se obtuvo una shell con UID 0 (root).


Nota de seguridad: el paso chmod +s /bin/bash demuestra claramente un fallo de control de acceso — permitir que un usuario ejecute una utilidad poderosa como bettercap con sudo sin restricciones es una mala práctica. Exponer utilidades administrativas sin restringir subcomandos o sin dejar un sudoers controlado facilita la escalada de privilegios.
Fallos de Seguridad Identificados
Sección titulada «Fallos de Seguridad Identificados»- Exposición de utilidades privilegiadas en
sudoers: permitir la ejecución debettercapcomo root sin controles ni restricciones posibilita la ejecución de comandos arbitrarios con privilegios elevados. - Pistas sensibles en contenido web: información útil para el acceso (codificada en Brainfuck y nombres de archivos relacionados con SSH) estaba disponible públicamente en la web. Esto facilita el acceso no autorizado si no se controla el contenido o no se protege con mecanismos de autenticación.
- Ausencia de análisis y filtrado de información en la aplicación web: archivos y nombres que hacen referencia a credenciales no deberían publicarse en entornos accesibles sin autenticación.
Recomendaciones
Sección titulada «Recomendaciones»-
Revisar y endurecer sudoers
- Evitar conceder permisos
NOPASSWDpara utilidades que permiten ejecución de subcomandos o carga de módulos. - Si es necesario otorgar privilegios, especificar explícitamente los subcomandos permitidos y validar la invocación mediante
Cmnd_Alias.
- Evitar conceder permisos
-
Minimizar la información sensible publicada
- No exponer nombres de archivos, rutas o cadenas que puedan relacionarse con credenciales o con servicios críticos.
- Revisar el contenido público antes del despliegue y remover pistas/archivos innecesarios.
-
Hardenización de servicios SSH
- Forzar autenticación por claves públicas cuando sea posible y deshabilitar la autenticación por contraseña para cuentas que no la necesiten.
- Limitar el acceso SSH mediante listas de control de acceso (firewall) y/o autenticación adicional.
-
Control de artefactos multimedia
- Evitar subir imágenes con nombres que contengan referencias sensibles (
*_ssh,*_pass, etc.). - Si se suben recursos multimedia, procesarlos para eliminar metadatos y comprobar que no contienen contenido oculto.
- Evitar subir imágenes con nombres que contengan referencias sensibles (
-
Auditoría y monitorización
- Implementar registros (logging) y alertas ante el uso de privilegios
sudoinusuales. - Revisar periódicamente el
sudoersy las cuentas con privilegios no estándar.
- Implementar registros (logging) y alertas ante el uso de privilegios