Skip to content
KitploitKITPLOIT
ToolsBlog
Log in
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
Tools/GitHubGitHub/meng-security/spring4shell-local-verification-lab
SchwachstellenanalyseCode-AnalyseExploitationWebsicherheitLernen & BildungLabs & Praxis
GitHubmeng-security/spring4shell-local-verification-lab

spring4shell-local-verification-lab

Spring Framework CVE-2022-22965 lokale Auswirkungsbedingungen-Verifizierung, Versions-Upgrade-Fix und erneutes Testprojekt

Repository anzeigen
8vor 2 MonatenNoch 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

Spring4Shell Lokale Auswirkungsbedingungen - Verifizierungs-, Behebungs- und Wiederholungstestprojekt

Projektbeschreibung

Dieses Projekt dient dem Lernen und Verifizieren von Spring Framework CVE-2022-22965, auch bekannt als die Spring4Shell-Sicherheitslücke, einschließlich der Auswirkungsbedingungen, der Risikodarstellung, der Behebungsmethoden und des Wiederholungstestprozesses nach der Behebung.

Das Projekt wurde in einer eigens eingerichteten lokalen autorisierten Umgebung durchgeführt. Der Schwerpunkt liegt nicht auf Angriffen auf reale Ziele, sondern darauf, durch den Aufbau einer Spring MVC-Testumgebung vor und nach der Behebung die relevanten Auswirkungsbedingungen der Sicherheitslücke Punkt für Punkt zu bestätigen und auf sichere, kontrollierbare, schreibgeschützte Weise die Unterschiede im Zugriff auf interne Eigenschaftspfade der Spring-Datenbindung vor und nach dem Versionsupgrade zu beobachten.

Dieses Projekt hat folgende Abläufe durchgeführt:

  • JDK-, Maven- und Apache Tomcat-Umgebungsvorbereitung
  • Aufbau des Spring MVC WAR-Projekts
  • Basisvalidierung der normalen Funktionalität
  • Bestätigung der Auswirkungsbedingungen der Sicherheitslücke
  • Schreibgeschützte Diagnose des internen Eigenschaftspfads
  • Analyse der Ursachen der Sicherheitslücke
  • Upgrade der Spring Framework-Version
  • Sicherer Wiederholungstest nach der Behebung
  • Wiederholungstest der normalen Funktionalität nach der Behebung
  • Zusammenstellung der Testberichte und Screenshot-Belege

Sicherheitserklärung

Dieses Projekt ist ausschließlich für die eigene lokale Testumgebung oder ausdrücklich autorisierte Sicherheitstestumgebungen bestimmt.

Das Projekt führt keine Scans, Erkundungen oder Exploits gegen öffentliche Websites, Server oder Drittanbieter-Systeme durch und enthält keine echten Benutzerdaten oder Geschäftsdaten.

Während des Tests wurden keine der folgenden Aktionen durchgeführt:

  • Kein Schreiben von WebShells
  • Keine Ausführung von Systembefehlen
  • Keine Änderung der Tomcat-Konfiguration
  • Kein Aufbau einer Reverse Shell
  • Keine Persistenzkontrolle
  • Keine Beeinträchtigung externer Systeme

Es ist untersagt, die Testmethoden dieses Projekts gegen nicht autorisierte Ziele einzusetzen.

Hintergrund der Sicherheitslücke

CVE-2022-22965, allgemein als Spring4Shell bezeichnet, ist eine Sicherheitslücke zur Remote-Code-Ausführung im Spring Framework, die mit dem Datenbindungsmechanismus von Anfrageparametern zusammenhängt.

Spring MVC unterstützt die automatische Bindung von HTTP-Anfrageparametern an Java-Objekteigenschaften. Beispielsweise empfängt dieses Projekt über die folgende Methode Name- und E-Mail-Parameter:

@ModelAttribute("profile") UserProfile profile

Normalerweise werden die Anfrageparameter name und email gemäß dem Eigenschaftsnamen an das UserProfile-Objekt gebunden.

In den betroffenen Versionen sind die Zugriffsbeschränkungen auf einige interne Eigenschaftspfade nicht streng genug. Bei Verwendung von JDK 9 oder höher und unter bestimmten Servlet-Container-, Bereitstellungs- und Datenbindungsbedingungen können externe Anfrageparameter von normalen Geschäftsobjekten aus auf Java Class, Module, Klassenlader oder containerbezogene interne Objekte zugreifen.

In bestimmten ausnutzbaren Umgebungen könnte ein Angreifer die Serverkonfiguration ändern oder Dateien auf dem Server schreiben, wodurch ein Risiko für Remote-Code-Ausführung entsteht.

Dieses Projekt führt keine vollständige Remote-Code-Ausführung durch, sondern verwendet den folgenden Eigenschaftspfad für eine sichere, schreibgeschützte differenzielle Diagnose:

class.module.name

