
Ein vollständig überarbeitetes, Python 3-kompatibles Exploit-Skript für Tomcat Ghostcat (CVE-2020-1938 / CNVD-2020-10487) AJP Local File Inclusion
Dieses Projekt stellt ein Python-Skript zur Verfügung, das die lokale Dateieinschleusungslücke im Apache Tomcat AJP-Protokoll (allgemein bekannt als Ghostcat, CVE-2020-1938 / CNVD-2020-10487) verifiziert.
Das Skript basiert auf der ursprünglich verbreiteten Python-2-Version, wurde jedoch vollständig überarbeitet und repariert. Es ist vollständig kompatibel mit Python 3, behebt Kompatibilitätsprobleme mit StringIO, base64-Kodierung und der Verkettung von Binärdaten und Zeichenketten und erhöht die Stabilität unter modernen Betriebssystemen.
Bei der Verarbeitung des AJP-Protokolls (Apache JServ Protocol) öffnet Apache Tomcat standardmäßig Port 8009 und führt keine strenge Sicherheitsprüfung der eingehenden Anforderungsattribute durch.
Ein Angreifer kann böswillige AJP-Anfragen erstellen und Attribute wie javax.servlet.include.request_uri, javax.servlet.include.path_info und javax.servlet.include.servlet_path einschleusen:
DefaultServlet von Tomcat, um beliebige Dateien im Webanwendungsverzeichnis zu lesen (z. B. WEB-INF/web.xml, Konfigurationsdateien).JspServlet zu zwingen, diese Datei als JSP zu parsen und zu kompilieren, was zur Remote-Code-Ausführung führt.Hinweis: Diese Schwachstelle unterstützt nur lokale Dateieinschleusung (LFI), keine direkte Remote-Dateieinschleusung (RFI).
Syntax für die Befehlszeile:
python CNVD-2020-10487-Tomcat-Ajp-lfi.py <Ziel-IP> [-p Ziel-Port] [-f Ziel-Dateipfad]
target (erforderlich): IP-Adresse oder Domain des Ziel-Hosts.-p, --port (optional): AJP-Port, Standard ist 8009.-f, --file (optional): Relativer Pfad der gewünschten Datei, Standard ist WEB-INF/web.xml.Basisprüfung (lesen der Standard-web.xml):
python CNVD-2020-10487-Tomcat-Ajp-lfi.py 127.0.0.1
Benutzerdefinierter Port und Datei (lesen einer benutzerdefinierten Konfigurationsdatei):
python CNVD-2020-10487-Tomcat-Ajp-lfi.py 192.168.1.100 -p 8009 -f WEB-INF/classes/application.properties
Wenn Ihr System von dieser Schwachstelle betroffen ist, wird empfohlen, sofort folgende Schutzmaßnahmen zu ergreifen:
<Connector port="8009" protocol="AJP/1.3" ... />-Konfiguration in conf/server.xml aus oder löschen Sie sie.requiredSecret (ab Tomcat 8.5.51/9.0.31 als secret) hinzu, um eine Authentifizierung zu erzwingen.Dieses Skript ist ausschließlich für Sicherheitsforschung, Bildung und interne Compliance-Sicherheitsaudits bestimmt. Verwenden Sie dieses Skript nicht für unbefugte Erkundungen oder Angriffe auf nicht autorisierte Ziele. Der Benutzer muss bei der Nutzung dieses Skripts die geltenden lokalen Gesetze und Vorschriften einhalten. Für jegliche Folgen durch unsachgemäße oder unrechtmäßige Nutzung ist allein der Benutzer verantwortlich.