本文將向讀者介紹了利用Flash參數注入的新型攻擊技術,最重要的是該技術能夠造成永久性的攻擊效果。鑒于目前的Web應用采用的常規防御機制尚不足以抵御這種攻擊,所以希望能引起Web開發人員的高度重視。本文最后給出了有關的安全建議。
一、綜述
本文將向讀者介紹一種新型的攻擊,我們稱之為FPI,即Flash參數注入攻擊。此前,安全專家曾發現,如果攻擊者能訪問和控制Flash的全局參數的話,他們就能夠完成諸如經由Flash的跨站點腳本攻擊、跨站flash以及修改Flash視頻的信息流等等。這些攻擊需要能夠直接訪問Flash視頻以及通過URI對有關參數進行設置。當Flash視頻是嵌入到HTML頁面中并且無法訪問原始DOM的時候,攻擊者將無法發動這些攻擊。
許多時候,Flash文件只能在原始的HTML中運行,而不能作為URI加載,這樣的話,就無法進行常規的跨站flash攻擊。本文展示了一些技術,在電影被嵌入到一個原始的HTML頁面的時候,攻擊者可以用這些技術來注入全局Flash參數。這些注入的參數不僅可以賦予攻擊者對頁面DOM的完全控制權,還能控制Flash視頻內部的其它對象。這個可以利用Flash視頻及其所在的HTML 頁面之間的交互發動更多精心策劃的各種攻擊。由此,本文所述的FPI技術能夠增加了Flash攻擊的適應面,也就是說會有更多的網站面臨Flash攻擊的危險。
本文中,我們將論述五種不同的技術。首先,我們將描述一種簡單的基于DOM的注入技術,提供該技術,攻擊者能夠使用原始HTML 頁面的URI來注入Flash參數,從而逃避諸如Web服務器的IDS以及IPS保護機制的檢測。本例將向大家證明,經常用于為URI消毒的encodeURI函數不足以抗擊該攻擊。第二種技術將利用HTML表單或者URI參數來注入全局Flash參數。第三種技術展示如何利用Flash視頻的引用來覆蓋這些參數的值。第四種技術為大家展示如何利用HTML的對象標簽的屬性實現FPI。最后,第五種技術為大家說明一種持久性Flash參數注入攻擊方法。這種技術致使注入的內容成為持久性數據,這意味著在不同的會話中、甚至在允許注入的安全漏洞已被修復之后,注入的內容仍然有效。實際上,本文涉及的一些技術已被廣泛應用于現實中的各種應用程序。
二、背景知識
Adobe Flash被廣泛應用于為Web頁面提供生動性和互動性元素。Flash視頻不僅可以嵌入到HTML頁面中,而且還可以在獨立的Flash Player中播放。
Flash視頻可以包含簡單的腳本,這些腳本通常用ActionScript語言編寫。這些腳本用來增強Flash視頻的性能,還用來創建更加動態的Web頁面以及更加豐富多彩的互聯網應用程序。
1.在HTML中嵌入Flash視頻
可以用下列方式在一個HTML頁面內嵌入Flash視頻:
![]() |
圖1 在HTML中嵌入Flash |
當訪問該頁面時,瀏覽器會自動下載該Flash視頻,并在該頁面內為用戶播放該Flash視頻。當嵌入到HTML頁面中時,Flash視頻就具備了訪問該頁面的DOM的權限,這意味著可以通過該電影的ActionScript代碼來執行JavaScript代碼。因為電影能夠訪問整個DOM,所以該電影也就能訪問加載該Flash的域為該用戶的計算機設置的Cookie了。
將Flash視頻嵌入到一個HTML頁面時,還有一種方法可用,那就是當用戶瀏覽Flash視頻的URL時,直接由瀏覽器將Flash視頻嵌入頁面。在這種情況下,會創建一個“幽靈”HTML頁面,它將Flash視頻作為一個嵌入對象存于其中,這個頁面如下所示:
![]() |
圖2 指定Flash下載地址的HTML |
注意,在這種情況下,由于原始的Flash視頻被嵌入一個HTML頁面,所以這個Flash視頻繼續嵌入到上述HTML頁面中,因此也就無法訪問上述HTML頁面的DOM了。
共4頁: 1 [2] [3] [4] 下一頁 | ||||||
|