翻译:shan66
预估稿费:120RMB
投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿
前言
你知道吗?你可以轻松把普通的文件选择器变成文件夹选择器,为此,只需将属性“webkitdirectory”添加到type ='file'的给定输入元素中就行了。
当然,与文件夹选择器不同的是,您最终会加载给定文件夹中的所有文件。这是一个明显的漏洞,机不可失,一阵忙活之后,我最终在三种主流浏览器中找到了一些相关的安全漏洞。
下面,我会针对不同的浏览器分别进行介绍。
火狐浏览器
我已经提交了三个与Mozilla的webkitdirectory功能有关的安全漏洞。幸运的是,文件夹选择器仅在Mozilla的Nightly版本的浏览器中提供了相应的实现,这个版本是在稳定版本发布之前用来测试新功能的。
Bug 1295914——webkitdirectory可以用来引诱用户允许访问任意文件夹(SEC-MEDIUM)
我报告的文件夹选择器方面的第一个安全漏洞与不良语义有关。这个安全漏洞是受到了Google Chrome中修复的一个漏洞的启发而找到的,这种漏洞可用来欺骗毫无戒心的用户。
Bug 1319370(CVE-2017-5414)webkitdirectory——操作系统用户名泄露(SEC-MEDIUM)
我认为第二个漏洞是泄露本地文件的关键所在。这里的问题在于,当文件选择器被打开一次后,那么第二次打开它时,它会“降级”文件夹。
所以我制作了一个PoC,其效果为:如果我们诱骗受害者按住“Enter”键,同时弹出一个文件夹,就能导致用户在不知情的情况下“挑选”某些文件夹。
为了获取操作系统用户名,受害者需要按住用于两个文件夹对话框的确认按钮,因为(在Windows上)默认目录是'C:\ Users \ {username} \ Desktp \'。
这是利用这个漏洞时所依赖的主要用户互动,这主要是受到了一个较旧的Mozilla漏洞的启发。另一种方式是欺骗用户反复按下某个位置并弹出文件夹,这样的话“confirm pick”按钮将被自动按下。
Bug 1338637——任意输入本地文件[webkitdirectory](SEC-MEDIUM)
我发现,如果在用户按下“Enter”键时弹出一个文件夹的话,那么我们可以欺骗受害者,使我们可以访问默认目录中的所有文件。当然,这种方式还是有一些局限性的,因为在Windows操作系统上,似乎只有“我的文档”文件夹受此影响。
如果它是一个"我的文档"之外的文件夹,如“桌面”(默认),则不会加载任何东西。但是,在其他操作系统上,情况就不同了。
幸运的是,我们前面说过有一个漏洞,其中文件夹将在文件夹选择器使用后“降级”,所以这里可以利用这一点。
以下是原始的PoC。请注意,单凭第一个安全漏洞是远远不够的,只有在组合第二个和第三个安全漏洞之后,才最终得到了一个PoC。
微软Edge浏览器
我在Edge中发现了一个类似的安全漏洞,不同之处在于默认目录是“我的文档”,所以我在报告中指出,文件夹选择器可以用来接收受害者文档文件夹中的所有文件。
这个漏洞目前已经被修复了。
原始PoC:
谷歌浏览器
在这些漏洞方面,谷歌是第一家与我接洽的供应商。最初收到的评级为SEC-MEDIUM,后来更改为SEC-LOW,然后就石沉大海了。事实证明,如果有人尝试大规模使用这种类型的漏洞的话,Chrome就能检测到这种类型的漏洞,因为浏览器会自身提供了相应的安全记录。
截至目前为止,我虽然没有完全搞明白,但我相信他们的意思是,他们可以检测和阻止任何恶意网站,如果相应文件夹上传器的使用率陡升的话。在2007年4月13日向微软提交PoC报告时,该PoC仍然在Chrome上有效。
最糟糕的是,如果文件夹选择器默认为'C:\',您就能够读取整个磁盘——因为文件夹选择器会上传所有子目录中的全部文件。
参考文献
Arbitrary local files disclosure in input[webkitdirectory] bug report: https://bugzilla.mozilla.org/show_bug.cgi?id=1338637
(CVE-2017-5414) webkitdirectory - OS username disclosurehttps://bugzilla.mozilla.org/show_bug.cgi?id=1319370
webkitdirectory could be used to trick users into allowing access to arbitrary foldershttps://bugzilla.mozilla.org/show_bug.cgi?id=1295914
(CVE-2016-7239) Microsoft Edge Information Disclosure Vulnerabilityhttps://technet.microsoft.com/library/security/mt674627.aspx
Google bug reporthttps://bugs.chromium.org/p/chromium/issues/detail?id=637098