
Apache Tomcat CVE-2025-55752 디렉터리 트래버설 취약점을 Rewrite Valve를 통해 탐지하고 악용하여, PUT 기반 JSP 업로드 및 원격 코드 실행을 가능하게 합니다.
🚨🚨 CVE-2025-55752 — Apache Tomcat: Rewrite Valve를 통한 디렉터리 보호 우회 → PUT 기반 RCE🚨🚨 요약
CVE-2025-55752는 버그 #60013을 수정하는 과정에서 Apache Tomcat에 도입된 보안 회귀(regression)입니다. Rewrite Valve가 사용될 때 Tomcat은 URL 디코딩 전에 *경로 정규화(path normalization)*를 적용합니다. 이 잘못된 순서로 인해 조작된 URI가 /WEB-INF/ 및 /META-INF/와 같은 보호 경로에 대해 StandardContextValve.java에 구현된 접근 검사를 우회할 수 있습니다. 서버가 HTTP PUT 요청을 허용하거나(또는 쓰기 가능한 파일 업로드 엔드포인트를 노출하는 경우) 공격자는 악성 아티팩트(예: .jsp 또는 직렬화된 세션)를 업로드하여 원격 코드 실행(RCE)을 달성할 수 있습니다.
🚨 영향을 받는 버전
rewrite/정규화 변경 사항이 포함된 이전 수명 종료(EOL) Tomcat 브랜치도 영향을 받을 수 있습니다. 특정 배포판/벤더 빌드에 대해 확인하십시오.
🚨 영향
PUT(또는 기타 쓰기 가능한 엔드포인트)이 활성화되어 있거나 웹앱이 충분한 검증 없이 파일 업로드를 허용하는 경우.🚨🚨 기술적 세부 사항(간결)
/WEB-INF/ 및 /META-INF/에 대한 StandardContextValve 보호를 우회하는 URI를 조작합니다.PUT을 허용하거나 웹앱 문서 루트 아래에 파일을 배치하는 파일 업로드 엔드포인트가 있는 경우, 공격자는 서버가 제공/실행하는 위치에 .jsp 또는 기타 실행 가능한 콘텐츠를 작성하여 RCE를 초래할 수 있습니다.수정 및 방어 전략
즉시 조치(권장)
Tomcat 업그레이드 — 가능한 한 빨리 수정된 지원 릴리스로 업그레이드하십시오:
즉시 업그레이드가 불가능한 경우(임시 완화 조치)
HTTP PUT 비활성화 — 서버, 커넥터 또는 리버스 프록시 수준에서 비활성화합니다(예: 웹 서버 구성 또는 방화벽 규칙).
Rewrite 규칙 강화/제거 — 쓰기 가능한 위치로의 임의 재작성을 허용하는 규칙을 제거하고, 특히 쿼리 매개변수를 파일 경로로 재작성하거나 전달하는 규칙을 제거합니다.
웹 애플리케이션의 파일 업로드 처리 강화:
/WEB-INF/, /META-INF/ 또는 애플리케이션 클래스패스 아래에 파일을 배치하려는 업로드를 거부합니다.악용 URI 필터링/차단 — 경계(WAF/리버스 프록시)에서 /WEB-INF 또는 /META-INF 보호를 우회하려는 의심스러운 인코딩된 페이로드 및 패턴을 차단합니다.
파일 저장소에 대한 최소 권한 — 웹앱 프로세스가 컨테이너가 제공하거나 실행하는 디렉터리에 쓸 수 없도록 합니다.
기능 개요
이 도구는 공식 CVE-2025-55752 설명을 기반으로 2단계 탐지를 수행합니다:
Apache Tomcat의 Rewrite Valve에서 디코딩 전 URL 정규화의 잘못된 순서를 악용하여 /WEB-INF 또는 /META-INF와 같은 보호된 위치로의 경로 탐색을 허용합니다.
HTTP PUT을 통해 테스트 JSP 파일을 업로드한 다음, 보호 메커니즘을 우회하여 업로드된 파일에 접근할 수 있는지 확인합니다.
보호된 디렉터리로의 경로 탐색 가능 여부 확인:
python3 cve_2025_55752_detector.py http://target:8080 --check
JSP 파일 업로드 및 접근 우회 테스트:
python3 cve_2025_55752_detector.py http://target:8080
🔧 파일 이름 및 페이로드 콘텐츠 사용자 지정:
python3 cve_2025_55752_detector.py http://target:8080 --filename exploit.jsp --payload "<% out.println('PWNED'); %>"