明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

Flash 0day特征帶來(lái)的攻擊思路雜談

[摘要]平時(shí)工作過(guò)于忙碌,技術(shù)的敏感度稍顯滯后,好在隱隱感覺(jué)黑哥與小熊在群里提到的Flash 0day特性(CVE-2014-4671)具備非常大的價(jià)值,于是保存了筆記,晚上抽空斷斷續(xù)續(xù)研究了下,才意識(shí)到這個(gè)0day的價(jià)值。原文鏈接:http://miki.it/blog/2014/7/8/abusing...

平時(shí)工作過(guò)于忙碌,技術(shù)的敏感度稍顯滯后,好在隱隱感覺(jué)黑哥與小熊在群里提到的Flash 0day特性(CVE-2014-4671)具備非常大的價(jià)值,于是保存了筆記,晚上抽空斷斷續(xù)續(xù)研究了下,才意識(shí)到這個(gè)0day的價(jià)值。

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

烏云昨天出了個(gè)翻譯:
http://drops.wooyun.org/tips/2554

    大家可以先對(duì)照著讀讀,理解這個(gè)0day需要一些背景知識(shí):
    1. 了解Flash在前端安全的地位,關(guān)于這點(diǎn)毫不避諱地推薦閱讀我們這本書《Web前端黑客技術(shù)揭秘》第二章關(guān)于Flash安全的描述,內(nèi)容很全面清晰;
    2. 了解CSRF攻擊的本質(zhì),同樣我們的書也提了;
    3. 了解JSONP,隨便百度下你就知道;

這次Flash 0day特性實(shí)際上是對(duì)Flash文件格式的一次Hack(CWS壓縮,采用的是zlib里的DEFLATE壓縮算法),這種Hack的具體實(shí)現(xiàn)我沒(méi)仔細(xì)理解,Hack之后的結(jié)果是Flash文件可以用ASCII碼來(lái)完全表示(且是純字母數(shù)字),這個(gè)會(huì)導(dǎo)致什么后果呢?

我慢慢道來(lái):

1.

曾經(jīng)我們玩瀏覽器解析Hack時(shí)都明白一個(gè)道理,如何讓瀏覽器錯(cuò)誤識(shí)別文件格式,即MIME類型,比如根據(jù)文件名后綴、Content-Type響應(yīng)頭、文件內(nèi)容等。

題外話:這種判斷規(guī)則在不同瀏覽器的實(shí)現(xiàn)還存在一些差異,這種差異導(dǎo)致有的瀏覽器可以被攻擊成功,而有的不行。

曾經(jīng)著名的UTF-7 XSS就是瀏覽器根據(jù)文件內(nèi)容的頭幾個(gè)字符來(lái)判斷目標(biāo)文件的編碼方式,比如開頭是:

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

這個(gè)簡(jiǎn)單的缺陷導(dǎo)致全球重要網(wǎng)站紛紛中招。

2.

通過(guò)這個(gè)Flash 0day特性,結(jié)合JSONP接口,就可以把Flash文件內(nèi)容(純字母數(shù)字)附加到JSONP的返回結(jié)果中(通過(guò)給JSONP的callback參數(shù)賦值),為了按照Flash格式正常解析,文件頭必須是嚴(yán)格的Flash文件內(nèi)容。如果沒(méi)這個(gè)Flash 0day特性,傳給JSONP的內(nèi)容就很可能包含各種特殊字符,就很可能會(huì)被JSONP的防御機(jī)制給過(guò)濾掉,就好像2012年這位大牛給出的POC:

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

當(dāng)時(shí)是沒(méi)利用這個(gè)Flash 0day特性的,當(dāng)然如果JSONP沒(méi)什么防御,不要這個(gè)特性也行?上У氖钦且?yàn)檫@個(gè)特性的利用,Google、Facebook等都淪陷了……因?yàn)樗鼈兊腏SONP防御機(jī)制允許純字母數(shù)字的字符串出現(xiàn)。

通過(guò)這兩點(diǎn)的說(shuō)明,大家明白了嗎?

防御方式可以好幾種,最Nice的是:

    在JSONP callback回來(lái)的內(nèi)容之前強(qiáng)制加上/**/,這是JavaScript注釋符,應(yīng)該不會(huì)影響正常是JSON格式的解析執(zhí)行,同時(shí)又可以避免根據(jù)文件頭幾個(gè)字符來(lái)決定目標(biāo)文件MIME類型的解析機(jī)制。

曾經(jīng)UTF-7 XSS漏洞也采用了類似的防御機(jī)制,在返回的內(nèi)容前面強(qiáng)制加上個(gè)空格,這個(gè)道理是一樣的:)

可惜Flash修補(bǔ)了這個(gè)0day特性,否則這種攻擊很快會(huì)流行起來(lái)。這是一種非常經(jīng)典的跨域攻擊,我沒(méi)來(lái)得及Demo,誰(shuí)有結(jié)果可以告知我一聲。

本雜談比較亂,要想理解透徹,靠大家自己啃了。

最后,為什么說(shuō)是0day特性,而不說(shuō)是漏洞,這又是個(gè)很長(zhǎng)的話題了……


上面是電腦上網(wǎng)安全的一些基礎(chǔ)常識(shí),學(xué)習(xí)了安全知識(shí),幾乎可以讓你免費(fèi)電腦中毒的煩擾。