Projektziele

  1. Verstehen des grundlegenden Prozesses der Datenbindung von Spring MVC-Anfrageparametern.
  2. Aufbau eines lokalen Spring MVC WAR-Testprojekts.
  3. Basisvalidierung der normalen Geschäftsfunktionalität.
  4. Bestätigung der Auswirkungsbedingungen wie Spring Framework, JDK, Tomcat, WAR-Bereitstellung und Datenbindungseinstieg.
  5. Beobachten des Zugriffsverhaltens auf interne Eigenschaftspfade im schreibgeschützten Modus.
  6. Analyse der Hauptursache der Sicherheitslücke.
  7. Upgrade von Spring Framework auf eine behobene Version.
  8. Durchführung des Wiederholungstests mit derselben Methode nach der Behebung.
  9. Bestätigen, dass das Versionsupgrade die normale Geschäftsfunktionalität nicht beeinträchtigt hat.
  10. Zusammenstellung des Projektquellcodes, Testberichts und Screenshot-Belege.

Laborumgebung

Dieses Projekt wurde in einer isolierten lokalen VMware-Testumgebung durchgeführt.

  • Host: Windows 11
  • Zielmaschine: Windows 10 (virtuelle Maschine)
  • Virtualisierungssoftware: VMware Workstation
  • Java-Umgebung: Eclipse Temurin JDK 11.0.31
  • Projekt-Build-Tool: Apache Maven 3.9.16
  • Servlet-Container: Apache Tomcat 9.0.60
  • Spring Framework-Version vor der Behebung: 5.3.17
  • Spring Framework-Version nach der Behebung: 5.3.18
  • Web-Framework: Spring MVC
  • Projektbereitstellungsmethode: Traditionelle WAR-Bereitstellung
  • Testadresse: 127.0.0.1

Normale Funktionstestdaten:

  • Name: Alice
  • E-Mail: [email protected]

Sicherheitsdiagnose-Eigenschaftspfad:

class.module.name

Projektstruktur

spring4shell-local-verification-lab/

  • README.md: Projektbeschreibung, Testansatz, Verifizierungsergebnisse und Behebungsbeschreibung
  • docs/: Spring4Shell Lokale Auswirkungsbedingungen - Verifizierungs-, Behebungs- und Wiederholungstestbericht
  • images/: Screenshots der Laborumgebung, des Testprozesses und der Wiederholungstests
  • vulnerable-demo/: Projekt vor der Behebung mit Spring Framework 5.3.17
  • fixed-demo/: Projekt nach der Behebung mit Spring Framework 5.3.18
  • notes/: Lernnotizen und Prozessaufzeichnungen

Wichtige Quellcode-Struktur:

  • config/: Spring MVC-Konfigurationsklassen und Applikationsinitialisierungsklassen
  • controller/: Controller für Formularverarbeitung und Eigenschaftspfaddiagnose
  • model/: UserProfile-Klasse zum Empfang von Name- und E-Mail-Parametern
  • WEB-INF/views/: JSP-Seiten für Startseite, Sendeergebnis und Diagnoseergebnis

Beschreibung der Testprojekte

Dieses Projekt hat zwei Spring MVC-Anwendungen eingerichtet: eine vor und eine nach der Behebung.

Projekt vor der Behebung

Projektverzeichnis:

vulnerable-demo

Verwendete Version:

Spring Framework 5.3.17

Generierte WAR-Datei:

spring4shell-vulnerable-demo.war

Zugriffsadresse:

http://127.0.0.1:8080/spring4shell-vulnerable-demo/

Diagnoseseite:

http://127.0.0.1:8080/spring4shell-vulnerable-demo/binding-probe

Projekt nach der Behebung

Projektverzeichnis:

fixed-demo

Verwendete Version:

Spring Framework 5.3.18

Generierte WAR-Datei:

spring4shell-fixed-demo.war

Zugriffsadresse:

http://127.0.0.1:8080/spring4shell-fixed-demo/

Diagnoseseite:

http://127.0.0.1:8080/spring4shell-fixed-demo/binding-probe

Beschreibung der normalen Funktionalität

Das Testprojekt bietet ein einfaches Benutzerprofil-Formular mit:

  • Name-Eingabefeld
  • E-Mail-Eingabefeld
  • Absenden-Button

Der Controller empfängt die Anfrageparameter wie folgt:

@ModelAttribute("profile") UserProfile profile

Wenn der Benutzer Name und E-Mail sendet, bindet Spring MVC die Parameter name und email automatisch an das UserProfile-Objekt.

Die Ergebnis-Seite liest das gebundene Objekt und zeigt den gesendeten Namen und die E-Mail des Benutzers an.

Diese Funktion dient der Bestätigung, dass das Projekt ordnungsgemäß läuft und dass ein gültiger Einstiegspunkt für die Datenbindung von Spring MVC-Anfrageparametern in der Anwendung vorhanden ist.

Testansatz

Dieses Projekt folgt dem Ansatz „zuerst normale Funktionalität bestätigen, dann die Auswirkungsbedingungen bestätigen, danach eine schreibgeschützte Risikodiagnose durchführen und schließlich beheben und wiederholt testen".

Tool herunterladen