Cerberus
Executive summary — Cerberus models a realistic hybrid monitoring setup: a Linux virtual machine hosts Icinga Web 2 2.11.2, exposed externally only on port
8080, and that VM is joined to thecerberus.localdomain whose Windows Domain Controller hosts it and also runs a ManageEngine ADSelfService Plus identity self-service portal reachable only from the host itself. The name isn't accidental: like the three-headed guardian, the box is cleared in three chained layers. An unauthenticated path traversal (CVE-2022-24716) leaks Icinga's configuration and a plaintext password; that account enables an authenticated RCE (CVE-2022-24715) via an SSH resource holding a PHP+PEM polyglot key; inside the VM, a vulnerable SUIDfirejailbinary (CVE-2022-31214) grants local root; SSSD's offline cache stores a domain user's hash, crackable with rockyou, which is reused against the Domain Controller's WinRM for user.txt; and, with no local privilege escalation available on Windows, the only path left is ADSelfService Plus, whose SAML endpoint only listens on127.0.0.1:9251— reachable only by standing up a reverse SOCKS tunnel with chisel from the DC itself, to fire a preauthenticated RCE against it as NT AUTHORITY\SYSTEM (CVE-2022-47966).
| Platform | Hack The Box |
| Operating system | Ubuntu 22.04 (Icinga VM) domain-joined to a Windows Server (Domain Controller for cerberus.local) |
| Difficulty | Hard |
| Status | Retired |
| Target IP | 10.129.232.100 |
Attack map
[8080/HTTP] icinga.cerberus.local -- path traversal (CVE-2022-24716) -> authentication.ini
| plaintext credential: matthew : IcingaWebPassword2023
v
[Icinga Web 2] SSH resource -- PHP+PEM polyglot key (CVE-2022-24715) -> malicious module
| authenticated RCE as www-data
v
[SUID] firejail --join (CVE-2022-31214) -- namespace TOCTOU -> root@icinga (VM)
| SSSD offline cache -> matthew SHA-512 hash -> hashcat -> 147258369
v
[WinRM 5985] DC cerberus.local -- credential reuse (matthew) -> user.txt
| no local privesc -- only remaining service: ADSelfService Plus (:9251, 127.0.0.1 only)
v
[chisel] reverse SOCKS via c.exe on the DC -- tunnel to 127.0.0.1:9251
| preauth SAML RCE (CVE-2022-47966, rt:exec XSLT transform)
v
[SYSTEM] ManageEngine ADSelfService Plus -> root.txt
1. Reconnaissance
A full port scan shows a minimal surface: a single HTTP service.
nmap -p8080 -sCV -Pn -oN nmap-services.txt 10.129.232.100
PORT STATE SERVICE VERSION
8080/tcp open http Apache httpd 2.4.52 ((Ubuntu))
|_http-open-proxy: Proxy might be redirecting requests
|_http-server-header: Apache/2.4.52 (Ubuntu)
|_http-title: Did not follow redirect to http://icinga.cerberus.local:8080/icingaweb2
The redirect gives away two things at once: the vhost icinga.cerberus.local and the app's base path, /icingaweb2. That a monitoring server is the only entry point, with nothing else exposed (no SSH, no SMB, not even the DC itself visible from outside), already hints that the entire first half of the chain has to run through Icinga.
echo "10.129.232.100 icinga.cerberus.local cerberus.local" | sudo tee -a /etc/hosts
Browsing to http://icinga.cerberus.local:8080/icingaweb2 brings up the Icinga Web 2 login. Versioned static assets served on the page (CSS/JS paths) pin down the exact branch as 2.11.x without any authentication — precisely the version affected by the pair of CVEs published in March 2022 that kicks off the whole intrusion.
Resumen ejecutivo — Cerberus modela un escenario realista de monitorización híbrida: una máquina virtual Linux aloja Icinga Web 2 2.11.2, expuesta al exterior solo por el puerto
8080, y esa VM está unida al dominiocerberus.localcuyo Domain Controller Windows la hospeda y ejecuta, además, un portal de autoservicio de identidades ManageEngine ADSelfService Plus accesible únicamente desde el propio host. El nombre no es casual: como el guardián de tres cabezas, la máquina se supera en tres capas encadenadas. Un path traversal sin autenticar (CVE-2022-24716) filtra la configuración de Icinga y una contraseña en claro; esa cuenta permite un RCE autenticado (CVE-2022-24715) vía un recurso SSH con una clave poliglota PHP+PEM; dentro de la VM, un binariofirejailcon SUID vulnerable (CVE-2022-31214) da root local; la caché offline de SSSD guarda el hash de dominio de un usuario, crackeable con rockyou, que se reutiliza contra WinRM del Domain Controller para user.txt; y, sin privilegios locales que explotar en Windows, el único camino restante es ADSelfService Plus, cuyo endpoint SAML solo escucha en127.0.0.1:9251— alcanzable montando un SOCKS inverso con chisel desde el propio DC, para lanzar contra él un RCE preautenticado como NT AUTHORITY\SYSTEM (CVE-2022-47966).
| Plataforma | Hack The Box |
| Sistema operativo | Ubuntu 22.04 (VM Icinga) unida al dominio de un Windows Server (Domain Controller de cerberus.local) |
| Dificultad | Hard |
| Estado | Retired |
| IP objetivo | 10.129.232.100 |
Mapa del ataque
[8080/HTTP] icinga.cerberus.local -- path traversal (CVE-2022-24716) -> authentication.ini
| credencial en claro: matthew : IcingaWebPassword2023
v
[Icinga Web 2] recurso SSH -- clave poliglota PHP+PEM (CVE-2022-24715) -> modulo malicioso
| RCE autenticado como www-data
v
[SUID] firejail --join (CVE-2022-31214) -- TOCTOU de namespaces -> root@icinga (VM)
| cache offline de SSSD -> hash SHA-512 de matthew -> hashcat -> 147258369
v
[WinRM 5985] DC cerberus.local -- reutilizacion de credencial (matthew) -> user.txt
| sin privesc local -- unico servicio restante: ADSelfService Plus (:9251, solo 127.0.0.1)
v
[chisel] SOCKS inverso via c.exe en el DC -- tunel hasta 127.0.0.1:9251
| SAML RCE preautenticado (CVE-2022-47966, transformacion XSLT rt:exec)
v
[SYSTEM] ManageEngine ADSelfService Plus -> root.txt
1. Reconocimiento
Un escaneo completo de puertos deja ver una superficie mínima: un único servicio HTTP.
nmap -p8080 -sCV -Pn -oN nmap-services.txt 10.129.232.100
PORT STATE SERVICE VERSION
8080/tcp open http Apache httpd 2.4.52 ((Ubuntu))
|_http-open-proxy: Proxy might be redirecting requests
|_http-server-header: Apache/2.4.52 (Ubuntu)
|_http-title: Did not follow redirect to http://icinga.cerberus.local:8080/icingaweb2
La redirección delata dos cosas de un solo vistazo: el vhost icinga.cerberus.local y la ruta base de la aplicación, /icingaweb2. Que un servidor de monitorización sea el único punto de entrada, sin ningún otro puerto expuesto (ni SSH, ni SMB, ni el propio DC visible desde fuera), ya anticipa que toda la primera mitad de la cadena tiene que pasar por Icinga.
echo "10.129.232.100 icinga.cerberus.local cerberus.local" | sudo tee -a /etc/hosts
Navegando a http://icinga.cerberus.local:8080/icingaweb2 aparece el login de Icinga Web 2. Los recursos estáticos servidos en la página (rutas de CSS/JS versionadas) permiten fijar la rama exacta en 2.11.x sin necesidad de autenticarse — justo la versión afectada por la pareja de CVEs publicada en marzo de 2022 que da inicio a toda la intrusión.
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.