
Guía completa de pruebas de penetración y detalles de explotación para la máquina Enigma de Hack The Box, que abarca la enumeración local, la inyección de comandos en OliveTin CVE-2026-27626 y la escalada de privilegios a root
Enigma es una máquina Linux de nivel intermedio alojada en Hack The Box. La metodología de evaluación sigue un ciclo de vida estándar de pruebas de penetración: reconocimiento, enumeración, acceso inicial mediante la recolección de credenciales, enumeración local y escalada de privilegios a root a través de una vulnerabilidad en la capa de servicio (CVE-2026-27626 en OliveTin). Este write-up detalla el análisis vectorial paso a paso, los conjuntos de herramientas, las estrategias de ejecución de código y las directrices de remediación necesarias para comprometer completamente el objetivo y asegurar el control administrativo.
Nmap)La evaluación comenzó con un escaneo TCP SYN para identificar los puertos abiertos y los servicios en ejecución en el host objetivo.
nmap -p- --min-rate=1000 -T4 <TARGET_IP>
Hallazgos del escaneo:
Utilizando herramientas de descubrimiento de directorios (gobuster / ffuf), escaneamos el servicio web en el puerto 80 para descubrir endpoints ocultos, portales administrativos o artefactos de configuración.
Mediante un análisis detallado de los archivos de la aplicación web y recursos compartidos auxiliares de NFS, descubrimos credenciales de desarrollador válidas.
harisbestfriendsCon las credenciales descubiertas, nos autenticamos contra el servicio SSH para establecer un shell interactivo de bajo privilegio en el sistema objetivo:
ssh haris@<TARGET_IP>
haris@enigma:~$user.txt).Tras establecer un shell a nivel de usuario, revisamos los puertos locales a la escucha y los procesos activos para identificar posibles superficies de ataque que no están expuestas externamente:
ss -tulpn
Hallazgo clave:
127.0.0.1:1337 con privilegios de root.Una inspección más detallada del archivo de configuración de la aplicación OliveTin (/opt/OliveTin/config.yaml) reveló que las acciones de copia de seguridad de la base de datos se ejecutaban mediante un wrapper de shell. En concreto, la configuración utilizaba el parámetro db_pass dentro de una cadena de comando mysqldump:
shell: "mysqldump -u {{ db_user }} -p'{{ db_pass }}' {{ db_name }} > /opt/backups/backup.sql"
arguments:
- name: db_pass
type: password
Esta configuración introduce una vulnerabilidad crítica de inyección de comandos (CVE-2026-27626) porque el parámetro db_pass está encerrado entre comillas simples dentro de un contexto de shell, pero no sanea adecuadamente la entrada que contiene operadores de control de shell (por ejemplo, puntos y coma ;, tuberías | o acentos graves).
Dado que el servicio vulnerable OliveTin está vinculado estrictamente a 127.0.0.1:1337, las solicitudes externas desde la máquina atacante Kali se bloquean con un error Connection refused. Para interactuar con el servicio, establecimos un túnel de reenvío de puertos local mediante SSH:
ssh -L 1337:127.0.0.1:1337 haris@<TARGET_IP>
Utilizando un script de explotación en Python dirigido al endpoint de la API de OliveTin (/api/olivetin.api.v1.OliveTinApiService/StartAction), inyectamos comandos arbitrarios del sistema en el vector de parámetro vulnerable.
Debido a la estricta sintaxis del shell y a las dependencias de directorios en el wrapper del comando mysqldump original, la creación directa de archivos podía en ocasiones dar lugar a errores de estado de salida (como directorios de destino inexistentes o restricciones de permisos). Mediante la creación de cadenas de ejecución precisas o la consulta directa del sistema de archivos a través de la vulnerabilidad de la API, sorteamos los obstáculos de ejecución.
Ejecutando el payload del comando a través de la interfaz de explotación:
python3 CVE-2026.27626.py -u http://127.0.0.1 -x "cat /root/root.txt"
Salida de la ejecución:
[+] Execution ID: 7fd15259-3996-4e03-9ebd-329034ee4e0d
======================================================================
Command Output
======================================================================
exit status 127
Usage: mysqldump [OPTIONS] database [tables]
...
ae9306f5690c4812c6f9445027d0d060
sh: 1: : Permission denied
======================================================================
La flag de root se extrajo con éxito directamente a través del flujo de salida del comando.
ae9306f5690c4812c6f9445027d0d060/root/.ssh/authorized_keys mediante el vector de inyección de comandos, lo que otorga un acceso administrativo fluido al terminal.root a menos que sea absolutamente necesario. Ejecutar los servicios bajo cuentas de servicio dedicadas con permisos mínimos.