↗点击上方“Web安全与前端”关注我们
你知道可以把常用的文件选择器变成文件夹选择器吗?把属性“webkitdirectory”添加到 type ='file' 的input标签上即可。 显然,与文件选择器不同,你最终会可以通过这个选择器加载所选文件夹中的所有文件。显而易见,这有一个明显的bug,所以在一系列尝试之后,我最终在三个主要的浏览器中测到一些漏洞。 我会分别写每个浏览器,因为每个浏览器的案例与其他浏览器的都有所不同。
火狐浏览器
我已经提交了火狐浏览器webkitdirectory属性的三个不同的漏洞。幸运的是,这个文件夹选择功能仅在Mozilla的Nightly浏览器中实现,这个浏览器是在稳定版本发布之前测试新功能的用的。
Bug 1295914 - webkitdirectory可以用来诱骗用户允许访问任意文件夹**(SEC-MEDIUM)**
我报告的涉及文件夹选择器的第一个漏洞是错误的表示符号。这个漏洞受到[1]一个谷歌已经修复的早期的bug的启发, 其中出现了关于交互提示描述不清楚的问题。这可能导致那些无意识的用户受到欺骗。
[1]https://bugs.chromium.org/p/chromium/issues/detail?id=252888
Bug 1319370**(CVE-2017-5414)**webkitdirectory - 操作系统用户名泄露(SEC-MEDIUM)
我认为第二个错误是实现完整的本地文件泄露的关键因素。这里的问题是,当一个文件选择器被打开一次,那么第二次打开它会向后退到上一层文件夹。
所以我做了一个PoC,它展示了,如果我们让一个被攻击者一直按着'Enter'键,同时我们弹出一个文件夹选择器,这将导致用户在无意识下“选择”文件夹。
为了获取操作系统用户名,被攻击者需要在弹出两次文件选择框时一直按住‘enter’键即可,因为(在Windows上)文件选择器默认目录是'C:\ Users\ {username}\ Desktp\'。 这是当我们试图利用这个漏洞时所需要的主要用户交互,它受到了早期Mozilla bug的启发。
另一种方式是欺骗用户反复选择一个确定的路径并弹出文件夹选择器,这样“确认选择”按钮将被自动按下。 Bug 1338637 - 任意的本地文件输入泄露**[webkitdirectory]****(SEC-MEDIUM)**
我发现如果你可以在用户按下“Enter”键的时弹出一个文件选择器,那么我们可以欺骗用户让我们可以访问默认目录下的所有文件。这有一些限制,因为在Windows操作系统上,似乎只有“我的文档”文件夹会受此影响。
如果它是一个不同的文件夹,如“桌面” (默认的)它不会加载任何东西。这在其他任何操作系统上是不同的。
幸运的是,我们之前有一个漏洞,在使用了文件夹选择器后文件路径会到达上层,所以我在我的漏洞报告中使用了这一点。
以下是原始的PoC报道。请注意,第一个漏洞并没有真正的PoC代码(除了filepicker html),我把第二个和第三个漏洞组合成了一个PoC。
微软Edge
我报告了IE Edge浏览器的一个类似的bug,区别在于默认目录是“我的文档”,因此,我展示了文件夹选择器可以获取被攻击者的文档文件夹的所有文件
这个bug目前已经被修复了
原始的POC:
谷歌浏览器
Google是我联系的第一个确认这个问题的厂商。在最初收到SEC-MEDIUM评级,后来更改为SEC-LOW并忽略了几个月(〜6)。事实证明,如果有人试图上传大规模的文件时chrome可以检测到这种类型的bug,因为它是记录在浏览器安全日志中的
但是我仍然感到困惑,但是我相信他们的意思是,他们可以检测和阻止任何突然大量使用上传文件夹功能的恶意网站。在2017/4/13日写这篇文章的时候,提交给微软的POC仍然能够使用。
最糟糕的是,如果文件夹选择器被默认在C:\,你将可以读取整个硬盘,因为文件夹选择器会上传所有子目录下的所有文件。
参考文献:
[1]任意本地文件披露输入[webkitdirectory]错误报告: https : //bugzilla.mozilla.org/show_bug.cgi?id=1338637
[2](CVE-2017-5414)webkitdirectory - 操作系统用户名泄露:https://bugzilla.mozilla.org/show\_bug.cgi?id=1319370
webkitdirectory可以用来诱使用户允许访问任意文件:https://bugzilla.mozilla.org/show\_bug.cgi?id=1295914
[3](CVE-2016-7239)微软Edge信息泄露漏洞:https://technet.microsoft.com/library/security/mt674627.aspx
[4]Google错误报告:https://bugs.chromium.org/p/chromium/issues/detail?id=637098
作者:Abdulrahman Al-Qabandi
出处:http://leucosite.com/Chrome-Firefox-Edge-Local-File-Disclosure/
安全&前端
长按二维码
关注我们