Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
cve-2024-36401-geoserver-rce — Studio riproducibile di CVE-2024-36401: RCE non autenticata in GeoServer tramite iniezione JXPath eval. Include rapporto tecnico, exploit/verificatore funzionante e ambiente Docker che dimostra il difetto su istanze vulnerabili e patchate. | Kitploit
Strumenti/GitHubGitHub/danielegiovanardi2408/cve-2024-36401-geoserver-rce
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebCTFPenetration TestingApprendimento e Formazione
GitHubdanielegiovanardi2408/cve-2024-36401-geoserver-rce

cve-2024-36401-geoserver-rce

Studio riproducibile di CVE-2024-36401: RCE non autenticata in GeoServer tramite iniezione JXPath eval. Include rapporto tecnico, exploit/verificatore funzionante e ambiente Docker che dimostra il difetto su istanze vulnerabili e patchate.

Vedi Repository
103 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2024-36401 — RCE non autenticata in GeoServer

CVE CVSS CISA KEV Type License

Uno studio completo e riproducibile di CVE-2024-36401, una vulnerabilità di esecuzione remota di codice non autenticata in GeoServer — il server open-source più diffuso per dati geospaziali. Il bug è un'eval injection: tramite i parametri degli standard OGC, GeoServer passa dei nomi di proprietà controllati dall'attaccante a GeoTools, dove Apache Commons JXPath li valuta come espressioni XPath e, per progettazione, può chiamare metodi Java arbitrari tramite reflection. Una richiesta non autenticata come exec(java.lang.Runtime.getRuntime(),'id') esegue quindi comandi sull'host.

Questo repository contiene il report tecnico, un exploit/verificatore funzionante e un ambiente Docker avviabile con un comando che dimostra la RCE su un'istanza vulnerabile e mostra lo stesso exploit fallire su quella patchata.

Progetto educativo. Realizzato per un corso universitario (Data Privacy and Security, LUISS DASMA). Tutto viene eseguito solo contro container locali e isolati — vedi Uso responsabile.

A colpo d'occhio

CampoValore
CVE (GeoServer)CVE-2024-36401
Causa principale (GeoTools)CVE-2024-36404
TipoEsecuzione remota di codice non autenticata
CWECWE-95, Eval Injection
CVSS v3.19.8 Critical (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)
Versioni affetteGeoServer < 2.25.2 / GeoTools < 31.2 (e branch precedenti)
CISA KEVSì (15 luglio 2024)
Versioni studiateVulnerabile 2.25.1, patchata 2.25.2

Struttura del repository

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

Avvio rapido

Requisiti: Docker Desktop in esecuzione, python3, curl.

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

Oppure passo dopo passo:

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

Come funziona l'exploit

Due sonde indipendenti rendono il risultato inequivocabile:

  • Blind (basata sul tempo): java.lang.Thread.sleep(8000) blocca il thread che valuta l'XPath, quindi la risposta HTTP viene ritardata di ~8 s — misurabile dal client, senza bisogno di accesso al container. È la stessa canary usata dai test ufficiali della correzione.
  • File (esecuzione di comandi): exec(java.lang.Runtime.getRuntime(),'touch /tmp/<marker>') crea un file dentro il container, verificabile con docker exec.

Sull'istanza vulnerabile, l'invio manuale del payload restituisce una ClassCastException su ProcessImpl — la JVM ha eseguito Runtime.exec e poi non è riuscita a usare l'oggetto Process risultante come attributo. Quell'eccezione è la prova dell'esecuzione:

WFS GetPropertyValue with exec payload returning a ClassCastException on the vulnerable instance

La correzione

Il commit e53e5170 di GeoTools (in GeoServer 2.25.2, 2.24.4, 2.23.6, 2.22.6) applica una difesa in profondità su entrambe le metà del bug:

  • Sink: un helper JXPathUtils.newSafeContext(...) installa una FunctionLibrary vuota, così JXPath non può più risolvere exec/Thread.sleep come funzioni — la stringa resta un semplice nome di proprietà.
  • Scope: FeaturePropertyAccessorFactory ora controlla anche SimpleFeatureType, così le feature semplici non raggiungono più l'accessor vulnerabile.

Sull'istanza patchata lo stesso payload restituisce No such attribute: ... e non viene eseguito nulla.

I dettagli completi — codice interessato con riferimenti a file/righe, sfruttamento, diff della mitigazione e riproduzione affiancata — sono in report/report.pdf.

Uso responsabile

Questa CVE è pubblica, è stata corretta da oltre 18 mesi, è presente nel catalogo CISA Known Exploited Vulnerabilities e dispone di PoC pubblici (Vulhub, Nuclei, Metasploit). Il codice qui presente ha come target solo localhost e i container di studio isolati di questo repository. Non usarlo contro sistemi che non possiedi o per i quali non sei esplicitamente autorizzato a eseguire test.

Licenza

MIT © 2026 Daniele Giovanardi

Autore

Daniele Giovanardi — Data Science and Management (DASMA), LUISS Guido Carli. Elaborato per il corso di Data Privacy and Security.

Scarica lo strumento