深入分析IE地址栏内容泄露漏洞

简介:

前言

在本文中,我们探讨的对象是IE浏览器,尽管该浏览器略显老态,但是其用户还是很多的,所以不容忽视。我最近对MSRC感到很欣喜,因为他们正在将工作重心移至Edge浏览器、设计漏洞,甚至提高了漏洞赏金,这看起来确实不错。

所有这些都是好消息,但我仍然认为现在就急着抛弃IE还为时尚早。例如,现在所有的IE用户在zombie脚本漏洞(已经公开数月,但是仍然尚未得到修补)面前都可能变成僵尸程序。千万不要忽视这个问题的严重性,请想象一下攻击者可以做什么:他们可以一直潜伏在你的浏览器中,当你浏览其他网站的时候,他们就有足够的时间做一些见不得光的事情,比如挖掘数字货币等。此外,IE的阻止弹出窗口功能已经被完全攻陷了,但是好像并没有引起人们的注意。总之,我认为这些漏洞应该得到修补,或至少给IE用户一个醒目的警告,比如“我们不再支持这个浏览器,请使用Microsoft Edge”。

在我看来,微软正在试图摆脱IE,这个毫无疑问。不过,如果直接告诉用户他们的旧版浏览器没有像Edge那样得到足够的维护会显得更诚实一些。根据Netmarketshare的统计显示,IE仍比Edge更受欢迎,两者用户之比是17% vs 6%。

我坚信在安全方面IE应该像Edge那样得到同等的对待,否则就应该完全放弃它。但是不管未来怎样,我们现在先来探讨一下IE上的另一个漏洞:允许攻击者知道用户将要浏览的地址。什么,这是读心术吗?不,当然不是,下面让我们来看看IE是如何让攻击者做出魔幻般的事情的。

摘要

当脚本在object-html标签内执行时,位置对象将获得焦点并返回主位置,而不是它自己的位置。 确切地说,它将返回写入地址栏中的文本。如果读者是急性子的话,可以先观看视频,了解一下攻击者是如何读取用户输入到IE地址栏内的内容的!

对象和文档模式

对象标签的行为方式取决于documentMode的渲染方式。 例如,如果我们在页面的开头添加兼容性元标记的话,它的外观和行为就像一个iframe,但它会认为这是一个顶层窗口。

 
  1. <head> 
  2.   <!-- COMPATIBILITY META TAG --> 
  3.   <meta http-equiv="X-UA-Compatible" content="IE=8" /> 
  4. </head> 
  5. <object data="obj.html" type="text/html"></object> 
  6.    
  7. <head> 
  8.   <!-- COMPATIBILITY META TAG --> 
  9.   <meta http-equiv="X-UA-Compatible" content="IE=8" /> 
  10. </head> 
  11. <object data="obj.html" type="text/html"></object> 

在上面的代码中,“obj.html”在对象内部进行渲染,并且其内容被放入与iframe类似的方框中,然而,虽然在窗口对象与顶层对象进行比较时返回值为true,但是它并非顶层窗口。我们可以看一下在对象标签内执行的代码:虽然它认为window == top,但是事实并非如此。

在IE上进行测试

我们的对象认为它是顶层窗口,甚至其他frameElement之类的成员也总是返回null——这种行为只出现在(IE的)顶层窗口中。

下面,让我们尝试相同的代码在没有兼容性标签的情况下会怎样。这时,该对象就能了解它所在的位置了,并且其行为类似于iframe。

在IE上进行测试

本质上,该对象在较旧的文档模式中被渲染为一个独立的实体,但在一个较新的文档模式中将被渲染为一个iframe。无论如何,在内部它们都是WebBrowser控件,所以Trident引擎会暴露相同的成员。

继承的窗口成员

让我们重新回到较旧的documentMode,寻找一种利用这个混淆漏洞的方法,不过事情貌似并不那么糟糕,因为跨域限制仍然存在,而且X-FRAME-OPTIONS头部的工作效果非常好。 有一些成员,如window.name,它们是通过对象继承得到的(该对象会继承其父对象的名称),不过这也不是太糟糕——但是某些广告技术会全地使用window.name来跨iframe传递信息,这种做法是很危险的。

话虽如此,至少有一个继承的对象真的会引起麻烦:位置。在对象标签内,location.href将返回主(顶层)窗口的位置。下面的代码将其对象的源指向object_location.html,但是当我们检索它的位置时,它返回的是顶层窗口。

在IE上进行测试

再次重申,这个混淆漏洞本身是没有用的,因为我们仍然在同一个域。即使我们可以找到一个顶层的位置,只要我们在同一个域,那也没有多大意思。为此,我尝试改变对象的位置,但没有成功。如果你想在这个领域进行研究,我建议可以更深入一些,因为我认为会有更多的可能性。无论如何,在尝试实现UXSS(持久性是现实攻击中一切的关键)时,我获得了一个惊喜:当对象被注入到onbeforeunload时,我们得到的不再是顶层窗口的位置,而是浏览器的将要到达的位置或当前写入地址栏的内容。

换句话说,如果我们在用户离开主页面的同时检索对象的location.href,我们将能够知道她在地址栏中输入的内容,或者如果点击链接,我们将会获悉浏览器要链接的地址。

