Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
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-geoserver-rce — Étude reproductible de CVE-2024-36401 : RCE non authentifiée dans GeoServer via injection d'évaluation JXPath. Comprend un rapport technique, un exploit/vérificateur fonctionnel et un environnement Docker démontrant la vulnérabilité sur des instances vulnérables et corrigées. | Kitploit
Outils/GitHubGitHub/danielegiovanardi2408/cve-2024-36401-geoserver-rce
Analyse des VulnérabilitésExploitationExploitation d'Applications WebCTFTests d'IntrusionApprentissage et Éducation
GitHubdanielegiovanardi2408/cve-2024-36401-geoserver-rce

cve-2024-36401-geoserver-rce

Étude reproductible de CVE-2024-36401 : RCE non authentifiée dans GeoServer via injection d'évaluation JXPath. Comprend un rapport technique, un exploit/vérificateur fonctionnel et un environnement Docker démontrant la vulnérabilité sur des instances vulnérables et corrigées.

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
Voir le dépôt
il y a 2 moisPas encore vérifié

CVE-2024-36401 — RCE non authentifiée dans GeoServer

CVE CVSS CISA KEV Type License

Une étude complète et reproductible de CVE-2024-36401, une faille d'exécution de code à distance non authentifiée dans GeoServer — le serveur open-source le plus déployé pour les données géospatiales. Le bug est une injection d'évaluation : via les paramètres des normes OGC, GeoServer transmet des noms de propriété contrôlés par l'attaquant à GeoTools, où Apache Commons JXPath les évalue comme des expressions XPath et, par conception, peut appeler des méthodes Java arbitraires via la réflexion. Une requête non authentifiée telle que exec(java.lang.Runtime.getRuntime(),'id') exécute donc des commandes sur l'hôte.

Ce dépôt contient le rapport technique, un exploit/vérificateur fonctionnel et un environnement Docker en une commande qui démontre la RCE sur une instance vulnérable et montre le même exploit échouant sur l'instance patchée.

Projet éducatif. Construit pour un cours universitaire (Data Privacy and Security, LUISS DASMA). Tout s'exécute uniquement contre des conteneurs locaux et isolés — voir Utilisation responsable.

En un coup d'œil

Structure du dépôt

root@kitploit:~
.
├── report/
│   ├── report.pdf            # the full technical report (read this first)
│   ├── report.md             # report source (Pandoc/XeLaTeX)
│   └── images/               # figures and screenshots
├── docker/
│   ├── vulnerable/Dockerfile # GeoServer 2.25.1 (vulnerable)
│   └── patched/Dockerfile    # GeoServer 2.25.2 (fixed)
├── docker-compose.yml        # vuln on :8080, patched on :8081
├── exploit/
│   ├── exploit.py            # exploit + vuln/patched verifier (stdlib only)
│   ├── exploit.sh            # curl-based PoC (GET + POST variants)
│   ├── payloads.md           # payload catalogue per OGC endpoint
│   └── output/               # captured proof logs and transcripts
└── run-reproduction.sh       # one command: build + exploit both + collect proofs

Démarrage rapide

Prérequis : Docker Desktop en fonctionnement, python3, curl.

root@kitploit:~
# Build both containers, run the exploit against each, and collect the proofs
chmod +x run-reproduction.sh
./run-reproduction.sh

Ou étape par étape :

root@kitploit:~
docker compose up -d --build       # vuln on :8080, patched on :8081

# Vulnerable (expected: VULNERABLE, ~8s delay)
python3 exploit/exploit.py -t http://localhost:8080/geoserver --label vuln -o exploit/output

# Patched (expected: PATCHED, immediate rejection)
python3 exploit/exploit.py -t http://localhost:8081/geoserver --label patched -o exploit/output

docker compose down                # when finished

Comment fonctionne l'exploit

Deux sondes indépendantes rendent le résultat sans ambiguïté :

  • Aveugle (basé sur le temps) : java.lang.Thread.sleep(8000) bloque le thread qui évalue le XPath, de sorte que la réponse HTTP est retardée d'environ 8 s — mesurable depuis le client, sans accès au conteneur. C'est le même canari utilisé par les tests officiels du correctif.
  • Fichier (exécution de commande) : exec(java.lang.Runtime.getRuntime(),'touch /tmp/<marker>') crée un fichier à l'intérieur du conteneur, vérifiable avec docker exec.

Sur l'instance vulnérable, envoyer la charge utile à la main renvoie une ClassCastException sur ProcessImpl — la JVM a exécuté Runtime.exec puis n'a pas pu utiliser l'objet Process résultant comme attribut. Cette exception est la preuve de l'exécution :

WFS GetPropertyValue avec charge utile exec renvoyant une ClassCastException sur l'instance vulnérable

Le correctif

Le commit e53e5170 de GeoTools (dans GeoServer 2.25.2, 2.24.4, 2.23.6, 2.22.6) applique une défense en profondeur sur les deux moitiés du bug :

  • Puits : un assistant JXPathUtils.newSafeContext(...) installe une FunctionLibrary vide, de sorte que JXPath ne peut plus résoudre exec/Thread.sleep comme des fonctions — la chaîne reste un simple nom de propriété.
  • Portée : FeaturePropertyAccessorFactory vérifie maintenant aussi SimpleFeatureType, de sorte que les entités simples n'atteignent plus l'accesseur vulnérable.

Sur l'instance patchée, la même charge utile renvoie No such attribute: ... et rien ne s'exécute.

Les détails complets — code affecté avec références de fichier/ligne, exploitation, diff de mitigation et la reproduction côte à côte — se trouvent dans report/report.pdf.

Utilisation responsable

Ce CVE est public, a été patché depuis plus de 18 mois, figure dans le catalogue CISA Known Exploited Vulnerabilities et dispose de PoCs publics (Vulhub, Nuclei, Metasploit). Le code ici cible uniquement localhost et les conteneurs d'étude isolés de ce dépôt. Ne l'utilisez pas contre des systèmes que vous ne possédez pas ou pour lesquels vous n'êtes pas explicitement autorisé à tester.

Licence

MIT © 2026 Daniele Giovanardi

Auteur

Daniele Giovanardi — Data Science and Management (DASMA), LUISS Guido Carli. Travail de cours pour Data Privacy and Security.

Télécharger l’outil
ChampValeur
CVE (GeoServer)CVE-2024-36401
Cause racine (GeoTools)CVE-2024-36404
TypeExécution de code à distance non authentifiée
CWECWE-95, Injection d'évaluation
CVSS v3.19.8 Critical (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)
AffectéGeoServer < 2.25.2 / GeoTools < 31.2 (et branches antérieures)
CISA KEVOui (15 juillet 2024)
Versions étudiéesVulnérable 2.25.1, patchée 2.25.2