
의도적으로 취약하게 만든 Spring 앱으로 CVE-2022-22965를 테스트하기 위함
자세한 내용: https://www.fracturelabs.com/posts/effective-spring4shell-scanning-exploitation/
다음 코드는 아래 구성 요소를 사용하여 취약한 Docker 이미지를 빠르게 빌드합니다.
git clone https://github.com/fracturelabs/spring4shell_victim.git
cd spring4shell_victim
docker image build -t spring4shell_victim .
docker container run -it -p 8080:8080 --name spring4shell_victim --rm spring4shell_victim
두 개의 경로가 정의되어 있습니다: /spring4shell_victim 및 /spring4shell_victim/vulnerable. 이를 사용하여 스캐닝 도구가 제대로 작동하는지 확인할 수 있습니다. 기본 경로(/)는 의도적으로 취약하지 않게 설정되어 있어, 스캐닝 도구를 구성하여 취약한 엔드포인트를 찾는 방법에 대해 생각하게 합니다.
# 이 경로는 취약하지 않음
curl -is localhost:9000/spring4shell_victim/?class.module.classLoader.URLs%5b-1%5d
# 이 경로는 취약함
curl -is localhost:9000/spring4shell_victim/vulnerable?class.module.classLoader.URLs%5b-1%5d

컨테이너의 셸에 접속하여 /usr/local/tomcat/webapps/ 디렉터리를 확인함으로써 코드가 올바르게 배포되었는지 검증할 수 있습니다.
docker exec -it spring4shell_victim /bin/bash
참고: 위 POC 코드는 감지할 수 있는 충돌(500 오류)만 발생시킵니다. 실제로 코드를 업로드하지는 않습니다.