
CVE-2021-21234 Recorrido de directorios en Spring Boot
spring-boot-actuator-logview añade un simple visor de archivos de registro como endpoint del actuator de Spring Boot en una biblioteca. Es el paquete Maven «eu.hinsch:spring-boot-actuator-logview». Existe una vulnerabilidad de recorrido de directorios en spring-boot-actuator-logview anterior a la versión 0.2.13. La esencia de la biblioteca es exponer el directorio de archivos de registro a través del endpoint HTTP admin (actuator de Spring Boot). Tanto el nombre del archivo a ver como la carpeta base (relativa a la raíz de la carpeta de registros) pueden especificarse mediante parámetros de solicitud. Aunque el parámetro del nombre de archivo se comprueba para evitar ataques de recorrido de directorios (por lo que filename=../somefile no funcionará), el parámetro de la carpeta base no se comprueba adecuadamente, por lo que filename=somefile&base=../ puede acceder a archivos fuera del directorio base de registro). La vulnerabilidad se ha corregido en la versión 0.2.13. Cualquier usuario de 0.2.12 debería poder actualizar sin problemas, ya que no hay otros cambios en esa versión. Aparte de actualizar o eliminar la dependencia, no hay forma de solucionar esta vulnerabilidad. Sin embargo, eliminar los permisos de lectura del usuario que ejecuta la aplicación sobre cualquier directorio que no sea necesario para su funcionamiento puede limitar el impacto. Además, el acceso al endpoint logview puede restringirse desplegando la aplicación detrás de un proxy inverso.
eu.hinsch.spring.boot.actuator.logview.LogViewEndpoint#view
La función view valida el parámetro filename, pero no valida el parámetro base.
Ruta 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