
This script is intended to validate Apache Struts 2 vulnerability (CVE-2017-5638), AKA Struts-Shock.
Dieses Skript dient dazu, die Apache Struts 2 Schwachstelle (CVE-2017-5638), auch bekannt als Struts-Shock, zu validieren. Es ist völlig harmlos, da es keine schädliche Nutzlast injiziert, sondern lediglich einen HTTP-Header namens 'STRUTS2-VALIDATION' einfügt, um zu validieren, ob die Anwendung angreifbar ist.
Dank seiner Multithread-Fähigkeit kann es 2.5k+ Anwendungen, die weltweit verteilt sind, in weniger als 10 Minuten ausführen. Daher kann es sehr praktisch sein, Unternehmensanwendungen in großem Umfang zu validieren.
cve-2017-5638 Beispiel einer angreifbaren Website
Dieses Projekt soll die Ausnutzung von CVE-2017-5638 zu Bildungszwecken demonstrieren. Weitere Informationen finden Sie unter https://cwiki.apache.org/confluence/display/WW/S2-045
Dieses Projekt dient ausschließlich zu Bildungs- und ethischen Testzwecken. Das Angreifen von Zielen ohne vorherige gegenseitige Zustimmung ist illegal. Es liegt in der Verantwortung des Endbenutzers, alle geltenden lokalen, staatlichen und bundesstaatlichen Gesetze einzuhalten. Die Entwickler übernehmen keine Haftung und sind nicht verantwortlich für Missbrauch oder Schäden, die durch dieses Programm verursacht werden.
docker run -d -p 8080:8080 jrrdev/cve-2017-5638:latest
Laden Sie das Exploit-Skript auf dem Angreifer-Rechner hier herunter.
Führen Sie das Python-Exploit-Skript vom Angreifer-Rechner aus :
python exploit.py http://<DOCKER_HOST>:8080/hello "ls -l"
Es gibt zwei Möglichkeiten, dieses Skript auszuführen: mit und ohne Threading, der einzige Unterschied ist die Ausführungszeit. Um die Threading-Funktion zu aktivieren, muss lediglich der Thread-Parameter übergeben werden. Der erste Parameter muss eine TXT-Datei sein, die alle Ziel-URLs enthält, eine pro Zeile. Bitte beachten Sie, dass diese URLs vollständig sein sollten, z. B. https://target.com/admin/myStrutsPage.action
Hier ist ein Anwendungsbeispiel ohne Threading:
struts-shock-validation.py target_urls.txt
Jetzt mit Threading-Funktion:
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
Metasploit Framework Exploit-Modul für den Apache Struts Content-Type Exploit. Nicht gegen einen Windows-Server getestet, aber gegen einen Linux-Server mit dem Payload generic/shell_bind_tcp getestet.
Beispiel-PoC-Code für CVE-2017-5638 | Apache Struts Exploit | DORK: ext:action
VERWENDUNG: python struts.py https://victim.site dir
Das ursprüngliche Python-Skript, das gepostet wurde, formatierte den Content-Type-Header nicht korrekt. Ich habe den Content-Type-Header neu codiert, um Content-Type:%20{Exploit} richtig zu formatieren. Ich habe auch ein Logging und Requests hinzugefügt und dann die Objekteigenschaften nach stdout ausgegeben.
BEISPIELAUSGABE
Prüfung auf CVE-2017-5638 von XSS.Cx
Volume in Laufwerk D hat keine Bezeichnung. Volume Serial Number ist 2A7B-A245 Verzeichnis von d:\Program Files\Apache Software Foundation\Tomcat 9.0
Dieses Projekt ist ein Proof-of-Concept für die Apache Struts-Sicherheitslücke. Ziel war es, eine Software zu erstellen, die zufällige IP-Adressen für die oben beschriebene Sicherheitslücke generieren und testen kann.
Verwenden Sie dieses Projekt auf eigenes Risiko und nur zu Bildungszwecken.
cURL
Nmap
Zufällige IP-Adressen generieren und in einer Textdatei speichern.
./get_ip.sh [Number of hosts to scan] [What port to scan] [Filename to write output]
./get_ip.sh 10000 80 output.txt
Auf Schwachstelle für eine bestimmte IP-Adresse prüfen.
./struts_check.sh [ip address] [port]
./struts_check.sh 127.0.0.1 80
Auf Schwachstelle für eine Liste von IP-Adressen prüfen.
./main.sh [Text file containing IP adresses] [Port]
./main.sh output.txt 443
Einen Befehl auf einem Server ohne den Apache Struts-Sicherheitspatch ausführen
./struts_attack.sh [IP Adres] [Command]
./struts_attack.sh https://127.0.0.1 whoami
# CVE-2017-5638 PoC-Code in Python | DORK: ext:action
Beispiel-PoC-Code für CVE-2017-5638 | Apache Struts Exploit | DORK: ext:action
VERWENDUNG: python struts.py https://victim.site dir
Das ursprüngliche Python-Skript, das gepostet wurde, formatierte den Content-Type-Header nicht korrekt. Ich habe den Content-Type-Header neu codiert, um Content-Type:%20{Exploit} richtig zu formatieren. Ich habe auch ein Logging und Requests hinzugefügt und dann die Objekteigenschaften nach stdout ausgegeben.
BEISPIELAUSGABE
Prüfung auf CVE-2017-5638 von XSS.Cx
Volume in Laufwerk D hat keine Bezeichnung.
Volume Serial Number ist 2A7B-A245
Verzeichnis von d:\Program Files\Apache Software Foundation\Tomcat 9.0
## Ergebnisse
Es wird automatisch ein Ordner namens results erstellt, und bei jeder Ausführung wird ein datumsbasierter Ordner mit dem Ausführungsergebnis erstellt. Wenn Threading aktiviert ist, wird pro Thread eine Datei mit dem Namen thread_<number> erstellt, die ignoriert werden kann, da nach Abschluss alle Thread-Ergebnisse in einer einzigen TXT-Datei mit demselben Namen (Datum/Zeitstempel) wie der Ausführungsordner zusammengeführt werden.