在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时,我们获得的不再是顶层窗口的地位,而是浏览器的将要达到的地位或当前写入地址栏的内容。
这里,我们只是中断新站点的加载并展示用户的URL。当然,如不雅是进击者的话,他们会直接回填地址并加载站点,并且这一切对于用户来说都是透明的。实际上,在用户分开时,我们直接履行document.write就行了。
换句话说,如不雅我们在用户分开主页面的同时检索对象的location.href,我们将可以或许知道她在地址栏中输入的内容,或者如不雅点击链接,我们将会获悉浏览器要链接的地址。
并在那个恰当的时刻攫取地位(onbeforeunload)。
- document.write("Let me read your mind. You wanted to go here: " + location.href +);
好了,如今我们就能在用户分开时获取对象地位,大年夜而确切地知道她在地址栏中输入的内容。当然,它不必定是一个完全的URL,例如,如不雅用户在地址栏中输入悼?船它将主动被转换为搜刮萌芽URL(IE默认为Bing),这当然可以被完全攫取!
在IE长进行测试
【编辑推荐】
- 烽火18台系列之十五: 工控资产普查与马脚安然检测
- 应对安然马脚:若何将LFI变为RFI
- 应用PowerShell代码注入马脚绕过受限说话模式
- Oracle Advanced Support体系SQL注入马脚发掘经验分享
- Struts2 新马脚(S2-052)出现应用实例,面对马脚企业应当分秒必争
推荐阅读
7个原因告诉你为什么要选择ArangoDB “多模型” 数据库?
ArangoDB 是一个开源的分布式原生多模型数据库 (Apache 2 license)。其理念是: 应用一个引擎,一个 query 语法,一项数据库技巧,以及多个数据 模型,来最大年夜力度知足项目标灵活性,简化技巧客栈,>>>详细阅读
本文标题:深入分析IE地址栏内容泄露漏洞
地址:http://www.17bianji.com/lsqh/37655.html
1/2 1