實(shí)戰(zhàn)安全工程師訓(xùn)練佳品之WebGoat入門篇
原創(chuàng)【51CTO.com獨(dú)家特稿】WebGoat是由著名的OWASP負(fù)責(zé)維護(hù)的一個(gè)漏洞百出的J2EE Web應(yīng)用程序,這些漏洞并非程序中的bug,而是故意設(shè)計(jì)用來講授Web應(yīng)用程序安全課程的。這個(gè)應(yīng)用程序提供了一個(gè)逼真的教學(xué)環(huán)境,為用戶完成課程提供了有關(guān)的線索。
對(duì)于每堂課,都對(duì)應(yīng)于WebGoat應(yīng)用程序中的一個(gè)實(shí)際的安全漏洞,為了能親身實(shí)踐如何利用這個(gè)漏洞,您首先需要具備該漏洞的有關(guān)知識(shí),雖然WebGoat應(yīng)用程序本身提供了有關(guān)的簡(jiǎn)介,但是很可能需要查找更多的資料才能搞定這個(gè)漏洞,所以,它對(duì)于激發(fā)安全測(cè)試人員和開發(fā)人員來的學(xué)習(xí)興趣和提高安全知識(shí)的理解及動(dòng)手能力方面,都是非常有幫助的。舉個(gè)例子,在其中一個(gè)課程中,用戶必須使用SQL注入來竊?。ǘ抛模┬庞每ㄌ?hào)?!?1CTO王文文:看到這個(gè),由衷的感嘆老外對(duì)網(wǎng)絡(luò)安全教育的認(rèn)真和開放的程度。
一、為什么要設(shè)計(jì)WebGoat
在學(xué)習(xí)和實(shí)踐Web應(yīng)用程序安全知識(shí)時(shí),我們所面臨的一大難點(diǎn)是:到哪里去找可以練手的web應(yīng)用程序呢?顯然,明目張膽地掃描在線書店或者網(wǎng)絡(luò)銀行可不是個(gè)好主意,小心警察叔叔會(huì)找上門來。此外,安全專業(yè)人員經(jīng)常需要測(cè)試某些安全工具,以檢查它們的功能是否如廠商所鼓吹的那般,這時(shí)他們就需要一個(gè)具有確定漏洞的平臺(tái)作為活靶子。但是,無論學(xué)習(xí)web測(cè)試,還是檢查工具性能,都要求在一個(gè)安全、合法的環(huán)境下進(jìn)行。即使你的意圖是好的,但是在未經(jīng)許可的情況下企圖查找安全漏洞也是絕不允許的。這時(shí),WebGoat項(xiàng)目便應(yīng)運(yùn)而生了。
WebGoat項(xiàng)目的主要目標(biāo)很簡(jiǎn)單,就是為Web應(yīng)用程序安全學(xué)習(xí)創(chuàng)建一個(gè)生動(dòng)的交互式教學(xué)環(huán)境。將來,項(xiàng)目研究小組希望將WebGoat發(fā)展成為一個(gè)安全性基準(zhǔn)測(cè)試程序平臺(tái)和一個(gè)基于Java的蜜罐網(wǎng)站。如果您有興趣,也可以查閱這個(gè)項(xiàng)目的路線圖,其中能夠找到一些可以立即參與的任務(wù)。——51CTO王文文:是不是挺像一個(gè)黑客游戲?既能過癮又能練習(xí)網(wǎng)絡(luò)安全技術(shù),最重要的是不用去危害真實(shí)的網(wǎng)站。
二、WebGoat概要
WebGoat是一個(gè)用來演示W(wǎng)eb應(yīng)用程序中的典型安全漏洞的應(yīng)用程序,旨在在應(yīng)用程序安全審計(jì)的上下文中系統(tǒng)、條理地講解如何測(cè)試和利用這些安全漏洞。WebGoat是用Java語言寫成的,因此可以安裝到所有帶有Java虛擬機(jī)的平臺(tái)之上。此外,它還分別為L(zhǎng)inux、OS X Tiger和Windows系統(tǒng)提供了安裝程序。部署該程序后,用戶就可以進(jìn)入課程了,該程序會(huì)自動(dòng)通過記分卡來跟蹤用戶的進(jìn)展。當(dāng)前提供的訓(xùn)練課程有30多個(gè),其中包括:跨站點(diǎn)腳本攻擊(XSS)、訪問控制、線程安全、操作隱藏字段、操縱參數(shù)、弱會(huì)話cookie、SQL盲注、數(shù)字型SQL注入、字符串型SQL注入、web服務(wù)、Open Authentication失效危險(xiǎn)的HTML注釋……等等!
我們希望通過WebGoat幫助測(cè)試人員掌握以下技能:
◆理解web應(yīng)用程序中的各種高級(jí)交互過程
◆確定出有助于發(fā)動(dòng)攻擊的客戶端可見數(shù)據(jù)
◆識(shí)別和理解能將應(yīng)用程序暴露在攻擊之下的數(shù)據(jù)和用戶交互
◆對(duì)這些交互進(jìn)行測(cè)試,并暴露出它們的漏洞
◆攻擊應(yīng)用程序以演示和利用服務(wù)器的弱點(diǎn)
對(duì)于WebGoat來說,它的安裝過程就是下載和解壓縮,然后就可以使用了。然而,一些用戶可能更喜歡下載war文件。下面就所有的安裝方式分別做詳細(xì)的說明。#p#
三、WebGoat標(biāo)準(zhǔn)版安裝方法
WebGoat是一個(gè)平臺(tái)無關(guān)的Web安全漏洞實(shí)驗(yàn)環(huán)境,該環(huán)境需要Apache Tomcat和JAVA開發(fā)環(huán)境的支持。它分別為Microsoft Windows和UN*X環(huán)境提供了相應(yīng)的安裝程序,下面我們將根據(jù)操作系統(tǒng)分別加以介紹。
安裝Java和Tomcat
需要注意,從版本5開始,這一步可以省略,因?yàn)樗鼈冏陨韼в蠮ava Development Kit和Tomcat 5.5。首先安裝Java,您可以從http://java.sun.com/downloads/安裝和部署合適的版本,最低版本要求為1.4.1,然后安裝Tomcat,您可以從http://tomcat.apache.org/download-55.cgi安裝和部署Tomcat。
安裝到Windows系統(tǒng)
1.將WebGoat-OWASP_Standard-5.2.zip解壓至合適的目錄中。
2.若要啟動(dòng)Tomcat,切換至前面存放解壓后的WebGoat的目錄,然后雙擊webgoat.bat即可。
3.啟動(dòng)瀏覽器,在地址欄輸入http://localhost/WebGoat/attack 。注意,這個(gè)鏈接地址是區(qū)分大小寫的,務(wù)必確保其中使用的是大寫字母W和G。
安裝到Linux系統(tǒng)
1.將WebGoat-OWASP_Standard-x.x.zip解壓至您的工作目錄。
2.將webgoat.sh文件中的第17、19和23行中的“1.5”改為“1.6”。
3.因?yàn)樽钚掳姹具\(yùn)行在一個(gè)特權(quán)端口上,所以您需要使用下列命令來啟/停WebGoat Tomcat:
(1). 當(dāng)作為root用戶運(yùn)行在80端口時(shí),使用:
sudo sh webgoat.sh start80 sudo sh webgoat.sh stop |
(2). 當(dāng)運(yùn)行在8080端口時(shí),使用:
sh webgoat.sh start8080 sh webgoat.sh stop |
安裝至OS X(Tiger 10.4+)系統(tǒng)
1.將WebGoat-OWASP_Standard-x.x.zip解壓至您的工作目錄。
2.將webgoat.sh文件中的第10行中的“1.5”改為“1.6”。
3.因?yàn)樽钚掳姹具\(yùn)行在一個(gè)特權(quán)端口上,所以您需要使用下列命令來啟/停WebGoat Tomcat:
(1).當(dāng)作為root用戶運(yùn)行在80端口時(shí),使用:
sudo sh webgoat.sh start80 sudo sh webgoat.sh stop |
(2). 當(dāng)運(yùn)行在8080端口時(shí),使用:
sh webgoat.sh start8080 sh webgoat.sh stop |
安裝至FreeBSD系統(tǒng)
1.使用下面的命令來安裝Tomcat和Java :
cd /usr/ports/www/tomcat55 sudo make install |
2. 安裝Java JDK的時(shí)候,可能需要手工方式進(jìn)行下載,屆時(shí)系統(tǒng)會(huì)給出詳細(xì)的提示。
3. 將WebGoat-OWASP_Standard-x.x.zip解壓至您的工作目錄。
4. 將webgoat.sh文件中的第17、19和23行中的“1.5”改為“1.6”。
5. 因?yàn)樽钚掳姹具\(yùn)行在一個(gè)特權(quán)端口上,所以您需要使用下列命令來啟/停WebGoat Tomcat:
(1).當(dāng)作為root用戶運(yùn)行在80端口時(shí),使用:
sudo sh webgoat.sh start80 sudo sh webgoat.sh stop |
(2). 當(dāng)運(yùn)行在8080端口時(shí),使用:
sh webgoat.sh start8080 sh webgoat.sh stop |
運(yùn)行方法
1. 啟動(dòng)瀏覽器,并在地址欄輸入http://localhost/WebGoat/attack,注意這里使用的大寫的字母W和G。
2. 登錄時(shí),用戶帳號(hào)使用guest,密碼為guest。 #p#
四、WebGoat Developer版安裝方法
WebGoat 5.2 Developer版(位于SourceForge網(wǎng)站),注意:這個(gè)版本旨在提供一個(gè)WebGoat實(shí)驗(yàn)室環(huán)境。如果您想開發(fā)自己的教學(xué)課程,請(qǐng)與Google code站點(diǎn)上的基線同步。
這個(gè)開發(fā)人員版本除了包含標(biāo)準(zhǔn)版本外,還多了一個(gè)已配置的Eclipse環(huán)境。這個(gè)開發(fā)人員版本使用也會(huì)簡(jiǎn)單,下載、解壓縮然后單擊腳本即可。如果您僅僅希望研究有關(guān)課程的話,它用起來跟標(biāo)準(zhǔn)版本沒有什么區(qū)別。然而,如果希望組建實(shí)驗(yàn)室,或者在課堂上使用WebGoat的話,可以使用eclipse.bat腳本來啟動(dòng)一個(gè)預(yù)配置的WebGoat環(huán)境。具體的使用說明,請(qǐng)參見自帶的_HOW TO create the WebGoat workspace.txt_文件。
1.將Eclipse-Workspace.zip抽取至工作目錄
2.雙擊eclipse.bat文件
3.在Eclipse右上角的包資源管理器中,右鍵單擊WebGoat項(xiàng)目,并刷新
4.在Eclipse右上角的包資源管理器中,右鍵單擊Servers項(xiàng)目,并刷新
5.在Eclipse 底部的服務(wù)器視圖中,右鍵單擊localhost服務(wù)器,并啟動(dòng)它
6.在瀏覽器中導(dǎo)航至http://localhost/WebGoat/attack。
7.源代碼發(fā)生的任何變化,都會(huì)自動(dòng)地引起編譯操作,保存后會(huì)自動(dòng)重新部署。#p#
五、WebGoat War文件版安裝方法
這個(gè)版本將假定已經(jīng)預(yù)先安裝了WebGoat Standard版本,或者主機(jī)已經(jīng)安裝了java 1.5(或更高版本)和tomcat 5.5。如果您尚未安裝Standard版本,那么就需要修改tomcat/conf/tomcat-users.xml文件來添加WebGoat用戶,具體請(qǐng)參閱http://code.google.com/p/webgoat/wiki/FAQ。
1.從WebGoat Downloads 鏈接下載WebGoat-OWASP_WAR-X.X.zip。
2.如果Tomcat正在運(yùn)行的話,請(qǐng)先將其關(guān)閉——只需關(guān)閉Tomcat窗口即可。
3.將war文件拷貝至WebGoat-X.X\tomcat\webapps\webgoat.war
4.刪除現(xiàn)有的WebGoat-X.X\tomcat\webapps\webgoat目錄
(1).這會(huì)導(dǎo)致所有的課程狀態(tài)被丟失
(2).若要保存課程狀態(tài),請(qǐng)保留webapps\webgoat\users文件夾的副本
(3).重新啟動(dòng)WebGoat之后恢復(fù)這個(gè)用戶目錄
5.切換至WebGoat-X.X目錄
6.雙擊webgoat.bat文件
這時(shí)Tomcat窗口就會(huì)啟動(dòng)。
7.在瀏覽器中導(dǎo)航至http://localhost/WebGoat/attack。 #p#
六、所需其他工具
對(duì)于老道的應(yīng)用程序安全審計(jì)人員來說,可用的輔助工具有很多。就我們這種類型的安全審計(jì)來說,最常用的工具就是本地代理和web/應(yīng)用程序爬蟲。為了完成全套WebGoat課程,web代理程序是必不可少的。
應(yīng)用程序?qū)徲?jì)代理
一般的web代理通常都能接收、處理和轉(zhuǎn)發(fā)客戶和服務(wù)器之間的HTTP和HTTPS數(shù)據(jù),這樣就能讓所有的web通信流量都流經(jīng)某個(gè)點(diǎn),以便通過高速緩存或者應(yīng)用安全策略來監(jiān)視利用率、提高性能,等等。
應(yīng)用程序代理工具可用來攔截本地客戶端的瀏覽器和服務(wù)器端之間所有的HTTP和HTTPS通信,它實(shí)際上充當(dāng)了一個(gè)可以監(jiān)視、檢查和(最重要地)修改所有的交互的中間人角色。
通過這種工具,審計(jì)人員可以準(zhǔn)確確定出在客戶和服務(wù)器之間傳遞的到底是什么樣的數(shù)據(jù)。此外,它們還可以對(duì)這些數(shù)據(jù)進(jìn)行分析和修改,從而測(cè)試對(duì)應(yīng)用程序的影響。
在WebGoat的許多課程中,應(yīng)用程序?qū)徲?jì)代理或者具備同等功能的軟件都是必不可少的。下列是我們推薦的工具:
◆WebScarab:WebScarab Project
◆BurpProxy- http://portswigger.net/
◆ParosProxy - http://parosproxy.org
應(yīng)用程序爬蟲
所謂爬行一個(gè)站點(diǎn),實(shí)際上就是識(shí)別和訪問網(wǎng)站應(yīng)用程序內(nèi)所有預(yù)定的頁(yè)面和鏈接,并建立本地副本;當(dāng)然建立副本這一點(diǎn)通常是可選的。然后,我們就可以分析爬行結(jié)果,得到應(yīng)用程序內(nèi)目標(biāo)腳本、表單、頁(yè)面和字段等組成的明細(xì)表供后面的測(cè)試之用。鏡像下來的內(nèi)容也可以用來分析有關(guān)信息,這樣做要比人工或者在線分析要快得多了。
下列是我們推薦的工具:
◆WebScarab:WebScarab Project
◆BurpSpider - http://portswigger.net
◆ParosProxy - http://parosproxy.org #p#
七、WebGoat操作指南
開始使用WebGoat之前,必須首先啟動(dòng)Tomcat,這可以通過Tomcat的bin目錄中的腳本/批處理程序startup來完成。此外,要想正常使用WebGoat,它必須具備作為服務(wù)器運(yùn)行所需的權(quán)限,并允許一些不常見的web行為。當(dāng)主機(jī)運(yùn)行WebGoat時(shí),WebGoat的安全漏洞會(huì)牽連到主機(jī),從而使主機(jī)很容易遭到攻擊。如果機(jī)器連接到了互聯(lián)網(wǎng),那么就應(yīng)該將其斷開。運(yùn)行的個(gè)人防火墻可能會(huì)阻止WebGoat的正常使用。所以,運(yùn)行WebGoat時(shí)需要禁用所有的個(gè)人防火墻。
我們可以通過瀏覽器瀏覽localhost的80端口訪問Tomcat服務(wù)器,如http://127.0.0.1。
WebGoat位于WebGoat目錄,其中的課程包含在http://127.0.0.1/WebGoat/attack中。
WebGoat應(yīng)用程序施行基于角色的安全機(jī)制。登錄對(duì)話請(qǐng)求會(huì)要求輸入身份憑證,登錄時(shí),可以將guest作為用戶標(biāo)識(shí)和密碼使用。
![]() |
圖1 登錄頁(yè)面 |
成功登錄之后,Tomcat服務(wù)器將顯示W(wǎng)ebGoat的歡迎頁(yè)面。
![]() |
圖2 歡迎頁(yè)面 |
下面介紹WebGoat的基本操作。我們知道,無論應(yīng)用程序安全審計(jì)的哪個(gè)階段,都需要對(duì)目標(biāo)的運(yùn)作機(jī)制有深入的了解。這通常包括:
◆考察客戶端內(nèi)容,諸如HTML和腳本
◆分析客戶和服務(wù)器之間的通訊
◆檢查cookie及其他本地?cái)?shù)據(jù)
瀏覽器已經(jīng)使得查看HTML源代碼變得非常輕松,而WebGoat又增加了多種操作,包括顯示參數(shù)、顯示HTML、顯示Cookies和顯示Java等。
![]() |
圖3 WebGoat顯示HTML源代碼 |
在普通環(huán)境之下,瀏覽器只提供查看HTML源代碼的功能部件,對(duì)于微軟公司的Internet Explorer瀏覽器,可以通過“查看”菜單下的“源文件”選項(xiàng)來查看HTML源代碼。對(duì)于Firefox瀏覽器來說,查看頁(yè)面源碼的功能同樣位于“查看”菜單下的“頁(yè)面源代碼”下。 WebGoat的顯示HTML功能僅僅展示當(dāng)前課程相應(yīng)的HTML代碼,而不包括側(cè)欄和上欄對(duì)應(yīng)的HTML代碼。
![]() |
圖4 顯示HTML源代碼 |
這里,參數(shù)和cookie顯示為紅色。
![]() |
圖5 顯示參數(shù)Cookies |
這里顯示Java操作會(huì)彈出一個(gè)包含源代碼的新窗口。
下面介紹如何使用代理,要想充分挖掘WebGoat的各種功能,我們需要借助以審計(jì)人員常用的應(yīng)用程序?qū)徲?jì)代理程序。這有助于進(jìn)行更深入的分析,并能修改客戶端-服務(wù)器的交互和傳輸過程中的數(shù)據(jù)。由于不同的工具,其使用和配置方法也不相同,但基本概念是一致的:
◆應(yīng)用程序?qū)徲?jì)代理必須位于客戶端的瀏覽器和遠(yuǎn)程服務(wù)器之間。
◆它應(yīng)該允許顯示和修改傳輸中的所有HTTP數(shù)據(jù)。
該工具通常會(huì)直接插入瀏覽器,或者在另一個(gè)本機(jī)端口進(jìn)行偵聽。當(dāng)代理程序直接插入瀏覽器的時(shí)候,需要在瀏覽器中鍵入一個(gè)特殊的URL。當(dāng)該工具偵聽端口時(shí),則需要對(duì)瀏覽器進(jìn)行相應(yīng)的配置,方可正常使用該工具。在微軟公司的Internet Explorer中,可以通過工具菜單完成配置工作,如下所示:
1. 選擇工具菜單中的“Internet 選項(xiàng)”菜單項(xiàng)。
2. 選擇“連接”選項(xiàng)卡。
3. 單擊選項(xiàng)卡下方的“局域網(wǎng)設(shè)置…”按鈕。
4. 在局域網(wǎng)設(shè)置對(duì)話框中,選中為L(zhǎng)AN使用代理服務(wù)器的復(fù)選框。
5. 不選“對(duì)本地地址不使用代理服務(wù)器”框。
6. 輸入代理工具將要偵聽的地址和端口。對(duì)于WebScarab而言,其默認(rèn)偵聽端口是8008。
![]() |
圖6 局域網(wǎng)設(shè)置 |
現(xiàn)在,每當(dāng)從客戶端的瀏覽器接收或者發(fā)送數(shù)據(jù)時(shí),我們都能通過攔截、分析和修改這些HTTP請(qǐng)求來測(cè)試應(yīng)用程序,從而安全性缺陷。審計(jì)人員可以借助這類代理獲得多種能力,包括:
◆不管GET/POST參數(shù)的隱藏狀態(tài)如何,都可以對(duì)其進(jìn)行修改。
◆無論是持久性還是非持久性的Cookie,當(dāng)它們進(jìn)入和離開瀏覽器時(shí),我們都可以對(duì)其進(jìn)行修改。
◆因?yàn)閰?shù)可以在發(fā)送給服務(wù)器之前進(jìn)行即時(shí)修改,所以我們可以繞過所有的客戶端數(shù)據(jù)驗(yàn)證。
◆能夠暴露高速緩存的數(shù)據(jù),以便于分析。
◆能夠暴露出Server:及其他報(bào)頭,這對(duì)于調(diào)查遠(yuǎn)程web服務(wù)器類型和所用的應(yīng)用程序-服務(wù)器技術(shù)非常有利。 #p#
八、WebScarab入門指南
WebScarab具有大量的功能,因而可能會(huì)讓新用戶有一種無從下手之感。為求簡(jiǎn)單起見,攔截和修改瀏覽器和HTTP/S服務(wù)器的請(qǐng)求和響應(yīng)可以作為初學(xué)者很好的入門課,因?yàn)檫@無需學(xué)習(xí)太多的內(nèi)容就可以完成。
首先,我們假定您能夠自由訪問因特網(wǎng),也就是說,您并非位于一個(gè)代理之后。為簡(jiǎn)單起見,我們還假定您使用的瀏覽器是Internet Explorer。
![]() |
圖7 |
上面是WebScarab啟動(dòng)后的截圖,其中有幾個(gè)主要的區(qū)域需要介紹一下。首先要介紹的是工具欄,從這里可以訪問各個(gè)插件,摘要窗口(主視圖)和消息窗口。
摘要窗口分成兩個(gè)部分,上面部分是一個(gè)樹表,顯示我們?cè)L問的站點(diǎn)的布局,以及各個(gè)URL的屬性。下面部分是一個(gè)表格,顯示通過WebScarab可以看到的所有會(huì)話,正常情況下它們以ID逆序排列,所以靠近表頂部的是最近的會(huì)話。當(dāng)然,會(huì)話的排列次序是可以更改的,如果需要的話,只需通過單擊列標(biāo)頭即可。
為了將WebScarab作為代理使用,需要配置瀏覽器,讓瀏覽器將WebScarab作為其代理。 我們可以通過IE的工具菜單完成配置工作。通過菜單欄,依次選擇選擇“工具”菜單、“Internet 選項(xiàng)”、“連接”、“局域網(wǎng)設(shè)置”來打開代理配置對(duì)話框。
![]() |
圖8 |
WebScarab 默認(rèn)時(shí)使用localhost的8008端口作為其代理。需要對(duì)IE進(jìn)行配置,讓IE把各種請(qǐng)求轉(zhuǎn)發(fā)給WebScarab,而不是讓IE讀取這些請(qǐng)求,如上圖所示。確保除“為L(zhǎng)AN使用代理服務(wù)器”之外的所有復(fù)選框都處于未選中狀態(tài)。為IE配置好這個(gè)代理后,在其它對(duì)話框中單擊確定按鈕,并重新回到瀏覽器。瀏覽一個(gè)非SSL的網(wǎng)站,于是轉(zhuǎn)向WebScarab。
這時(shí),您應(yīng)該看到如下圖所示的畫面;否則的話,或者是在瀏覽時(shí)遇到錯(cuò)誤的話,您應(yīng)當(dāng)回到上面的步驟,檢查你的Internet Explorer中的代理設(shè)置是否如上所述。如果代理設(shè)置是正確的,還有一種可能原因是端口8008已經(jīng)被其他程序占用,這樣的話WebScarab就無法正常使用該端口了。如果是這樣的話,您應(yīng)當(dāng)停用那個(gè)程序。后面我們會(huì)介紹如何讓W(xué)ebScarab使用不同的端口。
注意:如果您正在使用WebScarab測(cè)試的站點(diǎn)與瀏覽器位于同一個(gè)主機(jī)之上(即localhost或者127.0.0.1),并且瀏覽器為IE7的話,則需要在主機(jī)名的后面添加一個(gè)點(diǎn)號(hào)“.”,從而強(qiáng)迫IE7使用您配置的代理。這可不是WebScarab的一個(gè)bug,而是IE 開發(fā)人員所做的一個(gè)令人遺憾的設(shè)計(jì)決策。 如果IE覺得您試圖訪問的服務(wù)器位于本地計(jì)算機(jī)上,它就會(huì)忽略所有的代理設(shè)置,欺騙它的一個(gè)方法是在主機(jī)名后面加一個(gè)點(diǎn),例如http://localhost./WebGoat/attack。這將強(qiáng)迫IE使用我們配置的代理。
![]() |
圖9 |
這里您可以看到一個(gè)URL樹,用來表示站點(diǎn)布局,以及經(jīng)過WebScarab的各個(gè)會(huì)話。要想查看一個(gè)特定會(huì)話的詳細(xì)信息,您可以雙擊表中的一行,這時(shí)會(huì)彈出一個(gè)顯示請(qǐng)求和響應(yīng)的詳細(xì)信息的窗口。您可以通過多種形式來查看請(qǐng)求和響應(yīng),這里顯示的是一個(gè)Parsed視圖,在這里,報(bào)頭被分解成一個(gè)表,并且請(qǐng)求或者響應(yīng)的內(nèi)容按照Content-Type報(bào)頭進(jìn)行顯示。您還可以選擇Raw格式,這樣的話,請(qǐng)求或者響應(yīng)就會(huì)嚴(yán)格按照它們的原始形態(tài)進(jìn)行展示。
![]() |
圖10 |
在會(huì)話窗口中,您可以通過“previous”按鈕和“next”按鈕從一個(gè)會(huì)話切換到另一個(gè)會(huì)話,也可通過下拉式組合框直接跳到特定的會(huì)話。
現(xiàn)在,您已經(jīng)熟悉了WebScarab的基本界面,并且正確地配置了瀏覽器,接下來要做的就是攔截一些請(qǐng)求,并且在它們被發(fā)送給服務(wù)器之前對(duì)其進(jìn)行修改。
我們可以啟用代理插件的攔截功能,方法是通過工具欄上的“proxy”按鈕。然后,選擇“Manual Edit”選項(xiàng)卡。一旦選中“Intercept Requests”復(fù)選框,我們就可以選擇希望攔截的請(qǐng)求方法(大部分情況下是GET或者POST),甚至可以使用Ctrl+單擊的方式選擇多個(gè)方法。 目前,我們只選擇“GET”。
![]() |
圖11 |
現(xiàn)在,返回到你的瀏覽器,并單擊一個(gè)鏈接。這時(shí),將會(huì)看到如下所示的一個(gè)窗口。最初,它只是在任務(wù)攔閃爍,只要點(diǎn)選它,就能正確顯示了。
![]() |
圖12 |
現(xiàn)在,我們就可以編輯選擇的請(qǐng)求的任何部分了。需要注意的是,報(bào)頭是以URL譯碼形式顯示的,而輸入的一切都會(huì)自動(dòng)地URL編碼。如果您不想這樣的話,則可以使用Raw模式。在某些情況下,使用Raw模式可能是最簡(jiǎn)單的形式,尤其是您希望粘貼某些東西的時(shí)候。
作出修改后,單擊“Accept changes”按鈕就會(huì)將修改后的請(qǐng)求發(fā)送到服務(wù)器。如果您希望取消所在的修改,可以單擊“Cancel changes”按鈕,這樣就會(huì)發(fā)送原始的請(qǐng)求。 您還可以單擊“Abort request”按鈕,如果您根本不想給服務(wù)器發(fā)送一個(gè)請(qǐng)求的話,這會(huì)向?yàn)g覽器返一個(gè)錯(cuò)誤。最后,如果打開了多個(gè)攔截窗口(也就是說瀏覽器同時(shí)使用了若干線程),您可以使用“Cancel ALL intercepts”按鈕來釋放所有的請(qǐng)求。
WebScarab將一直攔截所有的匹配我們指定的方法的請(qǐng)求,直到您在攔截會(huì)話窗口或者Proxy插件的“Manual Edit”選項(xiàng)卡取消選中“intercept requests”復(fù)選框?yàn)橹?。但是,您可能?huì)奇怪:為什么WebScarab不會(huì)攔截對(duì)圖像、樣式表、javascript等內(nèi)容的請(qǐng)求。如果您返回到“Manual Edit”選項(xiàng)卡,將會(huì)看到一個(gè)標(biāo)識(shí)為“Exclude paths matching :”的字段。 這個(gè)字段包含一個(gè)正則表達(dá)式,用于匹配請(qǐng)求的URL,如果匹配,則該請(qǐng)求就不會(huì)被攔截。
如果您想改變頁(yè)面某些行為的話,您還可以通過配置WebScarab使其攔截有關(guān)響應(yīng),舉例來說,您可以禁用javascript驗(yàn)證,修改SELECT字段可選項(xiàng),等等。
九、小結(jié)
WebGoat是由著名的OWASP負(fù)責(zé)維護(hù)的一個(gè)漏洞百出的J2EE Web應(yīng)用程序,這些漏洞并非程序中的bug,而是故意設(shè)計(jì)用來講授Web應(yīng)用程序安全課程的。這個(gè)應(yīng)用程序提供了一個(gè)逼真的教學(xué)環(huán)境,為用戶完成課程提供了有關(guān)的線索。本文對(duì)該工具的安裝和使用做了詳細(xì)的介紹,希望本文能夠?qū)ψx者有所幫助。
【51CTO.COM 獨(dú)家特稿,轉(zhuǎn)載請(qǐng)注明出處及作者!】
【編輯推薦】