Lab di riproduzione locale per Apache Tomcat CVE-2025-24813, che documenta le condizioni di sfruttamento e la verifica assistita dall'IA della vulnerabilità.
Solo per esperimenti locali autorizzati, comprensione delle patch e verifica difensiva. Non inviare richieste a target non autorizzati.
Questo progetto documenta il processo di riproduzione di CVE-2025-24813 su un'istanza locale di Apache Tomcat 9.0.98: utilizzando partial PUT per scrivere file temporanei, in una configurazione con persistenza delle Session basata su file abilitata e condizioni di filtro di deserializzazione permissive, si verifica il caricamento del file di Session e la catena di esecuzione del Payload.
.inject.session nella directory di lavoro, poi conferma che l'accesso attiva il caricamento della Session e l'esecuzione del Payload; non è possibile giudicare il successo basandosi solo sul codice di stato HTTP.409 o 500, ma la scrittura del file e l'attivazione successiva devono comunque essere valutate per fasi, combinando il contenuto del file, i log del server e gli effetti collaterali controllati.L'avviso di sicurezza ufficiale di Apache elenca i prerequisiti di attivazione, l'ambito di impatto (Tomcat 9.0.0-M1 fino a 9.0.98) e le informazioni sulla correzione in 9.0.99 per CVE-2025-24813: https://tomcat.apache.org/security-9
java -version)requests127.0.0.1:8080 localescripts/reproduce_local.py # Script di verifica locale, target predefinito localhost:8080
evidence/ # Screenshot dell'esperimento (rinominati per passaggio)
python3 -m venv .venv
. .venv/bin/activate
python -m pip install requests
python scripts/reproduce_local.py
Il target nello script è fissato all'indirizzo dell'esperimento locale e non include logica di scansione remota. Prima dell'esecuzione, verificare nell'istanza Tomcat locale:
work/Catalina/localhost/ROOT siano osservabili.PUT /inject/session con Content-Range, osservare se viene generato il file temporaneo;work/Catalina/localhost/ROOT/.inject.session;JSESSIONID=.inject, osservare il caricamento del file di Session;409/500 come fallimento o successo della riproduzione della vulnerabilità.Le intestazioni HTTP devono utilizzare veri CRLF (byte 0d 0a), non inviare 0x0d0x0a come testo visibile. In Python si deve usare b"\\r\\n" o lasciare che requests costruisca le intestazioni della richiesta.
Aggiornare con priorità alla versione di Tomcat che contiene la correzione e ricontrollare i permessi di scrittura della Default Servlet, gli scenari d'uso del partial PUT e la configurazione del filtro di persistenza della Session. Dopo la correzione, ripetere la stessa serie di passaggi di verifica locale, aspettandosi che la catena di scrittura dei file temporanei o la catena di caricamento della Session non siano più valide.
Questo repository non fornisce funzionalità di scansione, persistenza o sfruttamento massivo rivolte a target Internet. Tutti i contenuti sono limitati ad ambienti di esperimento locali sotto il proprio controllo e a range di test esplicitamente autorizzati.