
Un script d'exploitation entièrement refactorisé, compatible avec Python 3, pour Tomcat Ghostcat (CVE-2020-1938 / CNVD-2020-10487) - Inclusion de fichier local AJP
Ce projet fournit un script de vérification Python pour valider la vulnérabilité d'inclusion de fichiers locaux dans le protocole AJP d'Apache Tomcat, communément appelée Ghostcat (CVE-2020-1938 / CNVD-2020-10487).
Ce script est une refonte et réparation complète de la version Python 2 initialement diffusée. Il est entièrement compatible avec Python 3, corrige les problèmes de compatibilité avec StringIO, le codage base64 et les concaténations de données binaires et de chaînes, et améliore la stabilité sur les systèmes d'exploitation modernes.
Lors du traitement du protocole AJP (Apache JServ Protocol), Apache Tomcat active par défaut le port 8009 sans effectuer de contrôle de sécurité strict sur les attributs de requête entrants.
Un attaquant peut construire une requête AJP malveillante en injectant des attributs tels que javax.servlet.include.request_uri, javax.servlet.include.path_info et javax.servlet.include.servlet_path :
DefaultServlet de Tomcat pour lire tout fichier situé dans le répertoire de l'application web (par exemple WEB-INF/web.xml, fichiers de configuration).JspServlet à analyser et compiler ce fichier en tant que JSP, permettant ainsi l'exécution de commandes à distance.Remarque : Cette vulnérabilité ne prend en charge que l'inclusion locale de fichiers (LFI), et non l'inclusion distante directe (RFI).
Syntaxe en ligne de commande :
python CNVD-2020-10487-Tomcat-Ajp-lfi.py <IP cible> [-p port cible] [-f chemin du fichier cible]
target (obligatoire) : Adresse IP ou nom de domaine de la machine cible.-p, --port (optionnel) : Port AJP, par défaut 8009.-f, --file (optionnel) : Chemin relatif du fichier à lire sur la cible, par défaut WEB-INF/web.xml.Détection de base (lecture du fichier web.xml par défaut) :
python CNVD-2020-10487-Tomcat-Ajp-lfi.py 127.0.0.1
Spécification d'un port et d'un fichier (lecture d'un fichier de configuration personnalisé) :
python CNVD-2020-10487-Tomcat-Ajp-lfi.py 192.168.1.100 -p 8009 -f WEB-INF/classes/application.properties
Si votre système est affecté par cette vulnérabilité, il est recommandé de prendre les mesures de protection suivantes immédiatement :
<Connector port="8009" protocol="AJP/1.3" ... /> directement dans conf/server.xml.requiredSecret (ou secret pour Tomcat 8.5.51/9.0.31 et versions ultérieures) au connecteur AJP pour forcer l'authentification.Ce script est destiné exclusivement à la recherche en cybersécurité, à l'éducation et aux audits de sécurité internes en entreprise. N'utilisez pas ce script pour sonder ou attaquer des cibles non autorisées. L'utilisateur doit respecter les lois et réglementations locales lors de l'utilisation de ce script. Toute conséquence résultant d'une utilisation inappropriée ou illégale relève de la seule responsabilité de l'utilisateur.