这里,我们只是中断新站点的加载并展示用户的URL。当然,如果是攻击者的话,他们会直接回填地址并加载站点,并且这一切对于用户来说都是透明的。实际上,在用户离开时,我们直接执行document.write就行了。

 
  1. window.onbeforeunload = function() 
  2.   document.write('<object data="loc.html" type="text/html" width="800" height="300"></object>'); 
  3.   document.close(); 
  4.    
  5. window.onbeforeunload = function() 
  6.   document.write('<object data="loc.html" type="text/html" width="800" height="300"></object>'); 
  7.   document.close(); 

并在那个恰当的时刻读取位置(onbeforeunload)。

 
  1. document.write("Let me read your mind. You wanted to go here: " + location.href +); 

好了,现在我们就能在用户离开时获取对象位置,从而确切地知道她在地址栏中输入的内容。当然,它不一定是一个完整的URL,例如,如果用户在地址栏中输入单词,它将自动被转换为搜索查询URL(IE默认为Bing),这当然可以被完整读取!

在IE上进行测试




本文作者:佚名

来源:51CTO

相关文章
|
Web App开发 前端开发 安全
IE发现新的零日攻击漏洞 用户可采取缓解措施
11月4日消息,微软发布警告称,黑客正在对IE一个新的零日攻击漏洞进行新一轮的有针对性恶意软件攻击。这个安全漏洞能够让黑客实施远程执行任意代码攻击和路过式下载攻击。 微软在安全公告中称,这个安全漏洞是由于IE浏览器中的一个非法的标记参考引起的。
722 0
|
Web App开发 监控 安全
刚发补丁又曝漏洞 IE浏览器迎来“倒春寒”
微软刚刚发布3月安全更新的漏洞补丁,IE浏览器又曝出一个新的“内存破坏”漏洞,再加上还没得到修复的“F1按键”漏洞,IE浏览器因此将面临两大漏洞攻击。360安全中心为此提醒网民:上网时应使用360安全卫士等具备“防挂马”功能的安全软件,以免木马乘虚而入。
937 0
|
云安全 Web App开发 安全
瑞星提醒:IE漏洞(MS10-018)已感染1800万网民
4月8日,瑞星公司发布安全警报,根据“云安全”系统的数据,受最新IE漏洞(MS10-018)影响的受害网民数量仍在增加。此前,微软曾针对该漏洞发布了紧急升级补丁。但从数据结果来看,截至目前,仍有大约50%以上的网民没有打好补丁,他们很可能会受该漏洞影响,丢失账号、感染木马病毒等。
1248 0
|
JavaScript 安全 Java
Adobe Reader与IE 领衔漏洞榜
7月15日,据国外媒体报道,根据M86安全实验室本周三发布的报告,Adobe Reader和IE的漏洞被黑客利用的次数最多,而利用次数有所上升的是Java。 在M86统计的今年上半年15个被利用次数最多漏洞的列表中,有四个和Adobe reader有关,五个和IE有关。
784 0
|
Web App开发 安全 Windows
微软发表IE浏览器 F1漏洞安全公告
安全厂商上周揭露了微软IE的安全漏洞,并指出该漏洞影响Windows XP操作系统上的IE 6、IE 7及IE 8,可能导致远端程序攻击,微软则于本周一(3/1)发表该漏洞的安全公告。
694 0
|
Web App开发 存储 安全
微软浏览器再曝新漏洞 最新版IE8未能幸免
2月5日消息,据国外媒体报道,微软周三提醒用户,IE浏览器再曝新漏洞,最新版的IE8也未能幸免。 微软称,在特定情况下,该漏洞允许黑客获取用户计算机中所存储的文件。微软在一份安全声明中称:“如果用户使用特定版本的IE浏览器,即使在‘安全浏览’模式下,黑客也可以获得所需文件,但前提是知道文件名和路径。
862 0
|
Web App开发 安全
50%带毒网站利用IE新漏洞 用户应打好补丁
12月27日,一个名为“IE7攻击代码(Hack.Exploit.Script.JS.Agent.ic)”的恶意代码本周特别值得注意,它自上周出现后,疯狂势头一直未减。根据瑞星“云安全”系统提供的数据,每天有22万例网络攻击利用该漏洞进行,占据总体网络攻击比例的50%以上,尽管微软已经发布了针对该漏洞的补丁,但很多用户还没来得及弥补,预计此类攻击将持续相当长的时间。
877 0
|
Web App开发 云安全 安全
IE漏洞致数百万用户中招 快用瑞星卡卡打补丁
北京时间12月18日凌晨,微软发布了针对IE浏览器漏洞的最新补丁MS08-078,这是该公司今年第二次打破常规发布紧急漏洞补丁。瑞星旗下卡卡上网安全助手也进行了紧急升级,非正版软件用户可以用瑞星卡卡(http://tool.ikaka.com)来弥补这个系统漏洞。
1067 0
|
Web App开发 安全
微软称全球仅有0.2%用户受IE漏洞攻击
日前微软IE所有版本中均出现0day漏洞(即从IE 5到IE 8 beta 2都受到影响),且微软官方承认全球0.2%的用户因该问题受到攻击. 相关跟踪结果表明,该漏洞的危害比几天前刚刚公布时更为严重.
668 0
|
Web App开发 安全 Windows
微软:四种方法暂时屏蔽IE最新漏洞
微软日前针对最近热议的IE 7 0day高危漏洞进行了调查,并发布了一份安全通报,介绍该漏洞影响的操作系统及相关软件,并提出了临时解决办法,指导用户暂时屏蔽该漏洞。 据微软官方通报表示,运行在Windows XP SP2及其以后版本微软操作系统上的IE 7均存在该漏洞,其中包括Windows X...
904 0