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.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2022-22947 — Spring-Cloud-Spel-RCE | Kitploit
Tools/GitHubGitHub/4nnns/cve-2022-22947
SchwachstellenanalyseCode-AnalyseExploitationWebanwendungs-ExploitationLernen & BildungLabs & Praxis
GitHub4nnns/cve-2022-22947

CVE-2022-22947

Spring-Cloud-Spel-RCE

Repository anzeigen
12217vor 4 JahrenNoch 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

SpringCloud-Gateway Befehlseinschleusung (CVE-2022-22947)

Umgebungseinrichtung

Methode 1:

Durch Klonen des bereits geschriebenen Umgebungscodes auf GitHub.

GitHub Repository

//⚠️ Achtung: Der Pfad zum Herunterladen des Umgebungscodes darf keine chinesischen Zeichen oder Leerzeichen enthalten.
git clone https://github.com/Ha0Liu/CVE-2022-22947.git

Öffnen Sie das gerade heruntergeladene Codepaket mit IDEA: Open → Pfad der heruntergeladenen Datei → Open.

Methode 2:

Durch manuelle Erstellung eines Projekts und Aufsetzen der Umgebung.

(1) Neues Projekt erstellen, nach der Konfiguration einfach mit „Weiter“ fortfahren.

(2) Analyse der Verzeichnisstruktur des Projekts:

1. Der Ordner `.idea` enthält die Standardkonfigurationsdateien von IntelliJ IDEA, hat keinen weiteren Zweck und kann je nach Bedarf gelöscht oder behalten werden.
2. Der Ordner `src` ist hauptsächlich der Codebereich des gesamten Projekts und enthält die beiden Unterordner `java` und `resources`. `java` ist der Bereich, in dem Java-Code geschrieben wird, `resources` ist der Konfigurationsbereich des gesamten Projekts. Spring-Projekte fügen standardmäßig die `SpringApplication`-Methode in `java` hinzu, die die Standard-Startmethode von Spring ist. In `resources` wird standardmäßig `application.properties` hinzugefügt, die Konfigurationsdatei des Spring-Projekts.
3. Der Ordner `test` ist der Testordner, in dem Testmethoden abgelegt werden können.
4. `pom.xml` ist die Maven-Konfigurationsdatei, die die Abhängigkeiten, Konfigurationen usw. des Projekts enthält.
5. `.iml` ist die Konfiguration der Maven-Abhängigkeitspakete, die ebenfalls standardmäßig hinzugefügt wird.
6. Der Ordner `External Libraries` enthält alle Abhängigkeitspakete des Projekts.

(3) Maven-Abhängigkeiten in die pom.xml-Datei einfügen (das Maven-Repository enthält alle Abhängigkeitsdetails).

1. In der `pom`-Datei werden standardmäßig einige XML-Codeabschnitte generiert. Details unten:

2. Importieren Sie die benötigten Abhängigkeiten für das Projekt. Da dieses Projekt ein SpringBoot-Projekt ist, muss die Abhängigkeit `spring-boot-starter` als Starter für den Server importiert werden. Da es sich bei dieser Schwachstelle um eine Schwachstelle im SpringCloud Gateway handelt, beträgt die gefährdete Version unter 3.1.1. Daher verwenden wir hier die Version 3.1.0 zur Reproduktion der Schwachstelle. Gleichzeitig müssen wir über das Actuator-Interface das Gateway überwachen und darauf zugreifen, daher benötigen wir auch diese Abhängigkeit. Die spezifischen Inhalte sind unten aufgeführt:

(4) Ändern Sie die Spring-Konfigurationsdatei (Pfad: src → main → resources → application.properties). Details unten:

1. `server.port` ist der Startport des Spring-Servers, standardmäßig Port 8080. Sie können ihn je nach Ihren Anforderungen einstellen.
2. `management.endpoint.gateway.enabled=true` aktiviert die Actuator-Überwachung des Spring Cloud Gateway. Der Standardwert ist `false`. Da diese Schwachstelle das Überwachen des Gateway-Status erfordert, müssen wir ihn manuell auf `true` ändern, um die Überwachung zu aktivieren.
3. `management.endpoints.web.exposure.include=gateway` wählt das Gateway des Servers als Gateway aus. Da es sich bei dieser Schwachstelle um eine Schwachstelle im Gateway handelt, deklarieren wir in der Konfigurationsdatei, dass das Gateway ausgewählt wird.

(5) Ändern Sie die nach der Projekterstellung automatisch generierte Java-Klasse (Klassenname ist normalerweise Projektname + Application, Pfad: src → main → java → com.xxx.xxx → xxxApplication). Einzelheiten siehe unten:

(6) Starten Sie das Projekt. Einzelheiten siehe unten:

(7) Rufen Sie http://localhost:9000 auf. Wenn die Seite mit dem Screenshot übereinstimmt, war die Umgebungseinrichtung erfolgreich.

Reverse Audit

(1) Zunächst betrachten wir den offiziellen Fix-Patch. Der Diff ist hier: https://github.com/spring-cloud/spring-cloud-gateway/commit/337cef276bfd8c59fb421bfe7377a9e19c68fe1e. Offiziell wurde in der Funktion org.springframework.cloud.gateway.support.ShortcutConfigurable#getValue GatewayEvaluationContext anstelle von StandardEvaluationContext verwendet, um SPEL-Ausdrücke auszuführen.

Aus der obigen Abbildung ist ersichtlich, dass dieser Patch hauptsächlich die Analysemethode des SPEL-Ausdrucks ändert. In Zeile 66 ist eine if-Anweisung zu sehen, die zeigt, dass der SPEL-Ausdruck mit #{ beginnen und mit } enden muss. Die Funktion getValue dient der Analyse des SPEL-Ausdrucks. Daraus ist ersichtlich, dass es sich bei dieser Schwachstelle um eine RCE-Schwachstelle handelt, die durch SPEL-Ausdrücke ausgelöst wird.

(2) Klicken Sie bei gedrückter Steuerungstaste auf das Feld getValue, um rückwärts zur Enumeration org.springframework.cloud.gateway.support.ShortcutConfigurable.ShortcutType zu gelangen.

Aus der obigen default-Methode ist ersichtlich, dass die DEFAULT-Methode in der Enumeration aufgerufen wird. Die Methodendetails sind wie folgt:

default ShortcutType shortcutType() {
    return ShortcutType.DEFAULT;
}

DEFAULT-Methode

(3) Gehen Sie rückwärts zu org.springframework.cloud.gateway.support.ConfigurationService.class#normalizeProperties().

Diese normalizeProperties()-Methode analysiert die Eigenschaften des Filters. Sie übergibt die Konfigurationseigenschaften des Filters an normalize und führt schließlich getValue aus, um eine SPEL-Ausdrucksinjektion zu verursachen.

Forward Audit (Nicht-ausgabe-fähige Exploit-Kette)

(1) Laut Dokumentation [https://cloud.spring.io/spring-cloud-gateway/multi/multi__actuator_api.html](https://cloud.spring.io/spring-cloud-gateway/multi/multi actuator_api.html ) können Benutzer über Actuator Routen im Gateway erstellen und löschen. Die folgende Abbildung zeigt die grundlegende Struktur des Gateways.

Tool herunterladen