網站被掛馬與ARP攻擊處理方法
發(fā)表時間:2023-07-12 來源:明輝站整理相關軟件相關文章人氣:
相信大多數站長都曾經遭遇過iframe木馬的侵害, 有朋友的網站被注入了N回iframe, 心情可想而知。 而且現在ARP攻擊, 注入iframe也是輕而易舉的事, 僅局域網里都時刻面臨威脅, 今天把原理細細地講一下吧。
IE Only——一般只有IE害怕iframe這樣的掛馬, 所以就拿IE開刀。
在閱讀本文之前, 我們先了解一下e xpression:
IE5及其以后版本支持在CSS中使用e xpression, 用來把CSS屬性和JavaScript腳本關聯(lián)起來, 這里的CSS屬性可以是元素固有的屬性, 也可以是 自定義屬性。 就是說CSS屬性后面可以是一段JavaScript表達式, CSS屬性的值等于Javascript表達式執(zhí)行的結果。 在表達式中可以直接引用元素自身的屬性和方法, 也可以使用其他瀏覽器對象。 這個表達式就好像是在這個元素的一個成員函數中一樣。
很多朋友都知道CSS可以直接描述一個可視標記的外觀。 例如:p{color:red} 則網頁里 所有p標記里的文字顏色都會變成紅色;iframe不也是一個標記嗎?開始跟靈兒寫代碼吧, 呵呵:
iframe{...這里寫描述外觀的CSS代碼;}
仔細想想要防止iframe里的東東被下載的最好辦法是什么?核心來了, 那就是切斷iframe里的請求, 切斷請求就是要迅速銷毀iframe對象。 如何實現呢, 上面不是介紹了e xpression嗎?e xpression是可以執(zhí)行JS腳本的哈。 語法格式如下二種:
標記固有的CSS屬性名:e xpression(JS表達式);
或 自定義屬性名:e xpression(JS表達式);
在這里我們選擇第二種, 代碼應該大致是這樣
iframe{v:e xpression(JS表達式);}
接下來的問題是如何銷毀網頁里所有的iframe對象;使用JS實現的原理是這樣的:使iframe里的請求地址變成空白頁(about:blank), 再將iframe對象從DOM(文檔對象模型)中移除就可以切斷所有iframe里的請求了。 移除DOM節(jié)點的方法比較多, 我這里就用 outerHTML這個屬性吧。 CSS代碼如下:
iframe{v:e xpression(this.src='about:blank',this.outerHTML='');}
說明:前面的v字是靈兒自己定義的一個CSS屬性, 這里的this代表所有將要描述外觀的iframe對象, 中間的逗號代表二句代碼一起執(zhí)行, 沒有執(zhí)行優(yōu)先順序, 這可是強有力的保證噢。 about:blank代表空白頁, 大家都知道的。 outerHTML屬性是DOM對象包含自身的HTML代碼, 而innerHTML則是DOM對象(不含本身)里面所包含的HTML代碼。
爽快, 代碼寫好了, 就讓我信來測試一下有沒有效果。
首先, 新建一個網頁, 插入以上的CSS代碼(或在您現有的CSS代碼里加入上面那句):
<style type="text/css">
iframe{v:e xpression(this.src='about:blank',this.outerHTML='');}
</style>
然后在這個頁面插入幾個IFRAME代碼, 假設它們是被掛的木馬網頁。 代碼如下:
<iframe src=""></iframe>
<iframe src="http://www.xxx.com/"></iframe>
<iframe src=" http://www.arpun.com/"></iframe>
保存為noiframe.htm, 打開瀏覽器測試一下(本地測試需要啟用頂部禁用的腳本的提示條哦)。 我這里使用抓包工具來測試, 不過也沒有必要使用抓包工具, 一個最簡單有效的方法是打開IE的緩存文件夾, 先清空它, 再刷新這個頁面, 看看緩存文件夾里有沒有這三個網站里的文件。 如果沒有, 說明沒有任何請求結果被返回——測試結果是令人滿意的, 我的臉上有些微笑 ^^*, 這時同事遞給我一塊餅, 蠻好吃的。
提示:Windows XP SP2的緩存文件夾位置 C:Documents and SettingsAdministratorLocal SettingsTemporary Internet Files
細心的朋友發(fā)現問題來了, 如果我自己的網頁里要使用iframe這個東東怎么辦?
答:如果要使自己的iframe顯示在網頁里, 而別人掛的IFRAME馬都不起作用, 在CSS里加一個
#xxx{v:e xpression() !important}
對應的IFRAME代碼為:
<iframe id="xxx" name="xxx" src="http://www.xxx.com/"></iframe>
就OK了。
提示:IE7中優(yōu)先執(zhí)行標注有"!important"描述的樣式, IE6不認識!important, 采用就近原則, 所以IE6的這個代碼放在CSS的最后就可以了。
這里的xxx, 有很多朋友有疑問, 他們問我為什么取"xxx", 我這樣回答——這個xxx是隨意取的, 只要下面的iframe里的ID屬性和CSS里的一致就行了。 同事又要遞一塊餅我吃, 我說飽了哈..嘻嘻..
當然掛馬者可以構造這樣的代碼:
<iframe style="v:e xpression() !important" src="URL"></iframe>
使我的防御方式失效, 不過它得特意去看我的CSS代碼里iframe里的前綴v,如果我的v是變化的呢, 哈哈, 是不是也不管用呢!
小結:以上的方法只是停止了iframe的請求并銷毀了它本身, 但以后的掛馬方式改變了, 例如改成
<script></script>
方式掛, 就不能用這種方法來解決了;此這個方法不是最終的解決案, 最終的解決方案是找出真正被掛IFRAME的原因, 堵住源頭。