防不胜防!如何在安全的网页中加载不安全的内容?

xiaohui 技术 2016年11月21日发布
Favorite收藏

导语:随着网络运营商的安全防护意识越来越强,网站朝HTTPS的方向发展已成定局,如今许多著名的网站都通过HTTPS证书对他们的网站进行了有效地防护,但是到底能安全到何种程度呢?

随着网络运营商的安全防护意识越来越强,网站朝HTTPS的方向发展已成定局,如今许多著名的网站都通过HTTPS证书对他们的网站进行了有效地防护,但是到底能安全到何种程度呢?通过 HTTPS 提供的内容是可以抵御MITM攻击,sniff 攻击及利用Tamper绕过防注入代码进行的攻击,但是HTTPS 协议是否也可以保护终端用户免受威胁呢?当然不会了。

众所周知,黑客已经通过广泛的渠道散播Payload(攻击负载) ,恶意广告便是其中一种渠道。黑客们会购买吸引人眼球的banner广告,并在这些广告中混入恶意代码。对于黑客是如何检测用户是否属于潜在的攻击对象并不是本文的讲述重点,因为这是决定黑客是否要对攻击对象实施什么程度的payload的依据,在此之前,他们会伪装成普通的广告。

在HTTPS中混入不安全的内容似乎行不通

在HTTPS环境中,令黑客们头疼的一个问题便是,如何在安全的网站呈现不安全的内容,因为过去他们在HTTP环境下很容易加载不安全内容,也就是说如果攻击者强行通过 HTTPS 加载他们的代码,他们的很多攻击技巧比如检测文件系统在HTTPS环境是无法实施。IE和Edge等浏览器都拒绝从安全的域(HTTPS)加载不安全的内容 (HTTP)。

目前的浏览器在默认情况下都不会加载不安全内容。如果用户浏览的是 HTTPS 网站,浏览器会拒绝加载不安全的内容,例如,不安全的内容里面有个含有HTTP iframe的 banner 广告。InternetExplorer 就会向用户发出“显示所有内容”即要求用户重新加载页面的警告。

Edge浏览器会阻止不安全内容但不会显示警告提示,除非用户使用 devtools-console窗口查看,否则不会显示警告。此外,混乱的错误信息也会代替来自 iframe的不安全内容。

允许加载图片

一个有趣的例外是,所有浏览器都允许无限制加载并渲染不安全的图像。换句话说,黑客可以利用这个方法可以替换页面的图片,但这并不代表对用户产生真正威胁,至于为什么 EricLawrence已在一年前写了一篇博文很清晰地解释了为什么IE 的开发者会允许在不提示警告的情况下加载不安全的图像。这是很有道理的:许多网站使用 HTTP 协议从外部加载它们的图像,更糟糕的是在资源中硬编码了指向本地图像的 HTTP 协议,但内容本身(html/scripts)是安全的。所以,除了地址栏右边的小挂锁会消失,它们IE浏览器是允许图像加载一个没有警告的标签。

这是地址栏在 IE 上加载不安全图片的前后对比。注意主地址栏的安全协议根本不会改变。

在 Microsoft Edge浏览器上,情况也是如此,唯一区别就是锁的图标放到了左边。

但与此同时,这两个浏览器都认为伪协议(res: mhtml:file:)是不安全的,所以如果黑客们要尝试使用这些协议加载内容,肯定都会失败,就像http的内容在https上加载那样。

使用伪协议

你可能在想,HTTPS与这些奇怪的mhtml:和res:协议有什么关系?这些奇怪的协议被黑客用来加载硬盘中的文件,用于检测本地存在的文件,如果主页是安全的,黑客将面临一个大问题:IE 会拒绝解析这些协议。难道就没有其他方法了吗?显然目前还没有,所以安全的HTTPS环境不仅帮助用户免受MITM攻击,而且还顺便屏蔽掉很多潜在的黑客攻击。

另外:黑客往往会利用他们过往惯用的 mhtml/res/file 协议,来检查用户的文件系统中是否有可攻击的文件。但在HTTPS的环境中,浏览器会默认不允许加载“混入内容”,除此之外很多过往的黑客攻击技巧将在 HTTPS 中失效。

强制加载内容

试了这么多办法都不行,是不是就证明HTTPS真就无懈可击呢?当然不是,黑客还有另外一种办法就是绕过这些警告。

我们知道在没有用户交互的情况下渲染内容的规则(image标签)存在着例外情况,现在尝试一下加载源是IFRAME的图像(而非IMG),依然没有成功。那就再混入EMBED和OBJECT因素(二者皆可渲染 html)经过测试还是没成功。最后,使用平常的IFRAME来试一试,这一方法不是直接使用不安全的URL设置其location属性而是通过使用服务器重定向,这次,不安全内容终于加载上了。

这个方法如果仅仅是作为研究,但从攻击者的角度看却毫无用处。虽然黑客已经可以在不经过用户同意的情况下加载混合内容,但那个警告却会引起用户警觉。出现警告是因为加载了不安全的内容(bing.com确实是通过HTTP加载的),所以,攻击者绝对不会使用这种会引起用户警觉的手法。 

当不安全的bing.com试图渲染另一个不安全的iframe内容时,问题就出现了。也就是说iframe 的子元素也需要是安全的或者是绕过渲染,与此同时相同的技巧也需要进行重定向。但是这并没什么用,因为攻击者需要 IE 伪协议(mhtml: res: 和 file:)来实现他们的技巧,而 IE 不接受服务器重定向协议。所以黑客就需要寻找更好的办法了。

绕过警告信息

为了找到绕过警告信息的方法,黑客偶然发现了一种可行方法。不过令人惊奇的是,这个方法是那么基础:就是在不安全的 iframe 中放一个 document.write 就够了。可能这么简单吗?我们来看看:

Main page should besecure/https
Main page should besecure/https
The iframe below renders aninsecure (http) page which does a document.write
<iframesrc="https://www.cracking.com.ar/redir/redir.php?URL=http://unsafe.cracking.com.ar">
TheHTML code in the iframe is quite simple:
<scr<script>document.write()</script>ipt>document.write()</script><script>document.write()</script>

一旦不安全的内容加载了document.write ,iframe 就可以自由加载不安全的内容了,而且无需重定向。换句话说,这时攻击者就可以加载 mhtml/res 协议了,而且可无限制大展黑客攻击技巧了,但是IE 却并不知道这些内容正在被渲染,还会对每个嵌入的 iframe 加载。

虽然Edge 浏览器受到了这个漏洞的影响,但 document.write 的方法并不奏效。但谁又能确保黑客不会发现另外一种可行的攻击办法呢?

本文翻译于:brokenbrowser,如若转载,请注明来源于嘶吼: http://www.4hou.com/technology/749.html
点赞 0
  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论

    panda 2016-12-08 13:48

    安全越来越重要

    panda 2016-12-08 13:47

    不错赞一个