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-2024-22243 — Beispielhafte ausnutzbare Szenarien für CVE-2024-22243, die das Spring-Framework betreffen (Open Redirect & SSRF). | Kitploit
Tools/GitHubGitHub/seanpesce/cve-2024-22243
SchwachstellenanalyseCode-AnalyseExploitationWebanwendungs-ExploitationWebsicherheitCTFLernen & Bildung
GitHubseanpesce/cve-2024-22243

CVE-2024-22243

Beispielhafte ausnutzbare Szenarien für CVE-2024-22243, die das Spring-Framework betreffen (Open Redirect & SSRF).

Repository anzeigen
132vor 1 JahrNoch 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

CVE-2024-22243

Autor: Sean Pesce

Dieses Projekt enthält eine Beispiel-Webanwendung, die ausnutzbare Szenarien für CVE-2024-22243, eine URL-Parsing-Schwachstelle im Java-Spring Framework (offizielle Offenlegung hier).

Schwachstelle

Betroffene Spring-Versionen parsen das "userinfo"-Segment von URLs auf eine einzigartige Weise, was möglicherweise zur Extraktion eines Hostnamen-Segments führt, das sich von vielen anderen gängigen Bibliotheken unterscheidet.

Das anomale Verhalten ist auf den folgenden regulären Ausdruck („Regex“) in der UriComponentsBuilder -Klasse zurückzuführen (eingeführt durch diesen Commit in 2014):

root@kitploit:~
private static final String USERINFO_PATTERN = "([^@\\[/?#]*)";

Dieser Regex erlaubt das Zeichen „linke eckige Klammer“ ([) nicht im User-Info-Segment. Allerdings, Spring scheint mit diesem Verhalten ein Ausreißer zu sein, daher kann der Aufruf von getHost() auf einem UriComponents Objekt, das mit UriComponentsBuilder.fromUriString erstellt wurde, oder UriComponentsBuilder.fromHttpUrl zu unerwartetem Verhalten führen kann. Die Klassen RestTemplate, RestClient, und WebClient sind ebenfalls betroffen, da sie intern UriComponentsBuilder verwenden; daher können Implementierungen auch ohne direkte Verwendung von UriComponentsBuilder angreifbar sein.

Bei speziell konstruierten Eingaben gibt Spring einen Hostnamen-Wert zurück, der sich von allen folgenden unterscheidet:

  • Moderne Webbrowser, einschließlich:
    • Chrome (und andere Chromium-basierte Browser)
    • Firefox
    • Safari
  • java.net.URI (nach Berichten nur für bestimmte Java-Versionen; andere Versionen werfen eine URISyntaxException)
  • java.net.URL
  • curl
  • android.net.Uri
  • okhttp3.HttpUrl
  • (Python 3) urllib.parse.urlparse

(Beachte, dass diese Liste nicht vollständig ist.)

Dieses Verhalten macht Spring-basierte Webanwendungen potenziell anfällig für Open Redirect und Server-Side Request Forgery (SSRF), wenn die abhängige Implementierung vertrauenswürdige Hostnamen für die Autorisierung oder andere sicherheitsrelevante Mechanismen verwendet.

Beispiele

Die Beispiel-Webanwendung enthält zwei angreifbare Endpunkte.

Der erste Endpunkt, /redirect, zeigt, wie Springs anormales URL-Parsing zu einer offenen Weiterleitung führen kann. Er kann mit einer URL wie der folgenden ausgenutzt werden:

root@kitploit:~
https://127.0.0.1[@evil.com

Der zweite Endpunkt, /health-check, zeigt, wie eine Diskrepanz beim URL-Parsing zwischen Spring und der Java-Standardbibliothek URL zu Server-Side Request Forgery (SSRF) führen kann. Er kann mit einer URL wie der folgenden ausgenutzt werden:

root@kitploit:~
https://evil.com[@127.0.0.1

Verwendung

Um dieses Projekt mit Maven zu bauen, führe einfach den folgenden Befehl aus (getestet mit OpenJDK 17):

root@kitploit:~
mvn clean package

Starte dann die Web-App mit einem Befehl wie dem folgenden:

root@kitploit:~
java -jar seanpesce-cve-2024-22243.jar 9999

Die Web-App ist unter http://127.0.0.1:9999/ erreichbar.

Docker

Um das Docker-Image zu erstellen, führe den folgenden Befehl aus:

root@kitploit:~
docker build -t seanpesce-cve-2024-22243:latest .

Starte dann die Web-App mit einem Befehl wie dem folgenden:

root@kitploit:~
docker run -i -e PORT=9999 -p 9999:9999 seanpesce-cve-2024-22243:latest

Die Web-App ist auf dem Docker-Host unter http://127.0.0.1:9999/ erreichbar.

Semgrep

Dieses Repository enthält außerdem semgrep-Regeln, die beim Scannen nach potenziell angreifbaren Codepfaden helfen. spring-cve-2024-22243_loose.yaml führt naive Scans nach jeder Verwendung der anfälligen APIs durch; daher liefert es oft eine große Anzahl falscher Positiver. spring-cve-2024-22243_strict.yaml versucht, strengere Logik und Taint-Analyse zu verwenden; dies wurde jedoch nicht gründlich getestet und birgt ein hohes Potenzial, einige anfällige Implementierungen zu übersehen (insbesondere wenn nicht Semgrep Pro verwendet wird, das für die dateiübergreifende Analyse erforderlich ist).

Weitere Ressourcen

  • NIST-Datenbankeintrag
  • Git-Commit, der die Schwachstelle behoben hat
  • Demo einer angreifbaren Implementierung: Angreifbarer OAuth-Ablauf mit Open Redirect von threedr3am vom SecCoder Security Lab
  • CVE-2024-22259, eine zweite URL-Parsing-Schwachstelle, die im Nachgang von CVE-2024-22243 entdeckt wurde
  • CVE-2024-22262, eine dritte URL-Parsing-Schwachstelle, die im Nachgang der ersten beiden Funde entdeckt wurde
  • PortSwigger URL Bypass Cheat Sheet, das Payloads für CVE-2024-22243 enthält
Tool herunterladen