
Este script está diseñado para validar la vulnerabilidad de Apache Struts 2 (CVE-2017-5638), también conocida como Struts-Shock.
Este script está diseñado para validar la vulnerabilidad de Apache Struts 2 (CVE-2017-5638), también conocida como Struts-Shock. Es completamente inofensivo, ya que no inyecta ninguna carga maliciosa; solo inyecta una cabecera HTTP llamada 'STRUTS2-VALIDATION' para poder validar si es vulnerable.
Gracias a su capacidad de subprocesamiento múltiple, puede ejecutar más de 2.5k aplicaciones distribuidas por todo el mundo en menos de 10 minutos. Por lo tanto, puede ser muy útil para validar aplicaciones empresariales a gran escala.
cve-2017-5638 Muestra de sitio vulnerable
Este proyecto tiene como objetivo demostrar la explotación de la CVE-2017-5638 con fines educativos. Para más información, consulte https://cwiki.apache.org/confluence/display/WW/S2-045
Este proyecto se ha creado únicamente con fines educativos y de pruebas éticas. Atacar objetivos sin consentimiento mutuo previo es ilegal. Es responsabilidad del usuario final cumplir con todas las leyes locales, estatales y federales aplicables. Los desarrolladores no asumen ninguna responsabilidad y no son responsables de ningún uso indebido o daño causado por este programa.
docker run -d -p 8080:8080 jrrdev/cve-2017-5638:latest
Descargue el script de explotación en la máquina del atacante aquí
Ejecute el script de explotación de Python desde la máquina del atacante:
python exploit.py http://<DOCKER_HOST>:8080/hello "ls -l"
Hay dos formas de ejecutar este script, con y sin subprocesamiento; la única diferencia será el tiempo de ejecución. Para habilitar la función de subprocesamiento, solo necesita pasar el parámetro thread.
El primer parámetro debe ser un archivo TXT que contenga todas las URL objetivo, una por línea. Tenga en cuenta que estas URL deben ser completas, por ejemplo, https://target.com/admin/myStrutsPage.action
Aquí hay un ejemplo de uso sin subprocesamiento:
struts-shock-validation.py target_urls.txt
Ahora usando la capacidad de subprocesos:
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 de Metasploit Framework para la vulnerabilidad de Apache Struts mediante Content-Type No se ha probado contra un servidor Windows, pero se ha probado contra un servidor Linux usando el payload generic/shell_bind_tcp
Código PoC de ejemplo para CVE-2017-5638 | Apache Struts Exploit | DORK: ext:action
USAGE: python struts.py https://victim.site dir
El script Python inicial que se publicó no formateaba correctamente la cabecera Content-Type. Recodifiqué la cabecera Content-Type para formatear correctamente Content-Type:%20{Exploit}. También añadí logging y Requests, y luego volqué las propiedades del objeto en stdout.
SALIDA DE EJEMPLO
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 proyecto es una prueba de concepto para la vulnerabilidad de Apache Struts. El objetivo era crear un software que pudiera generar y probar IPs aleatorias para la vulnerabilidad descrita anteriormente.
Utilice este proyecto bajo su propio riesgo y únicamente con fines educativos.
cURL
Nmap
Generar IPs aleatorias y guardarlas en un archivo 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
Comprobar la vulnerabilidad de una dirección IP específica.
./struts_check.sh [ip address] [port]
./struts_check.sh 127.0.0.1 80
Comprobar la vulnerabilidad de una lista de direcciones IP.
./main.sh [Text file containing IP adresses] [Port]
./main.sh output.txt 443
Ejecutar un comando en un servidor sin el parche de vulnerabilidad de Apache Struts
./struts_attack.sh [IP Adres] [Command]
./struts_attack.sh https://127.0.0.1 whoami
Código PoC de ejemplo para CVE-2017-5638 | Apache Struts Exploit | DORK: ext:action
USAGE: python struts.py https://victim.site dir
El script Python inicial que se publicó no formateaba correctamente la cabecera Content-Type. Recodifiqué la cabecera Content-Type para formatear correctamente Content-Type:%20{Exploit}. También añadí logging y Requests, y luego volqué las propiedades del objeto en stdout.
SALIDA DE EJEMPLO
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
Creará automáticamente una carpeta llamada results, y en cada ejecución creará una carpeta con fecha que contiene el resultado de la ejecución. Si el subprocesamiento está habilitado, creará un archivo por subproceso llamado thread_, que puede ignorarse porque, al finalizar, consolidará todos los resultados de los subprocesos en un único archivo TXT con el mismo nombre (fecha/marca de tiempo) que su carpeta de ejecución.