分析JS木馬及防御方法

責(zé)任編輯:sjia

2012-09-21 10:47:08

摘自:游俠安全網(wǎng)

一種JS掛馬方式是,黑客先將掛馬腳本代碼,存為.js的腳本文件,并上傳到自己指定的網(wǎng)址。

木馬一直是黑客的拿手技量。善于用木馬的黑客,可以在原來的入侵基礎(chǔ)之上達(dá)到更大的目的。如今,雖然木馬的種類有很多。但其中IFRAME掛馬比較早,相應(yīng)的預(yù)防措施也比較多,其中用CSS配合JS腳本進(jìn)行預(yù)防是主流方式??蛇@種預(yù)防方式也存在安全隱患,JS腳本也可以被用來掛馬,令人防不勝防。我們下面要介紹反擊JS掛馬的方法。

JS掛馬溯源

當(dāng)IFRAME逐漸被黑客濫用的時候,有經(jīng)驗的安全工程師也開始研究相應(yīng)的對策,一段時間內(nèi)各種阻止IFRAME掛馬的方法不斷涌現(xiàn),其中通用性較高的就是利用CSS配合JS腳本防御IFRAME掛馬。

而黑客也發(fā)現(xiàn),很多網(wǎng)站都會讓網(wǎng)頁調(diào)用JS腳本來實現(xiàn)廣告等諸多特效,如果將木馬掛在JS腳本中,所有調(diào)用該JS腳本的網(wǎng)頁都等同于被掛上了木馬,對于需要肉雞群的黑客而言是一勞永逸,因此JS腳本掛馬逐漸開始被黑客應(yīng)用。

小百科:JS腳本是JavaScript腳本語言的簡稱,它是一種面向?qū)ο蟮哪_本語言,目前廣泛用于動態(tài)網(wǎng)頁的編程。需要提示大家的是,JavaScript和Java除了語法上有一些相似之處,以及都能夠當(dāng)作網(wǎng)頁的編程語言以外,兩者是完全不相干的。而JavaScript與Jscript也不同,Jscript是微軟為了迎戰(zhàn)JavaScript推出的腳本語言。

雖然JavaScript作為給非程序人員的腳本語言向大眾推廣,但是JavaScript是一門具有豐富特性的語言,它有著和其他編程語言一樣的復(fù)雜性。實際上,你必須對JS有扎實的理解才能用它來編寫比較復(fù)雜的程序,作為一名安全工程師,掌握J(rèn)S腳本在工作中會有很大的幫助。

掛馬原理一點(diǎn)通

JS腳本掛馬對于黑客而言,可以說優(yōu)點(diǎn)多得數(shù)不過來,首先JS腳本在掛馬時可以直接將JS代碼寫在網(wǎng)頁中,也可以通過注入網(wǎng)頁,讓網(wǎng)站遠(yuǎn)程調(diào)取異地JS腳本。此外,JS掛馬插入Web頁面的方法有幾十種,絕對夠菜鳥們眼花繚亂,無從辨別木馬在何處。

IFRAME掛馬相對于安全工程師而言,如同一個穿著鮮紅顏色外衣的劫匪,招搖而扎眼,很容易被發(fā)現(xiàn)。但是利用JS掛馬就意味著這個劫匪擁有了一張可以隨時變換的面孔,而且它還能夠隨時更換衣服。這樣的劫匪在安全工程師搜查時,很容易蒙混過關(guān),導(dǎo)致木馬久殺不絕。

JS掛馬攻防實錄

攻現(xiàn)最多見的JS掛馬方法有兩種,一種是直接將JavaScript腳本代碼寫在網(wǎng)頁中,當(dāng)訪問者在瀏覽網(wǎng)頁時,惡意的掛馬腳本就會通過用戶的瀏覽器悄悄地打開網(wǎng)馬窗口,隱藏地運(yùn)行。

另外一種JS掛馬方式是,黑客先將掛馬腳本代碼,存為.js的腳本文件,并上傳到自己指定的網(wǎng)址。這時黑客只需要在受害者的網(wǎng)站中寫入。

防第一種JS掛馬方式,不方便,用得非常少,而第二種JS掛馬方式才是當(dāng)前主流的,所以我們主要針對它進(jìn)行防御。方法就是阻止Src請求的異地外域的JS腳本,代碼如下:

iframe{mdy1:expression(this.src=’about:blank’,this.outerHTML=”);}

script{mzm2:expression((this.src.toLowerCase().indexOf(‘http’)==0)?document.write(‘木馬被成功隔離!’):”);}

不過這種方法的缺點(diǎn)就是網(wǎng)站的訪問者將不能看到被掛了JS木馬的相關(guān)網(wǎng)頁。

所以我們?yōu)榘踩こ處熖峁┝艘欢慰梢灾兄笿S腳本運(yùn)行的CSS代碼,這段代碼會讓異地外域的JS文件在使用document.write()時,被document.close()強(qiáng)制關(guān)閉。這個時侯JS掛馬的內(nèi)容往往還沒有來得及寫完,只有部分被強(qiáng)制輸出了,Writer后面的內(nèi)容再不會被寫入訪問者的電腦中,從而起到防范JS腳本掛馬的作用。

<title>讓JS掛馬中止的CSS代碼</title>

<style type=”text/css” id=”shudoo”>

/*<![CDATA[*/

iframe{mdy1:expression(this.src='about:blank',this.outerHTML='');}

script{mzm2:expression((this.src.indexOf('http')==0)?document.close():'');}

/*]]>*/

</style>

鏈接已復(fù)制,快去分享吧

企業(yè)網(wǎng)版權(quán)所有?2010-2024 京ICP備09108050號-6京公網(wǎng)安備 11010502049343號