Tomcat RCE(CVE-2025-24813)复现

06-01 1383阅读

漏洞原理

概况

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

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

  1. 应用程序启用了DefaultServlet写入功能
    1. 该功能默认关闭
  2. 应用支持了 partial PUT 请求,能够将恶意的序列化数据写入到会话文件中
    1. 该功能默认开启
  3. 应用使用了 Tomcat 的文件会话持久化并且使用了默认的会话存储位置
    1. 需要额外配置
  4. 应用中包含一个存在反序列化漏洞的库,比如存在于类路径下的 commons-collections,此条件取决于业务实现是否依赖存在反序列化利用链的库

原理分析

Content-Range

Content-Range 在 Tomcat 的HTTP PUT请求中主要用于实现大文件的分块传输。

Content-Range: bytes 0-1000/1200 表示

  • 文件总大小是1200字节
  • 本次上传的是前1001字节(0-1000)
  • 后续上传剩余部分(1001-1200)
    partial PUT

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

    • $CATALINA_BASE/work/Catalina/localhost/ROOT
      核心漏洞点

      该漏洞的核心在于不完整PUT请求上传时的文件名处理机制:

      • 文件路径中的分隔符 / 会被转换为  .

        例如:访问 /xxxxx/session 会被解析为 .xxxxx.session

        利用过程

        整个漏洞的利用过程为:

        1. Tomcat的File会话存储默认路径同样位于:
          1. CATALINA_BASE/work/Catalina/localhost/ROOT
        2. 当存在反序列化利用链时,可以上传包含恶意序列化数据的文件
        3. 通过设置 JSESSIONID=.xxxxx 来触发漏洞(这里的 .xxxxx 是因为之前的 /xxxxx/session )

        影响版本

        • 9.0.0.M1
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码