14. Flash Xss入門 [navigateToURL]

作者:心傷的瘦子

來自:PKAV技術宅社區

網址:http://www.pkav.net

---------------------------------------------------------------------------------

簡要描述:

接下來,我們將講解FlashXss。由於烏雲及社會各界的白帽子的上報,騰訊目前已經對絕大多數可能存在問題的Flash進行了修復。使得我在尋找真實案例時着實麻煩了不少。但是爲了使得本教程足夠完善和系統,我還是很艱難的找出了一些可以參考的例子。例子本身危害可能不大,但是希望能夠藉助例子給新手們描述清楚比較基本的東西。

Flash的actionscript腳本目前網絡上存在2種版本,即2.0與3.0,本次教程先以as3.0爲例。同時教程還會在如何使用搜索引擎搜索,如何查找關鍵詞及構造利用代碼方面進行詳細的講解。

詳細說明:

1.首先,第一步,我們需要找到存在缺陷的FLASH文件。如何找到這類文件呢?最好的辦法,當然是GOOGLE搜索。但是其實很多人是不太會用搜索引擎。或者知道怎麼用,但是不知道該如何搜索關鍵詞。因而教程的開始,我們來說一說,如何搜索關鍵詞。

2.基本語句肯定是site:qq.com filetype:swf

意思是,限定域名爲qq.com 文件類型爲FLASH文件。

3.顯然這樣會搜索出很多FLASH文件,不利於我們後續的漏洞查找,所以我們需要輸入某個關鍵詞來進一步縮小範圍。這裏我列舉一些尋找關鍵詞的方式。

3.1 已知存在缺陷的FLASH文件名或參數名,如:swfupload,jwplayer等

3.2 多媒體功能的FLASH文件名,如:upload,player,music,video等

3.3 調用的外部配置或數據文件後綴,如:xml,php等

3.4 前期經驗積累下來的程序員特徵參數名用詞,如:callback,cb,function等

4.結合以上經驗,本例使用其中第三條:

我們搜索:site:qq.com filetype:swf inurl:xml

可以找到這個FLASH

http://imgcache.qq.com/liveportal_v1/swf/carousel.swf?v=20101111&dp=http://v.qq.com/doco/pic.xml

5. 如果你對FLASH有一定了解或者你天資聰慧的話,通過以上地址,你或許能猜到這個FLASH會調用http://v.qq.com/doco/pic.xml這個XML文件的數據,爲了看看是什麼數據,我們可以使用抓包軟件【這裏我使用的是charles web proxy】來看看。

6. 我們看看http://v.qq.com/doco/pic.xml的內容,對應着FLASH來看。

7. 這裏我們重點關注的是xml裏的<link>結點。也就是當我們點擊圖片時,會跳轉到link所指向的地址。

8.接着我們先說下基礎知識。要實現上面點擊圖片,打開鏈接的功能,在FLASH裏通常以以下代碼來實現的。

當圖片點擊時執行 函數A

函數A內容如下:

//as3.0版本

navigateToURL(new URLRequest(link), "_self");

//as2.0版本

getURL(link,"_self");

其中link就是被打開的鏈接。

9. 但是這裏存在一個問題,如果link是 "javascript:alert(1)"

那麼就可以執行JS代碼了。這裏的點擊執行代碼的效果類似於網頁裏的

<a href="javascript:alert(1)">點我彈出1</a>

10. 基於以上基礎知識,我們可以先來反編譯一下騰訊的FLASH文件,看看是不是上面這樣的。

這裏我用到的反編譯軟件是 actionscript viewer 2009

把下載好的FLASH文件,拖到軟件裏,然後把AS都保存出來,保存爲文本文件。

如上圖,我們可以看到AS代碼具有目錄結構,這種是AS3的。如果不是這樣目錄的樣子,則是AS2的代碼。

由於我們要定位的是使用到 link 的代碼。 我們打開保存的as代碼,進行搜索。

可以看到,當點擊圖片時,直接將數據裏的link作爲參數傳遞到了 URLRequest中。

11. 既然如此,我們把http://v.qq.com/doco/pic.xml 給下載下來,

將xml文件裏的 <link> 部分修改一下。

12. 上傳修改後的pic.xml到我們自己的服務器。

13. 這樣一來, 騰訊的http://imgcache.qq.com/liveportal_v1/swf/carousel.swf 就會跨域加載我們的 http://itsokla.duapp.com/pic.xml 文件。

14. 既然是跨域加載,有必要說點基礎知識。 FLASH跨域請求的流程大致如下:

15. 因而,我們要允許來自imgcache.qq.com的FLASH文件,訪問我們的xml文件才行。

在我們自己網站的根目錄下,放置一個 crossdomain.xml

<?xml version="1.0"?>

<cross-domain-policy>

	<allow-access-from domain="*.qq.com" />

</cross-domain-policy>

16. 最後,看看我們的效果。點擊圖片時,觸發。

危害較小,僅供學習。

漏洞證明:

見詳細說明

修復方案:

對XML中傳入的link url進行正則判斷

或者

限制加載第三方網站的XML文件

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章