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