跨站腳本攻擊XSS是Web安全中最常見(jiàn)的漏洞,本文將向讀者介紹一種檢測(cè)腳本攻擊漏洞的自動(dòng)化工具——XSSDetect。但是在正式介紹該工具之前,我們還是先來(lái)認(rèn)識(shí)一下跨站腳本攻擊XSS吧。
一、關(guān)于跨站腳本攻擊XSS
最開(kāi)始的時(shí)候,跨站腳本攻擊(Cross Site Scripting)縮寫為CSS,但這會(huì)與層疊樣式表(Cascading Style Sheets, CSS)的縮寫混淆,所以后來(lái)人們便把跨站腳本攻擊縮寫為XSS以示區(qū)別。
跨站腳本攻擊(也稱為XSS)能夠利用網(wǎng)站的漏洞竊取用戶的個(gè)人信息。用戶在瀏覽網(wǎng)站、使用即時(shí)通訊軟件、甚至在閱讀電子郵件時(shí),通常會(huì)點(diǎn)擊其中的鏈接。攻擊者通過(guò)在鏈接中插入惡意代碼,就能夠盜取用戶信息。攻擊者通常會(huì)用十六進(jìn)制(或其他編碼方式)將鏈接編碼,以免用戶懷疑它的合法性。網(wǎng)站在接收到包含惡意代碼的請(qǐng)求之后,如果沒(méi)有對(duì)用戶的輸入進(jìn)行嚴(yán)格的過(guò)濾的話,就會(huì)產(chǎn)成一個(gè)包含惡意代碼的頁(yè)面,而這個(gè)頁(yè)面看起來(lái)就像是那個(gè)網(wǎng)站應(yīng)當(dāng)生成的合法頁(yè)面一樣。許多流行的留言本和論壇程序允許用戶發(fā)表包含HTML和javascript的帖子,如果用戶A發(fā)表了一篇包含惡意腳本的帖子,那么用戶B在瀏覽這篇帖子時(shí),惡意腳本就會(huì)執(zhí)行,從而盜取用戶B的會(huì)話信息。
XSS不僅常見(jiàn),而且危害頗深。為了搜集用戶信息,攻擊者通常會(huì)在有漏洞的程序中插入JavaScript、VBScript、ActiveX或Flash以欺騙用戶。用戶一旦中招,就會(huì)導(dǎo)致用戶帳戶被盜,用戶設(shè)置被篡改,cookie失竊,等等。
二、使用XSSDetect檢測(cè)跨站腳本XSS漏洞
上面我們對(duì)跨站腳本攻擊(XSS)漏洞及其危害做了簡(jiǎn)單介紹。接下來(lái),我們看看如何使用自動(dòng)化工具來(lái)檢測(cè)跨站點(diǎn)腳本漏洞。
作為Web應(yīng)用程序中最常見(jiàn)的弱點(diǎn)的跨站腳本攻擊漏洞,我們發(fā)現(xiàn)的越早越好,最好能在開(kāi)發(fā)初期就能將它們消滅在萌芽狀態(tài)。古人云,工欲善其事,必先利其器。要想發(fā)現(xiàn)XSS漏洞的話,使用手工方式當(dāng)然未嘗不可,但是效率太低,我們今天要為大家介紹一款自動(dòng)化的工具來(lái)檢測(cè)XSS漏洞,這是一款微軟公司為開(kāi)發(fā)人員提供針對(duì)跨站腳本攻擊的靜態(tài)分析工具:XSSDetect,當(dāng)然,它對(duì)安全滲透測(cè)試人員也也很有用。
XSSDetect是精簡(jiǎn)版的.NET代碼分析工具,原本供微軟內(nèi)部人員尋找應(yīng)用軟件的安全漏洞之用,大概是受開(kāi)源思想影響,現(xiàn)在已經(jīng)可以免費(fèi)下載了。XSSDetect下載地址http://www.microsoft.com/Downloads/details.aspx?FamilyID=19a9e348-bdb9-45b3-a1b7-44ccdcb7cfbe&displaylang=en。
XSSDetect實(shí)際上是一個(gè)Visual Studio插件,它可以識(shí)別ASP.NET Web應(yīng)用程序中的非持久性的XSS漏洞。同時(shí),XSSDetect也是一種靜態(tài)分析工具,它使用微軟的CCI庫(kù)進(jìn)行分析。插件FxCop和XSSDetect都使用了CCI程序庫(kù),但是XSSDetect要比FxCop插件更大,因?yàn)閄SSDetect利用過(guò)程間數(shù)據(jù)流分析技術(shù)檢測(cè)XSS安全漏洞。它使用了源(起點(diǎn),輸入的入口點(diǎn))和匯(終點(diǎn),輸出的方法)的思想來(lái)檢測(cè)可能引起XSS安全漏洞的數(shù)據(jù)通路。下面列出了一些源和匯:
源 |
匯 |
System.Web.HttpRequest.get_QueryString |
System.Web.HttpResponse.Write |
System.Web.HttpRequest.get_Form |
System.IO.TextWriter.Write |
System.Web.HttpRequest.get_Params |
System.Web.UI.WebControls.Label.set_Text |
System.Web.HttpRequest.get_Cookies |
System.Web.UI.WebControls.HyperLink.set_Text |
System.Web.UI.WebControls.TextBox.Text |
System.Web.UI.WebControls.LinkButton.set_Text |
XSSDetect工作時(shí),會(huì)為二進(jìn)制文件建立一個(gè)龐大的數(shù)據(jù)圖,并標(biāo)識(shí)這些源和匯的數(shù)據(jù)通路。只要發(fā)現(xiàn)了使用編碼庫(kù)(例如AntiXss庫(kù))的數(shù)據(jù)通路,就將其排除在結(jié)果之外。要想查看更多源、匯和編碼規(guī)則的信息,可以瀏覽%PROGRAMFILES%\Microsoft\XSSDetect\Config。下面我們來(lái)考察一個(gè)能夠被XSSDetect檢測(cè)到漏洞的代碼。
|
XSSDetect可以檢測(cè)出ASP.NET代碼中XSS安全漏洞的很多變體。XSSDetect目前適用于Visual Studio 2005,將來(lái)還可以在Visual Studio 2008上使用。安裝后進(jìn)入工具菜單,選擇XSS detect菜單項(xiàng),這時(shí)出現(xiàn)如下所示的窗口。
![]() |
圖1 XSSDetect的界面 |
我們只要單擊綠色的“播放”/“運(yùn)行”按鈕(就是工具欄中左邊第一個(gè)按鈕),它便開(kāi)始分析。請(qǐng)確保已經(jīng)安裝Visual Studio 2005和所有參考資料,因?yàn)閄SSDetect將匯編源代碼來(lái)分析二進(jìn)制文件。XSSDetect的另一個(gè)特性是單擊幫助圖標(biāo)即可打開(kāi)幫助文件,從這里可以了解到更多的信息。
三、小結(jié)
跨站腳本攻擊即XSS是Web安全中最常見(jiàn)的漏洞,本文首先對(duì)該漏洞做了簡(jiǎn)單解釋,然后重點(diǎn)向讀者介紹一種檢測(cè)腳本攻擊漏洞的自動(dòng)化工具——XSSDetect。我們不僅介紹了它的基本原理,還以一個(gè)代碼示例進(jìn)行了演示。希望本文對(duì)您的學(xué)習(xí)能夠有所幫助。