利用Microsoft Edge漏洞窃取本地文件

在2015年,微软宣布了Edge浏览器。当它最初被开拓时,它被命名为Project Spartan。

与Internet Explorer不合,Edge支持更为广泛的今世安然步伐,如内容安然策略(CSP),以及今世JavaScript和CSS特点。放弃InternetExplorer,转而开拓诸如Edge之类的今世浏览器,这带来了浏览器安然性的增强,但也带来了一些潜在的问题。

在类似的新项目开拓中,有一件事常常被漠视,那便是从多年来对原有产品的安然修复中罗致履历。有相关事情履历的人应该都邑知道,在开拓新浏览器的历程中,你的团队最初可能会经历更多的差错。

缘故原由在于,跟着新型进击技巧的呈现,浏览器的安然性也是一个必要被赓续从新开拓的历程,由于浏览器被黑客和安然专业人士视为潜在进击面最为富厚的滥觞之一。在以前的几年里,一些能够导致浏览器顶用户数据遭泄露的安然破绽已经被修复,开拓职员完全可以从中罗致履历,但事实证实,这些履历并没有在新浏览器的开拓历程中被运用。

这或许恰恰可以解释为什么Microsoft Edge是我发明的独逐一个易受此破绽影响的浏览器。

当然,这里必要提一下,此破绽今朝已经被微软修复。

那些版本受破绽影响?

我已经在Microsoft Edge 40.15063.0.0上测试了这个破绽,并取得了成功。

若何偷取本地文件?

首先,我们必要懂得,是什么导致我无法偷取到你的本地文件?

我很肯定的奉告你,这是因为浏览器采纳了同源策略(SOP)。举个例子来阐明一下,同源策略(SOP)会阻拦https://attacker.com读取file://C:/your/stuff.txt中的内容,这是由于它们不合源。假如要应用javascript哀求读取数据,那么对应的协议、主机名(hostname)和端口都必要匹配。但文件URL有点特殊,file:// protocol和https:// protocol是显着不合的,这也便是为什么进击者的域名不能读取你的本地文件的缘故原由。

那么,假如我们处置惩罚的两个file URL既没有主机名也没有端口(即只有文件协讲和路径),结果会是如何的呢?谜底很肯定,两个file URL将被默认来自相同源,由于:

端口匹配:由于没有端口;

主机名匹配:由于没有主机名;

协议匹配:都是file://;

换句话来说,假如浏览器开拓职员没有斟酌到file://url这种特殊款式,那么在浏览器中打开保存在你的谋略机上的恶意HTML文件,我就可以读取随意率性本地文件中的内容。

当然,你可能会孕育发生质疑:这并不是一个令人信服的进击向量。由于假如从未下载过任何HTML文件,这种进击就不会成立。此外,Windows也会阻拦此类文件,由于它来自另一台谋略机。切实着实如斯,在我测试进击时就发生过这样的环境。别发急,我们接着往下看。

这是一个真实的要挟吗?照样仅存在于理论上?

你弗成否认,进击者能够以各类要领说服潜在的受害者下载HTML文件并履行它?

因为这些进击向量的存在,是以这毫不会仅是一个理论上的要挟。假如你不能经由过程浏览器传播恶意HTML文件,那么为什么不直接经由过程电子邮件发送给受害者呢?在以前的几年里,我们就已经开始熟识到,打开诸如.exe文件、.js文件,以致是Word文档之类的未知附件都可能使自己置于危险之中,而HTML文件同样也不例外。

我在另一台谋略机上捏造了一封电子邮件,将HTML文件添加为附件,然后在“Mail and Calendar”利用中打开附件。我原以为这款利用会像Edge浏览器一样樊篱附件,但事实并非如斯。我将包孕恶意附件的电子邮件发送给了测试用户,当该用户打开附件后,许多本地文件被发送到了我的办事器上,而我完全可以在我的办事器上对这些文件进行转储和读取。可能是因为没有杀毒软件将该附件辨觉得恶意文件,是以我还可以经由过程HTTPS连接来提取文件,在这种环境下实施的进击绝对是足够隐秘的。这里顺带提一下,我所应用的“Mail and Calendar”版本为17.8600.40445.0。

必要留意的是,还有很多要领可以用来传播恶意文件,详细取决于目标谋略机已安装的利用。

若何保护自己的文件?

保护自己的独一措施是将Edge浏览器和“Mail and Calendar”利用更新至最新版本。别的,最好永世不要打开任何来自未知发件人的附件,纵然扩展名看起来并非恶意的。

PoC代码

html>head>script>let resultDiv = document.getElementById(“result”);let xhr= newXMLHttpRequest();let user =document.location.href.match(/file:\/\/\/C:\/Users\/([a-z0-9\-]*)\//i)[1];xhr.open(“GET”,’file://C:/Users/${user}/Desktop/secret.txt”);xhr.onreadystatechange= ()=> {if(xhr.readyState==4) {resultDiv.innerText = xhr.responseText;}}xhr.send();script>head>body>body>div id=”result”>div>html>

赞(0) 打赏
分享到: 更多 (0)
免责申明:本站所有资料均来自于网络,版权归原创者所有!本站不提供任何保证,不保证真实性,并不承担任何法律责任

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

阿里云优惠网 更专业 更优惠

阿里云优惠券阿里云大礼包