Voyage
Executive summary — Voyage is a Linux machine solved by chaining flaws: a Joomla! 4.2.7 vulnerable to CVE-2023-23752 leaks database credentials that grant SSH access to a Docker container; from there we pivot to an internal service (the Secret Finance Panel) that insecurely deserializes pickle session cookies, yielding remote code execution and the user flag; finally, the container keeps the CAP_SYS_MODULE capability, which lets us load a malicious kernel module and escape to the host as root. A full Web → Container → Deserialization → Docker escape → Root path.
| Platform | TryHackMe |
| Operating system | Linux |
| Difficulty | Medium |
| Room | Voyage |
| Target IP | 10.10.58.82 |
Attack map
[80/HTTP] Joomla! 4.2.7
│ CVE-2023-23752 (config leak) → credentials
▼
[SSH:2222] root inside container f5eb774507f2
│ internal net 192.168.100.0/24 → SSH -L port forward
▼
[5000/HTTP] Secret Finance Panel (pickle session cookie)
│ malicious pickle (__reduce__) → reverse shell → USER FLAG
▼
[CAP_SYS_MODULE] container can load kernel modules
│ shell.ko → call_usermodehelper() on the host
▼
[ROOT@host] reverse shell from the host → root.txt1. Initial reconnaissance
We start by mapping the attack surface with a full port scan, version detection and default scripts:
nmap -T4 -n -sC -sV -Pn -p- 10.10.58.82Why these flags:
-p-→ scans all 65535 TCP ports, not just the usual top 1000.-sC -sV→ default NSE scripts + per-service version detection.-Pn -n→ skip host-discovery ping and DNS resolution (faster).
Relevant result: two SSH services (ports 22 and 2222) and a Joomla! site on port 80. A second SSH on a non-standard port usually hints at a container or secondary service.
Resumen ejecutivo — Voyage es una máquina Linux que se resuelve encadenando fallos: un Joomla! 4.2.7 vulnerable a CVE-2023-23752 filtra credenciales de la base de datos que dan acceso SSH a un contenedor Docker; desde ahí se pivota a un servicio interno (Secret Finance Panel) que deserializa cookies con pickle de forma insegura, lo que otorga ejecución remota y la user flag; finalmente, el contenedor conserva la capability CAP_SYS_MODULE, que permite cargar un módulo de kernel malicioso y escapar al host como root. Un recorrido Web → Contenedor → Deserialización → Escape de Docker → Root.
| Plataforma | TryHackMe |
| Sistema operativo | Linux |
| Dificultad | Medium |
| Room | Voyage |
| IP objetivo | 10.10.58.82 |
Mapa del ataque
[80/HTTP] Joomla! 4.2.7
│ CVE-2023-23752 (fuga de config) → credenciales
▼
[SSH:2222] root dentro del contenedor f5eb774507f2
│ red interna 192.168.100.0/24 → port forwarding SSH -L
▼
[5000/HTTP] Secret Finance Panel (cookie de sesión pickle)
│ pickle malicioso (__reduce__) → reverse shell → USER FLAG
▼
[CAP_SYS_MODULE] el contenedor puede cargar módulos de kernel
│ shell.ko → call_usermodehelper() en el host
▼
[ROOT@host] reverse shell desde el host → root.txt1. Reconocimiento inicial
Empezamos mapeando la superficie de ataque con un escaneo completo de puertos, detección de versiones y scripts por defecto:
nmap -T4 -n -sC -sV -Pn -p- 10.10.58.82Por qué estos flags:
-p-→ escanea los 65535 puertos TCP, no solo los 1000 habituales.-sC -sV→ scripts NSE por defecto + detección de versión de cada servicio.-Pn -n→ omite el ping de descubrimiento y la resolución DNS (más rápido).
Resultado relevante: dos servicios SSH (puertos 22 y 2222) y un Joomla! en el puerto 80. El segundo SSH en un puerto no estándar suele delatar un contenedor o servicio secundario.
This content is Root Access only. Everything else on the site — the free tier, the whole public library — stays open.
See Root Access plansNo account? Create one free then upgrade from your console.
Este contenido es solo para Root Access. Todo lo demás del sitio — el nivel gratuito, toda la biblioteca pública — sigue abierto.
Ver planes de Root Access¿Sin cuenta? Crea una gratis y luego mejora desde tu consola.