如何通过IE11浏览器跨域窃取CSV文件信息(含演示视频+PoC)

  • 内容
  • 相关
et_highlighter51
如何通过IE11浏览器跨域窃取CSV文件信息(含演示视频+PoC) 系统安全 3个月前 (05-25) 470 人围观 0

写在前面的话

早在2008年,Chris Evans就发现了通过在<script>标签中添加恶意参数来跨域窃取Firefox数据的可能性。如果你感兴趣的话,你现在仍然可以阅读当初他所发表的那篇研究报告【传送门】。

他曾在报告中解释称:

现代Web模型对远程网站中<script>标签内的数据没有任何的限制。如果目标远程数据没有必要在<script>标签中出现,那么你可能就会面临着跨域数据泄漏的风险。

整个观点的实现使用了JavaScript错误信息和302重定向,一般来说,现代浏览器会使用类似“Script error”这样的通用信息来替代原本复杂的JavaScript错误信息,并以此来防止网站将错误内容泄露给远程域名。但对于同源网站来说,它们是可以读取到详细的JavaScript错误信息的。

IE浏览器存在同样的问题

通过研究和分析之后,我在IE浏览器上也发现了同样的问题,但是这里有一个特殊的前提条件:加载的页面(具体来说是一个标签页-Tab)必须开启页面的开发者工具(Developers Tools)。

没错,这非常的奇怪,而且开发者工具没有打开的话,我们就无法利用这个漏洞了。除此之外,还有下面这两种限制条件:

(1)必须使用有效的JavaScript变量名;

(2)<script>标签中的数据必须是有效的JavaScript代码;

对攻击者来说,最佳的错误信息形式为“xxxis not defined”,它表示某个名称并没有与任何变量进行绑定,此时你就可以跨域窃取这类单个单词的数据了。但如果跨域数据为CSV,例如“a,b, c”,你仍可以通过遍历的方式窃取到这三部分信息。

因此,只要我们能够满足上面这些前提条件,我们就能够跨域窃取到任何CSV文件的内容。实际上只要满足了上述条件,除了CSV文件之外,几乎任何类型的数据我们都可以窃取到。而且,如果目标页面没有指定字符集(charset)的话,我们还可以使用不同的字符集来窃取数据。如果你对这部分内容感兴趣的话,可以参考Gareth的这篇技术报告【传送门】。

由于ChirsEvan之前给出的PoC已经无法使用了,所以我重新制作了一个PoC。访问地址如下:

http://rootme.in/xssi?url=/redirect%3Furl%3Dhttp%3A%2f%2frequest.rootme.in%2ftoken.csv感兴趣的同学可以自己动手尝试一下,你可以替换链接中的参数,比方说这样:

PoC演示视频

下面是一个15秒的PoC演示视频:

后话

我已经将该问题上报给了微软公司,但由于这项技术的实现前提是开启开发者工具(或提前开启),因此微软方面不认为这是一个非常严重的漏洞,不过他们表示很可能在将来的版本更新中解决这个问题。

下面这个PoC是针对微软Edge浏览器的,如果你感兴趣的话,可以自行查看:

http://blog.portswigger.net/2016/11/json-hijacking-for-modern-web.html

缓解方案

广大开发人员以及网站管理员可以使用下列方法缓解这种安全风险:

如果数据需要通过ajax请求来获取,那么我们可以参考下面这两种方案:

除此之外,我们也可以通过指定正确的Content-Type头以及X-Content-Type-Options:nosniff来防止这种类型的攻击。但是,对于那些不支持X-Content-Type-Options的浏览器来说,这种方法就不起作用了。

参考资料

http://scary.beasts.org/security/CESA-2008-011.html

http://balpha.de/2013/02/plain-text-considered-harmful-a-cross-domain-exploit/

http://www.mbsd.jp/Whitepaper/xssi.pdf

http://blog.portswigger.net/2016/11/json-hijacking-for-modern-web.html

转自FreeBuf,原文链接:http://www.freebuf.com/articles/web/135082.html

本文标签:这篇文章木有标签

版权声明:若无特殊注明,本文皆为《Mushroom》原创,转载请保留文章出处。

本文链接:如何通过IE11浏览器跨域窃取CSV文件信息(含演示视频+PoC) - http://www.0xmg.com/post-494.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注

00:00 / 00:00
顺序播放