三度网教程:是一个免费提供流行视频软件教程、在线学习分享的学习平台!

Flash 0day特征带来的攻击思路杂谈

时间:2023-4-8作者:未知来源:三度网教程人气:


随着网络的普及,我们的生活越来越方便,但是网络安全也成了很多人面临的一个问题。特别是那些有着商业数据的企业电脑,更要注意上网安全常识,不然病毒会对我们造成严重的威胁。

平时工作过于忙碌,技术的敏感度稍显滞后,好在隐隐感觉黑哥与小熊在群里提到的Flash 0day特性(CVE-2014-4671)具备非常大的价值,于是保存了笔记,晚上抽空断断续续研究了下,才意识到这个0day的价值。

原文链接:
http://miki.it/blog/2014/7/8/abusing-jsonp-with-rosetta-flash/

乌云昨天出了个翻译:
http://drops.wooyun.org/tips/2554

    大家可以先对照着读读,理解这个0day需要一些背景知识:
    1. 了解Flash在前端安全的地位,关于这点毫不避讳地推荐阅读我们这本书《Web前端黑客技术揭秘》第二章关于Flash安全的描述,内容很全面清晰;
    2. 了解CSRF攻击的本质,同样我们的书也提了;
    3. 了解JSONP,随便百度下你就知道;

这次Flash 0day特性实际上是对Flash文件格式的一次Hack(CWS压缩,采用的是zlib里的DEFLATE压缩算法),这种Hack的具体实现我没仔细理解,Hack之后的结果是Flash文件可以用ASCII码来完全表示(且是纯字母数字),这个会导致什么后果呢?

我慢慢道来:

1.

曾经我们玩浏览器解析Hack时都明白一个道理,如何让浏览器错误识别文件格式,即MIME类型,比如根据文件名后缀、Content-Type响应头、文件内容等。

题外话:这种判断规则在不同浏览器的实现还存在一些差异,这种差异导致有的浏览器可以被攻击成功,而有的不行。

曾经著名的UTF-7 XSS就是浏览器根据文件内容的头几个字符来判断目标文件的编码方式,比如开头是:

    +/v8
    +/v9
    +/v+
    +/v/

这个简单的缺陷导致全球重要网站纷纷中招。

2.

通过这个Flash 0day特性,结合JSONP接口,就可以把Flash文件内容(纯字母数字)附加到JSONP的返回结果中(通过给JSONP的callback参数赋值),为了按照Flash格式正常解析,文件头必须是严格的Flash文件内容。如果没这个Flash 0day特性,传给JSONP的内容就很可能包含各种特殊字符,就很可能会被JSONP的防御机制给过滤掉,就好像2012年这位大牛给出的POC:

    http://50.56.33.56/blog/?p=242

当时是没利用这个Flash 0day特性的,当然如果JSONP没什么防御,不要这个特性也行。可惜的是正是因为这个特性的利用,Google、Facebook等都沦陷了……因为它们的JSONP防御机制允许纯字母数字的字符串出现。

通过这两点的说明,大家明白了吗?

防御方式可以好几种,最Nice的是:

    在JSONP callback回来的内容之前强制加上/**/,这是JavaScript注释符,应该不会影响正常是JSON格式的解析执行,同时又可以避免根据文件头几个字符来决定目标文件MIME类型的解析机制。

曾经UTF-7 XSS漏洞也采用了类似的防御机制,在返回的内容前面强制加上个空格,这个道理是一样的:)

可惜Flash修补了这个0day特性,否则这种攻击很快会流行起来。这是一种非常经典的跨域攻击,我没来得及Demo,谁有结果可以告知我一声。

本杂谈比较乱,要想理解透彻,靠大家自己啃了。

最后,为什么说是0day特性,而不说是漏洞,这又是个很长的话题了……


上面是电脑上网安全的一些基础常识,学习了安全知识,几乎可以让你免费电脑中毒的烦扰。

关键词:  Flash  0day特征带来的攻击思路杂谈





Copyright © 2012-2018 三度网教程(http://www.3du8.cn) .All Rights Reserved 网站地图 友情链接

免责声明:本站资源均来自互联网收集 如有侵犯到您利益的地方请及时联系管理删除,敬请见谅!

QQ:1006262270   邮箱:kfyvi376850063@126.com   手机版