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

Apache Tomcat 远程代码执行漏洞(CVE-2025-24813)

一、漏洞概述

远程代码执行漏洞(CVE-2025-24813)源于Apache Tomcat的反序列化机制未对用户输入进行严格验证,攻击者可通过构造恶意序列化对象绕过安全限制,处理部分 PUT 请求时,攻击者利用临时文件路径处理中的缺陷(将路径分隔符"/"替换为“.”),通过特定条件(如启用默认 servlet 的写入功能)实现远程代码执行并控制服务器‌。

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

二、影响版本

Tomcat 11.0.0-M1 至 11.0.2

Tomcat 10.1.0-M1 至 10.1.34

Tomcat 9.0.0.M1 至 9.0.98‌

三、利用条件

‌1、DefaultServlet 写入功能启用‌

Tomcat 默认禁用文件上传功能,需在web.xml中手动配置 readonly=false 参数方可开启文件写入权限。

2、Partial PUT 请求处理机制‌

应用支持了 partial PUT 请求,能够将恶意的序列化数据写入到会话文件中,该功能默认开启

3、文件会话持久化配置缺陷‌

应用使用了 Tomcat 的文件会话持久化并且使用了默认的会话存储位置,需在context.xml中进行配置。

4、脆弱依赖库引入攻击链‌
业务系统中若存在包含高危反序列化链的组件(如 Commons Collections 3.2.1 等),攻击者可通过加载恶意序列化数据触发远程代码执行。

漏洞复现


一、环境搭建

本次漏洞复现选择Tomcat9.0.98+JDK8,在阿里云服务器使用Docker进行环境搭建

1、拉取指定版本的Tomcat镜像

2、运行Tomcat容器,命名为tomcat9并将容器端口映射到宿主机

3、此时访问页面回显是404,因为Tomcat9镜像默认webapps目录为空,需进入容器终端,复制默认应用到 webapps 目录

4、访问云服务器公网ip 8899端口出现Tomcat页面即搭建成功

5、随后进入到容器终端,进入/usr/local/tomcat/webapps/ROOT/WEB-INF目录创建一个名为lib的文件夹,用于存放高危反序列化链的组件。

6、下载commons-collections-3.2.1.jar的反序列化链组件,上传至云服务器,并移动到lib目录下

7、修改context.xml配置文件内容,用于启用会话持久化到文件系统

8、修改web.xml配置文件内容,用于开启文件写入权限

9、修改server.xml配置文件内容,用于启用分块上传(可绕过文件完整性校验,触发文件持久化)

至此,漏洞环境配置完成

二、漏洞实现

  1. 生成一个恶意的序列化数据,可使用yakit自带的Yso-Java Hack,此处命令意思是进入到ROOT目录并执行ls命令,将结果写入到1.txt文件中

cd /usr/local/tomcat/webapps/ROOT && ls > 1.txt

2、使用以下数据包上传序列化数据,需要注意Range的分块值需要与Length保持一致,且大于当前文件的长度。发包时要进行Base64解码

3、进入到/usr/local/tomcat/work/Catalina/localhost/ROOT,查看文件列表,发包后比发包前多了一个.yth.session的临时文件,请求URL中的 / 替换成了 .

4、使用以下PoC,主动加载.yth.session文件,触发反序列化

5、此时,网站ROOT目录下已写入1.txt文件,并且可正常访问

至此,此漏洞成功复现

漏洞poc:

PUT /xxxxx/session HTTP/1.1  

Host: ip:port  

Content-Length: 1000  

Content-Range: bytes 0-1000/1200  

{{反序列化文件内容)}}

GET / HTTP/1.1  

Host: ip:port  

Cookie: JSESSIONID=.xxxxx

### 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、付费专栏及课程。

余额充值