溫柔殺手-跨站Script攻擊
發(fā)布時(shí)間:2008-08-26 閱讀數(shù): 次 來(lái)源:網(wǎng)樂(lè)原科技
第一部分:跨站SCRIPT攻擊的幾種方法:
每當(dāng)我們想到黑客的時(shí)候,黑客往往是這樣一幅畫像:一個(gè)孤獨(dú)的人,悄悄進(jìn)入別人的服務(wù)器中,進(jìn)行破壞或者竊取別人的秘密資料。也許他會(huì)更改我們的主頁(yè),甚者會(huì)竊取客戶的信用卡號(hào)和密碼。另外,黑客還會(huì)攻擊訪問(wèn)我們網(wǎng)站的客戶。與此同時(shí),我們的服務(wù)器也成了他的幫兇。微軟稱這種攻擊為“跨站script”攻擊。而這種攻擊大多數(shù)都發(fā)生在網(wǎng)站動(dòng)態(tài)產(chǎn)生網(wǎng)頁(yè)的時(shí)侯,但黑客的目標(biāo)并不是你的網(wǎng)站,而是瀏覽網(wǎng)站的客戶。
跨站script攻擊的說(shuō)明
在一本名為<<ADVISORY CA--2000-02>>的雜志中,CERT警告大家:如果服務(wù)器對(duì)客戶的輸入不進(jìn)行有效驗(yàn)證,黑客就會(huì)輸入一些惡意的HTML代碼,當(dāng)這些HTML代碼輸入是用于SCRIPT程序,他們就能利用它來(lái)進(jìn)行破壞,如插入一些令人厭惡的圖片或聲音等,同時(shí),也能干擾了客戶正確瀏覽網(wǎng)頁(yè)。
我們知道,有些朋友曾經(jīng)被誘導(dǎo)到一些可疑的免費(fèi)網(wǎng)站,他們得到的僅僅是10到20個(gè)小的窗口,這些窗口常常伴隨著由JAVA 或 JAVASCRIPT生成的失效安鈕,這被稱為鼠標(biāo)陷阱。關(guān)閉這些窗口是徒勞的,每當(dāng)我們關(guān)閉一個(gè)窗口,又會(huì)有10幾個(gè)窗口彈出。這種情況常常發(fā)生在管理員沒(méi)在的時(shí)侯發(fā)生。鼠標(biāo)事件是黑客利用跨站SCRIPT方法攻客戶的典型范例。
惡意的標(biāo)簽和SCRIPT不單純的惡作劇,他們甚至可以竊取資料和搗毀系統(tǒng)。一個(gè)聰明的甚至是不夠聰明的黑客都能夠使用SCRIPT干擾或者改變服務(wù)器數(shù)據(jù)的輸入。利用SCRIPT代碼也能攻擊客戶系統(tǒng),讓你的硬盤盡損。而且你要知道,在你一邊使用服務(wù)器的時(shí)候,黑客的SCRIPT也正在你服務(wù)器里安全的地方運(yùn)行著的呀!如果客戶對(duì)你的服務(wù)器非常信認(rèn),同樣他們也會(huì)信任那些惡意的SCRIPT代碼。甚至這個(gè)代碼是以〈SCRIPT〉或者〈OBJECT〉的形式來(lái)自黑客的服務(wù)器。
即使使用了防火墻(SSL)也不能防止跨站SCRIPT的攻擊。那是因?yàn)槿绻蓯阂釹CRIPT代碼的設(shè)備也使用了SSL,我們服務(wù)器的SSL是不能辨別出這些代碼來(lái)的。我們難道就這樣把客戶曾經(jīng)那么信任的網(wǎng)站拱手讓給黑客嗎?而且有這種破壞的存在,會(huì)讓你網(wǎng)站名譽(yù)盡損的。
一、跨站SCRIPT攻擊示例:
根據(jù)CERT的資料,動(dòng)態(tài)輸入大致有這幾種形式:URL參數(shù),表格元素,COOKISE以及數(shù)據(jù)請(qǐng)求。讓我們來(lái)分析一下,這個(gè)只有兩個(gè)頁(yè)面的網(wǎng)站,網(wǎng)站名為:MYNICESITE.COM。第一頁(yè)使用一張表格或COOKIE來(lái)獲取用戶名:
<%@ Language=VBScript %>
<% If Request.Cookies("userName") <> "" Then
Dim strRedirectUrl
strRedirectUrl = "page2.asp?userName="
strRedirectUrl = strRedirectUrl & Response.Cookies("userName")
Response.Redirect(strRedirectUrl)
Else %>
<HTML>
<HEAD>
<TITLE>MyNiceSite.com Home Page</TITLE>
</HEAD>
<BODY>
<H2>MyNiceSite.com</H2>
<FORM method="post" action="page2.asp">
Enter your MyNiceSite.com username:
<INPUT type="text" name="userName">
<INPUT type="submit" name="submit" value="submit">
</FORM>
</BODY>
</HTML>
<% End If %>
第二頁(yè)返回用戶名以示歡迎:
<%@ Language=VBScript %>
<% Dim strUserName
If Request.QueryString("userName")<> "" Then
strUserName = Request.QueryString("userName")
Else
Response.Cookies("userName") = Request.Form("userName")
strUserName = Request.Form("userName")
End If %>
<HTML>
<HEAD></HEAD>
<BODY>
<H3 align="center">Hello: <%= strUserName %> </H3>
</BODY>
</HTML>
當(dāng)你正常常輸入文字時(shí),一切都很正常。如果你輸入Script代碼:<SCRIPT>alert('Hello.';</script>,JavaScript警告標(biāo)簽就會(huì)彈出來(lái):
在你下一次訪問(wèn)時(shí),這個(gè)警示標(biāo)簽同樣會(huì)出現(xiàn);這是因?yàn)檫@個(gè)Script代碼在你第一次訪問(wèn)的時(shí)后就已經(jīng)留在cookie中了。這是一個(gè)簡(jiǎn)單的跨站攻擊的范例。
如果你認(rèn)為這是一個(gè)特殊情況,你也不妨到網(wǎng)上別的地方看看,親自試一下。我曾經(jīng)對(duì)一些大型的政府網(wǎng)站、教育網(wǎng)站以及商業(yè)網(wǎng)站進(jìn)行過(guò)測(cè)試,他們當(dāng)中的確有部分出現(xiàn)了以上所說(shuō)的情況,我甚至發(fā)現(xiàn)了我經(jīng)常使用信用卡的網(wǎng)站也居然對(duì)輸入不進(jìn)行任何過(guò)濾,想想真是可怕。