Vite 任意文件读取漏洞分析
速看版本
根据已有的poc(/@fs/etc/passwd?import&?inline=1.wasm?init) ,全局搜索 找到正则
查看调用,很丝滑的文件读取
前置分析
在读取之前,也会操作map结尾的文件。意义不大难得细看,看其它类型的操作
url匹配(上面截图的正则),后续会跟到inline,不细说。
重点开始
在看本期的重点,满足id.endsWith(".wasm?init"),调用fileToUrl$1(this, id);也就是结尾需要满足.wasm?init
继续向下(俩方法都可以读这里默认走的fileToDevUrl(environment, id)),这里读取了file。
id调用cleanUrl生成file,会替换?#后面的内容,就只保留原始的数据了。如/etc/shadow?&raw??会被替换为/etc/shadow
未公开poc
观察上面的截图,除了inline满足,走svg也能满足读取读取文件
需要满足的要求如下
那么可以构造一个满足条件的路径出来
/@fs/etc/shadow?logo.svg?.wasm?init
所以最后的要求如下
(1)结尾是.wasm?init
(2)可以选择inline和svg的正则绕过
原文始发于微信公众号(e0m安全屋):vite 漏洞分析
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论