
Ce script est destiné à valider la vulnérabilité Apache Struts 2 (CVE-2017-5638), alias Struts-Shock.
Ce script est destiné à valider la vulnérabilité Apache Struts 2 (CVE-2017-5638), également connue sous le nom de Struts-Shock. Il est totalement inoffensif car il n'injecte aucun payload malveillant, il injecte uniquement un en-tête HTTP nommé 'STRUTS2-VALIDATION' afin de pouvoir valider si la cible est vulnérable.
Grâce à sa capacité de multithreading, il est capable de tester 2.5k+ applications réparties dans le monde entier en moins de 10 minutes. Il peut donc être très pratique pour valider des applications d'entreprise à grande échelle.
cve-2017-5638 Exemple de site vulnérable
Ce projet vise à démontrer l'exploitation de la CVE-2017-5638 à des fins éducatives. Pour plus d'informations, voir https://cwiki.apache.org/confluence/display/WW/S2-045
Ce projet est réalisé uniquement à des fins éducatives et de tests éthiques. Attaquer des cibles sans consentement mutuel préalable est illégal. Il est de la responsabilité de l'utilisateur final de respecter toutes les lois locales, nationales et fédérales applicables. Les développeurs déclinent toute responsabilité et ne sont pas responsables de tout usage abusif ou dommage causé par ce programme.
docker run -d -p 8080:8080 jrrdev/cve-2017-5638:latest
Téléchargez le script d'exploitation sur la machine de l'attaquant ici
Exécutez le script d'exploitation Python depuis la machine de l'attaquant :
python exploit.py http://<DOCKER_HOST>:8080/hello "ls -l"
Il existe deux façons d'exécuter ce script : avec et sans multithreading. La seule différence sera le temps d'exécution. Pour activer le multithreading, il suffit de passer le paramètre thread.
Le premier paramètre doit être un fichier TXT contenant toutes les URL ciblées, une par ligne. Veuillez noter que ces URL doivent être complètes, par exemple, https://target.com/admin/myStrutsPage.action
Voici un exemple d'utilisation sans multithreading :
struts-shock-validation.py target_urls.txt
Maintenant, avec la prise en charge des 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
Module d'exploitation Metasploit Framework pour l'exploit Apache Struts de type Content-Type Non testé sur un serveur Windows, mais testé sur un serveur Linux avec le payload generic/shell_bind_tcp
Exemple de code PoC pour CVE-2017-5638 | Exploit Apache Struts | DORK: ext:action
UTILISATION : python struts.py https://victim.site dir
Le script Python initial qui a été publié ne formatait pas correctement l'en-tête Content-Type. J'ai recodé l'en-tête Content-Type pour formater correctement Content-Type:%20{Exploit}. J'ai également ajouté une journalisation et Requests, puis affiché les propriétés de l'objet sur stdout.
EXEMPLE DE SORTIE
Vérification de CVE-2017-5638 par XSS.Cx
Le volume du lecteur D n'a pas d'étiquette. Le numéro de série du volume est 2A7B-A245. Répertoire de d:\Program Files\Apache Software Foundation\Tomcat 9.0
Ce projet est une preuve de concept pour la vulnérabilité Apache Struts. L'objectif était de créer un logiciel capable de générer et de tester des adresses IP aléatoires pour la vulnérabilité décrite ci-dessus.
Utilisez ce projet à vos propres risques et uniquement à des fins éducatives.
cURL
Nmap
Générer des adresses IP aléatoires et les enregistrer dans un fichier texte.
./get_ip.sh [Number of hosts to scan] [What port to scan] [Filename to write output]
./get_ip.sh 10000 80 output.txt
Vérifier la vulnérabilité d'une adresse IP spécifique.
./struts_check.sh [ip address] [port]
./struts_check.sh 127.0.0.1 80
Vérifier la vulnérabilité d'une liste d'adresses IP.
./main.sh [Text file containing IP adresses] [Port]
./main.sh output.txt 443
Exécuter une commande sur un serveur sans le correctif de vulnérabilité Apache Struts
./struts_attack.sh [IP Adres] [Command]
./struts_attack.sh https://127.0.0.1 whoami
# CVE-2017-5638 Code PoC en Python | DORK: ext:action
Exemple de code PoC pour CVE-2017-5638 | Exploit Apache Struts | DORK: ext:action
UTILISATION : python struts.py https://victim.site dir
Le script Python initial qui a été publié ne formatait pas correctement l'en-tête Content-Type.
J'ai recodé l'en-tête Content-Type pour formater correctement Content-Type:%20{Exploit}.
J'ai également ajouté une journalisation et Requests, puis affiché les propriétés de l'objet sur stdout.
EXEMPLE DE SORTIE
Vérification de CVE-2017-5638 par XSS.Cx
Le volume du lecteur D n'a pas d'étiquette.
Le numéro de série du volume est 2A7B-A245.
Répertoire de d:\Program Files\Apache Software Foundation\Tomcat 9.0
## Résultats
Il créera automatiquement un dossier nommé results, et à chaque exécution, il créera un dossier daté contenant le résultat de l'exécution. Si le multithreading est activé, il créera un fichier par thread nommé thread_<number>, qui peut être ignoré car, une fois l'exécution terminée, il consolidera les résultats de tous les threads dans un seul fichier TXT portant le même nom (date/horodatage) que son dossier d'exécution.