|
作為網(wǎng)站的業(yè)務(wù)管理者,在欣賞自己為客戶提供的豐富業(yè)務(wù)和趣味性體驗時,你是否曾經(jīng)想過網(wǎng)站會成為攻擊者攻擊第三方的媒介,從而導(dǎo)致公信度大為受損?作為一個網(wǎng)站的訪客,你是否曾經(jīng)想過在訪問這個自己再熟悉不過的網(wǎng)站時,你的私密信息已經(jīng)被他人竊取?
這些都與跨站腳本攻擊有關(guān)。下面讓我們詳細(xì)了解這類攻擊。
Q1:什么是跨站腳本?
跨站腳本(Cross-site scripting,簡稱XSS),是一種迫使Web站點回顯可執(zhí)行代碼的攻擊技術(shù),而這些可執(zhí)行代碼由攻擊者提供、最終為用戶瀏覽器加載。不同于大多數(shù)攻擊(一般只涉及攻擊者和受害者),XSS涉及到三方,即攻擊者、客戶端與網(wǎng)站。XSS的攻擊目標(biāo)是為了盜取客戶端的cookie或者其他網(wǎng)站用于識別客戶端身份的敏感信息。獲取到合法用戶的信息后,攻擊者甚至可以假冒最終用戶與網(wǎng)站進(jìn)行交互。
XSS漏洞成因是由于動態(tài)網(wǎng)頁的Web應(yīng)用對用戶提交請求參數(shù)未做充分的檢查過濾,允許用戶在提交的數(shù)據(jù)中摻入HTML代碼(最主要的是“>”、“<”),然后未加編碼地輸出到第三方用戶的瀏覽器,這些攻擊者惡意提交代碼會被受害用戶的瀏覽器解釋執(zhí)行。
Q2:XSS縮寫來源?
依照英文縮寫習(xí)慣,簡稱跨站腳本為CSS。這樣會引起它和另一個名詞“層疊樣式表”(Cascading Style Sheets,CSS)的混淆。此CSS非彼CSS。為了以示區(qū)別,一些安全人士就習(xí)慣將跨站腳本簡稱為XSS。
Q3:XSS存在哪些威脅?
攻擊者可以利用XSS漏洞、借助存在漏洞的Web網(wǎng)站攻擊其他瀏覽相關(guān)網(wǎng)頁的用戶,竊取用戶瀏覽會話中諸如用戶名和口令(可能包含在cookie里)的敏感信息、通過插入惡意代碼對用戶執(zhí)行掛馬攻擊。XSS漏洞還可能被攻擊者用于網(wǎng)頁篡改,只是多數(shù)情況為了經(jīng)濟利益最大化,攻擊者不會直接進(jìn)行篡改。
Q4:XSS漏洞的普及率有多高?
國際Web應(yīng)用安全組織WASC(Web Application Security Consortium)最新數(shù)據(jù)[4]表明,采樣分析了10297個網(wǎng)站,其中有31.47%站點存在XSS漏洞,且XSS在發(fā)現(xiàn)的漏洞中占到總數(shù)的41.41%,高居榜首。

圖1. 最為普及的Web應(yīng)用安全漏洞
Q5:能否列舉XSS實例?
2005年,一位叫Samy的MySpace用戶自創(chuàng)了一種XSS蠕蟲,24小時內(nèi),其網(wǎng)絡(luò)空間朋友數(shù)目成功從73上升到1百萬。
2006年,PayPal遭到XSS攻擊,攻擊者將PayPal站點的訪問者重定向到一個新的頁面,上面警告用戶他們的帳號已經(jīng)不再安全,需要重新設(shè)置,并提示輸入PayPal的登錄信息、用戶社保信息及信用卡信息。
2008年5月,eBay承認(rèn)其PayPal頁面存在XSS漏洞,該漏洞會被攻擊者用于盜取用戶證書或cookie。
Q6:攻擊者如何通過XSS攻擊偷取cookie?
在此,僅做舉例說明,幫助讀者理解XSS攻擊的思路。本文中的例子來自。
首先,讓我們假設(shè):存在一個網(wǎng)站www.vulnerableexample.com。該網(wǎng)站上有一個腳本welcome.cgi,參數(shù)設(shè)定為name。此腳本會讀取HTTP請求的部分,然后未做任何安全性驗證,就將請求內(nèi)容部分或全部回顯到響應(yīng)頁面。
通常,如果用戶端發(fā)送以下請求:
GET /welcome.cgi?name=Sammi HTTP/1.0
Host: www.vulnerableexample.com
服務(wù)器將會有如下響應(yīng):
Hi Sammi
Welcome!
...
彈出Alert窗口示例
上述機制將如何為攻擊者所利用呢?我們先列舉一個直觀的方法。通常,攻擊者會應(yīng)用社會工程學(xué)(Social Engineering)設(shè)法誘騙受害者點擊由攻擊者精心構(gòu)造的鏈接,如發(fā)送一封標(biāo)題為“免費聽林肯公園北京現(xiàn)場演唱會”的郵件J。
攻擊者構(gòu)造的惡意鏈接如下:
http://www.vulnerableexample.com/welcome.cgi?name=
受害者一旦點擊了惡意鏈接,會發(fā)送如下請求到www.vulnerableexample.site站點:
GET /welcome.cgi?name= HTTP/1.0
Host: www.vulnerableexample.com
...
站點將返回如下響應(yīng):
Hi
Welcome!
...
因為服務(wù)器端返回的HTML頁面包含一段JavaScript代碼,受害者瀏覽器會解釋執(zhí)行。這段代碼被執(zhí)行后,將被允許訪問瀏覽器中屬于www.vulnerableexample.com站點的cookie。此時,用戶側(cè)瀏覽器上會彈出一個alert窗口。
網(wǎng)站收集cookie示例
真實的攻擊步驟中,這些cookie會被發(fā)送給攻擊者。攻擊者為此會搭建一個網(wǎng)站(我們稱為www.attackerexample.com),還會應(yīng)用一個腳本負(fù)責(zé)接收盜取的cookie。攻擊者會寫一段惡意代碼,用于實現(xiàn)訪問攻擊者站點、并能調(diào)用接收cookie的腳本。最終,攻擊者可以從www.attackerexample.com站點獲取到cookie。
構(gòu)造的惡意鏈接如下:
http://www.vulnerableexample.com/welcome.cgi?name=
服務(wù)器響應(yīng)內(nèi)容顯示為:
Hi
Welcome!
...
瀏覽器會加載服務(wù)器端返回頁面,執(zhí)行內(nèi)嵌的JavaScript,并發(fā)送一個請求到www.attackerexample.com站點上的collect.cgi腳本,瀏覽器中保存的www.vulnerableexample.com站點的cookie值也會一起發(fā)送過去。攻擊者獲取到客戶在www.vulnerable.site站點的cookie,還可以假冒受害者。
|
|
【收藏】【打印】【進(jìn)入論壇】 |
|
|
|
|
|
|
|