
CVE-2021-21234 Spring Boot Directory Traversal
spring-boot-actuator-logview è una libreria che aggiunge un semplice visualizzatore di file di log come endpoint dell'attuatore Spring Boot. È il pacchetto Maven “eu.hinsch:spring-boot-actuator-logview”. Nelle versioni di spring-boot-actuator-logview precedenti alla 0.2.13 esiste una vulnerabilità di directory traversal. Lo scopo della libreria è esporre la directory dei file di log tramite un endpoint HTTP di amministrazione (Spring Boot Actuator). Il nome del file da visualizzare e la cartella di base (relativa alla radice della cartella dei log) possono essere specificati tramite parametri di richiesta. Sebbene il parametro filename venga controllato per prevenire attacchi di directory traversal (quindi filename=../somefile non funzionerà), il parametro della cartella di base non viene controllato adeguatamente, quindi filename=somefile&base=../ può accedere a file al di fuori della directory di base dei log. La vulnerabilità è stata corretta nella versione 0.2.13. Qualsiasi utente della 0.2.12 dovrebbe essere in grado di aggiornare senza problemi, poiché in questa versione non ci sono altre modifiche. Non esiste un modo per risolvere questa vulnerabilità se non aggiornare o rimuovere la dipendenza. Tuttavia, rimuovere i permessi di lettura dell'utente che esegue l'applicazione su qualsiasi directory non necessaria all'applicazione può limitare l'impatto. Inoltre, l'accesso all'endpoint logview può essere limitato distribuendo l'applicazione dietro un proxy inverso.
eu.hinsch.spring.boot.actuator.logview.LogViewEndpoint#view
La funzione view valida il parametro filename, ma non valida il parametro base.
Percorso GET:
- "{{BaseURL}}/manage/log/view?filename=/windows/win.ini&base=../../../../../../../../../../" # Windows
- "{{BaseURL}}/log/view?filename=/windows/win.ini&base=../../../../../../../../../../" # windows
- "{{BaseURL}}/manage/log/view?filename=/etc/passwd&base=../../../../../../../../../../" # linux
- "{{BaseURL}}/log/view?filename=/etc/passwd&base=../../../../../../../../../../" # linux