
Este script destina-se a validar a vulnerabilidade do Apache Struts 2 (CVE-2017-5638), também conhecida como Struts-Shock.
Este script destina-se a validar a vulnerabilidade do Apache Struts 2 (CVE-2017-5638), também conhecida como Struts-Shock. É completamente inofensivo, pois não injeta nenhum payload malicioso; apenas injeta um cabeçalho HTTP chamado 'STRUTS2-VALIDATION' para validar se o alvo é vulnerável.
Devido à sua capacidade multithread, é capaz de executar mais de 2.5k+ aplicações espalhadas pelo mundo em menos de 10 minutos. Portanto, pode ser muito útil para validar aplicações empresariais em grande escala.
cve-2017-5638 Amostra de site vulnerável
Este projeto tem como objetivo demonstrar a exploração do CVE-2017-5638 para fins educacionais. Para mais informações, consulte https://cwiki.apache.org/confluence/display/WW/S2-045
Este projeto é feito apenas para fins educacionais e de testes éticos. Atacar alvos sem consentimento mútuo prévio é ilegal. É de responsabilidade do usuário final obedecer a todas as leis locais, estaduais e federais aplicáveis. Os desenvolvedores não assumem nenhuma responsabilidade e não se responsabilizam por qualquer uso indevido ou dano causado por este programa.
docker run -d -p 8080:8080 jrrdev/cve-2017-5638:latest
Baixe o script de exploit na máquina do atacante aqui
Execute o script de exploit Python a partir da máquina do atacante :
python exploit.py http://<DOCKER_HOST>:8080/hello "ls -l"
Há duas maneiras de executar este script: com e sem threading. A única diferença será o tempo de execução. Para ativar o recurso de threading, basta passar o parâmetro thread.
O primeiro parâmetro deve ser um arquivo TXT contendo todas as URLs alvo, uma por linha. Observe que essas URLs devem ser completas, por exemplo, https://target.com/admin/myStrutsPage.action
Aqui está um exemplo de uso sem threading:
struts-shock-validation.py target_urls.txt
Agora usando o recurso de threads:
struts-shock-validation.py target_urls.txt thread
http://struts.apache.org/docs/s2-016.html https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017
Módulo de Exploit do Metasploit Framework para a exploração do Apache Struts via Content-Type. Não foi testado contra um servidor Windows, mas foi testado contra um servidor Linux usando o payload generic/shell_bind_tcp
Exemplo de Código PoC para CVE-2017-5638 | Exploit do Apache Struts | DORK: ext:action
USO: python struts.py https://victim.site dir
O script Python inicial que foi postado não formatava corretamente o cabeçalho Content-Type. Eu recodifiquei o cabeçalho Content-Type para formatar adequadamente Content-Type:%20{Exploit}. Também adicionei logging e Requests e, em seguida, despejei as propriedades do objeto para stdout.
EXEMPLO DE SAÍDA
Check for CVE-2017-5638 by XSS.Cx
Volume in drive D has no label. Volume Serial Number is 2A7B-A245 Directory of d:\Program Files\Apache Software Foundation\Tomcat 9.0
Este projeto é uma prova de conceito para a vulnerabilidade do Apache Struts. O objetivo era criar um software que pudesse gerar e testar IPs aleatórios para a vulnerabilidade descrita acima.
Use este projeto por sua conta e risco e apenas para fins educacionais.
cURL
Nmap
Gere IPs aleatórios e salve-os em um arquivo de texto.
./get_ip.sh [Number of hosts to scan] [What port to scan] [Filename to write output]
./get_ip.sh 10000 80 output.txt
Verifique a vulnerabilidade de um endereço IP específico.
./struts_check.sh [ip address] [port]
./struts_check.sh 127.0.0.1 80
Verifique a vulnerabilidade de uma lista de endereços IP.
./main.sh [Text file containing IP adresses] [Port]
./main.sh output.txt 443
Execute um comando em um servidor sem o patch de vulnerabilidade do Apache Struts
./struts_attack.sh [IP Adres] [Command]
./struts_attack.sh https://127.0.0.1 whoami
# CVE-2017-5638 Código PoC em Python | DORK: ext:action
Exemplo de Código PoC para CVE-2017-5638 | Exploit do Apache Struts | DORK: ext:action
USO: python struts.py https://victim.site dir
O script Python inicial que foi postado não formatava corretamente o cabeçalho Content-Type.
Eu recodifiquei o cabeçalho Content-Type para formatar adequadamente Content-Type:%20{Exploit}.
Também adicionei logging e Requests e, em seguida, despejei as propriedades do objeto para stdout.
EXEMPLO DE SAÍDA
Check for CVE-2017-5638 by XSS.Cx
Volume in drive D has no label.
Volume Serial Number is 2A7B-A245
Directory of d:\Program Files\Apache Software Foundation\Tomcat 9.0
## Resultados
ele criará automaticamente uma pasta chamada results, e a cada execução criará uma pasta com data contendo o resultado da execução. Se o threading estiver ativado, será criado um arquivo por thread chamado thread_<number>, que pode ser ignorado, pois, ao concluir, consolidará todos os resultados das threads em um único arquivo TXT com o mesmo nome (data/timestamp) da pasta de execução.