實戰安全工程師訓練佳品之WebGoat

文章來源:http://bbs.hh010.com/www/do/bencandy-htm-fid-51-aid-64300-page-1.html

                                       實戰安全工程師訓練佳品之WebGoat

WebGoat是由著名的OWASP負責維護的一個漏洞百出的J2EE Web應用程序,這些漏洞並非程序中的bug,而是故意設計用來講授Web應用程序安全課程的。這個應用程序提供了一個逼真的教學環境,爲用戶完成課程提供了有關的線索。

對 於每堂課,都對應於WebGoat應用程序中的一個實際的安全漏洞,爲了能親身實踐如何利用這個漏洞,您首先需要具備該漏洞的有關知識,雖然 WebGoat應用程序本身提供了有關的簡介,但是很可能需要查找更多的資料才能搞定這個漏洞,所以,它對於激發安全測試人員和開發人員來的學習興趣和提 高安全知識的理解及動手能力方面,都是非常有幫助的。舉個例子,在其中一個課程中,用戶必須使用SQL注入來竊取(杜撰的)信用卡號。——51CTO王文 文:看到這個,由衷的感嘆老外對網絡安全教育的認真和開放的程度。

一、爲什麼要設計WebGoat

在 學習和實踐Web應用程序安全知識時,我們所面臨的一大難點是:到哪裏去找可以練手的web應用程序呢?顯然,明目張膽地掃描在線書店或者網絡銀行可不是 個好主意,小心警察叔叔會找上門來。此外,安全專業人員經常需要測試某些安全工具,以檢查它們的功能是否如廠商所鼓吹的那般,這時他們就需要一個具有確定 漏洞的平臺作爲活靶子。但是,無論學習web測試,還是檢查工具性能,都要求在一個安全、合法的環境下進行。即使你的意圖是好的,但是在未經許可的情況下 企圖查找安全漏洞也是絕不允許的。這時,WebGoat項目便應運而生了。

WebGoat 項目的主要目標很簡單,就是爲Web應用程序安全學習創建一個生動的交互式教學環境。將來,項目研究小組希望將WebGoat發展成爲一個安全性基準測試 程序平臺和一個基於Java的蜜罐網站。如果您有興趣,也可以查閱這個項目的路線圖,其中能夠找到一些可以立即參與的任務。——51CTO王文文:是不是 挺像一個黑客遊戲?既能過癮又能練習網絡安全技術,最重要的是不用去危害真實的網站。

二、WebGoat概要

WebGoat 是一個用來演示Web應用程序中的典型安全漏洞的應用程序,旨在在應用程序安全審計的上下文中系統、條理地講解如何測試和利用這些安全漏洞。 WebGoat是用Java語言寫成的,因此可以安裝到所有帶有Java虛擬機的平臺之上。此外,它還分別爲Linux、OS X Tiger和Windows系統提供了安裝程序。部署該程序後,用戶就可以進入課程了,該程序會自動通過記分卡來跟蹤用戶的進展。當前提供的訓練課程有 30多個,其中包括:跨站點腳本攻擊(XSS)、訪問控制、線程安全、操作隱藏字段、操縱參數、弱會話cookie、SQL盲注、數字型SQL注入、字符 串型SQL注入、web服務、Open Authentication失效危險的HTML註釋……等等!

我們希望通過WebGoat幫助測試人員掌握以下技能: 

◆理解web應用程序中的各種高級交互過程 

◆確定出有助於發動攻擊的客戶端可見數據 

◆識別和理解能將應用程序暴露在攻擊之下的數據和用戶交互 

◆對這些交互進行測試,並暴露出它們的漏洞 

◆攻擊應用程序以演示和利用服務器的弱點

對於WebGoat來說,它的安裝過程就是下載和解壓縮,然後就可以使用了。然而,一些用戶可能更喜歡下載war文件。下面就所有的安裝方式分別做詳細的說明。

四、WebGoat Developer版安裝方法

WebGoat 5.2 Developer版(位於SourceForge網站),注意:這個版本旨在提供一個WebGoat實驗室環境。如果您想開發自己的教學課程,請與Google code站點上的基線同步。

這 個開發人員版本除了包含標準版本外,還多了一個已配置的Eclipse環境。這個開發人員版本使用也會簡單,下載、解壓縮然後單擊腳本即可。如果您僅僅希 望研究有關課程的話,它用起來跟標準版本沒有什麼區別。然而,如果希望組建實驗室,或者在課堂上使用WebGoat的話,可以使用eclipse.bat 腳本來啓動一個預配置的WebGoat環境。具體的使用說明,請參見自帶的_HOW TO create the WebGoat workspace.txt_文件。

1.將Eclipse-Workspace.zip抽取至工作目錄

2.雙擊eclipse.bat文件

3.在Eclipse右上角的包資源管理器中,右鍵單擊WebGoat項目,並刷新

4.在Eclipse右上角的包資源管理器中,右鍵單擊Servers項目,並刷新

5.在Eclipse 底部的服務器視圖中,右鍵單擊localhost服務器,並啓動它

6.在瀏覽器中導航至http://localhost/WebGoat/attack。

7.源代碼發生的任何變化,都會自動地引起編譯操作,保存後會自動重新部署。

五、WebGoat War文件版安裝方法

這 個版本將假定已經預先安裝了WebGoat Standard版本,或者主機已經安裝了java 1.5(或更高版本)和tomcat 5.5。如果您尚未安裝Standard版本,那麼就需要修改tomcat/conf/tomcat-users.xml文件來添加WebGoat用戶, 具體請參閱http://code.google.com/p/webgoat/wiki/FAQ。

1.從WebGoat Downloads 鏈接下載WebGoat-OWASP_WAR-X.X.zip。

2.如果Tomcat正在運行的話,請先將其關閉——只需關閉Tomcat窗口即可。

3.將war文件拷貝至WebGoat-X.X/tomcat/webapps/webgoat.war

4.刪除現有的WebGoat-X.X/tomcat/webapps/webgoat目錄

(1).這會導致所有的課程狀態被丟失

(2).若要保存課程狀態,請保留webapps/webgoat/users文件夾的副本

(3).重新啓動WebGoat之後恢復這個用戶目錄

5.切換至WebGoat-X.X目錄

6.雙擊webgoat.bat文件

這時Tomcat窗口就會啓動。

7.在瀏覽器中導航至http://localhost/WebGoat/attack。

六、所需其他工具

對於老道的應用程序安全審計人員來說,可用的輔助工具有很多。就我們這種類型的安全審計來說,最常用的工具就是本地代理和web/應用程序爬蟲。爲了完成全套WebGoat課程,web代理程序是必不可少的。

應用程序審計代理

一般的web代理通常都能接收、處理和轉發客戶和服務器之間的HTTP和HTTPS數據,這樣就能讓所有的web通信流量都流經某個點,以便通過高速緩存或者應用安全策略來監視利用率、提高性能,等等。

應用程序代理工具可用來攔截本地客戶端的瀏覽器和服務器端之間所有的HTTP和HTTPS通信,它實際上充當了一個可以監視、檢查和(最重要地)修改所有的交互的中間人角色。

通過這種工具,審計人員可以準確確定出在客戶和服務器之間傳遞的到底是什麼樣的數據。此外,它們還可以對這些數據進行分析和修改,從而測試對應用程序的影響。

在WebGoat的許多課程中,應用程序審計代理或者具備同等功能的軟件都是必不可少的。下列是我們推薦的工具:

◆WebScarab:WebScarab Project 

◆BurpProxy- http://portswigger.net/ 

◆ParosProxy - http://parosproxy.org

應用程序爬蟲

所 謂爬行一個站點,實際上就是識別和訪問網站應用程序內所有預定的頁面和鏈接,並建立本地副本;當然建立副本這一點通常是可選的。然後,我們就可以分析爬行 結果,得到應用程序內目標腳本、表單、頁面和字段等組成的明細表供後面的測試之用。鏡像下來的內容也可以用來分析有關信息,這樣做要比人工或者在線分析要 快得多了。

下列是我們推薦的工具:

◆WebScarab:WebScarab Project 

◆BurpSpider - http://portswigger.net 

◆ParosProxy - http://parosproxy.org

七、WebGoat操作指南

開 始使用WebGoat之前,必須首先啓動Tomcat,這可以通過Tomcat的bin目錄中的腳本/批處理程序startup來完成。此外,要想正常使 用WebGoat,它必須具備作爲服務器運行所需的權限,並允許一些不常見的web行爲。當主機運行WebGoat時,WebGoat的安全漏洞會牽連到 主機,從而使主機很容易遭到攻擊。如果機器連接到了互聯網,那麼就應該將其斷開。運行的個人防火牆可能會阻止WebGoat的正常使用。所以,運行 WebGoat時需要禁用所有的個人防火牆。

我們可以通過瀏覽器瀏覽localhost的80端口訪問Tomcat服務器,如http://127.0.0.1。

WebGoat位於WebGoat目錄,其中的課程包含在http://127.0.0.1/WebGoat/attack中。

WebGoat應用程序施行基於角色的安全機制。登錄對話請求會要求輸入身份憑證,登錄時,可以將guest作爲用戶標識和密碼使用。

 
圖1   登錄頁面

成功登錄之後,Tomcat服務器將顯示WebGoat的歡迎頁面。

 
圖2 歡迎頁面

下面介紹WebGoat的基本操作。我們知道,無論應用程序安全審計的哪個階段,都需要對目標的運作機制有深入的瞭解。這通常包括:

◆考察客戶端內容,諸如HTML和腳本 

◆分析客戶和服務器之間的通訊 

◆檢查cookie及其他本地數據

瀏覽器已經使得查看HTML源代碼變得非常輕鬆,而WebGoat又增加了多種操作,包括顯示參數、顯示HTML、顯示Cookies和顯示Java等。

 
圖3  WebGoat顯示HTML源代碼

在 普通環境之下,瀏覽器只提供查看HTML源代碼的功能部件,對於微軟公司的Internet Explorer瀏覽器,可以通過“查看”菜單下的“源文件”選項來查看HTML源代碼。對於Firefox瀏覽器來說,查看頁面源碼的功能同樣位於“查 看”菜單下的“頁面源代碼”下。 WebGoat的顯示HTML功能僅僅展示當前課程相應的HTML代碼,而不包括側欄和上欄對應的HTML代碼。

 
圖4  顯示HTML源代碼

這裏,參數和cookie顯示爲紅色。

 
圖5  顯示參數Cookies

這裏顯示Java操作會彈出一個包含源代碼的新窗口。

下面介紹如何使用代理,要想充分挖掘WebGoat的各種功能,我們需要藉助以審計人員常用的應用程序審計代理程序。這有助於進行更深入的分析,並能修改客戶端-服務器的交互和傳輸過程中的數據。由於不同的工具,其使用和配置方法也不相同,但基本概念是一致的:

◆應用程序審計代理必須位於客戶端的瀏覽器和遠程服務器之間。 

◆它應該允許顯示和修改傳輸中的所有HTTP數據。

該 工具通常會直接插入瀏覽器,或者在另一個本機端口進行偵聽。當代理程序直接插入瀏覽器的時候,需要在瀏覽器中鍵入一個特殊的URL。當該工具偵聽端口時, 則需要對瀏覽器進行相應的配置,方可正常使用該工具。在微軟公司的Internet Explorer中,可以通過工具菜單完成配置工作,如下所示:

1. 選擇工具菜單中的“Internet 選項”菜單項。  

2. 選擇“連接”選項卡。  

3. 單擊選項卡下方的“局域網設置…”按鈕。   

4. 在局域網設置對話框中,選中爲LAN使用代理服務器的複選框。 

5. 不選“對本地地址不使用代理服務器”框。  

6. 輸入代理工具將要偵聽的地址和端口。對於WebScarab而言,其默認偵聽端口是8008。

 
圖6   局域網設置

現在,每當從客戶端的瀏覽器接收或者發送數據時,我們都能通過攔截、分析和修改這些HTTP請求來測試應用程序,從而安全性缺陷。審計人員可以藉助這類代理獲得多種能力,包括: 

◆不管GET/POST參數的隱藏狀態如何,都可以對其進行修改。 

◆無論是持久性還是非持久性的Cookie,當它們進入和離開瀏覽器時,我們都可以對其進行修改。 

◆因爲參數可以在發送給服務器之前進行即時修改,所以我們可以繞過所有的客戶端數據驗證。 

◆能夠暴露高速緩存的數據,以便於分析。 

◆能夠暴露出Server:及其他報頭,這對於調查遠程web服務器類型和所用的應用程序-服務器技術非常有利

八、WebScarab入門指南

WebScarab具有大量的功能,因而可能會讓新用戶有一種無從下手之感。爲求簡單起見,攔截和修改瀏覽器和HTTP/S服務器的請求和響應可以作爲初學者很好的入門課,因爲這無需學習太多的內容就可以完成。

首先,我們假定您能夠自由訪問因特網,也就是說,您並非位於一個代理之後。爲簡單起見,我們還假定您使用的瀏覽器是Internet Explorer。

 
圖7

上面是WebScarab啓動後的截圖,其中有幾個主要的區域需要介紹一下。首先要介紹的是工具欄,從這裏可以訪問各個插件,摘要窗口(主視圖)和消息窗口。

摘 要窗口分成兩個部分,上面部分是一個樹表,顯示我們訪問的站點的佈局,以及各個URL的屬性。下面部分是一個表格,顯示通過WebScarab可以看到的 所有會話,正常情況下它們以ID逆序排列,所以靠近表頂部的是最近的會話。當然,會話的排列次序是可以更改的,如果需要的話,只需通過單擊列標頭即可。

爲了將WebScarab作爲代理使用,需要配置瀏覽器,讓瀏覽器將WebScarab作爲其代理。 我們可以通過IE的工具菜單完成配置工作。通過菜單欄,依次選擇選擇“工具”菜單、“Internet 選項”、“連接”、“局域網設置”來打開代理配置對話框。

 
圖8

WebScarab 默認時使用localhost的8008端口作爲其代理。需要對IE進行配置,讓IE把各種請求轉發給WebScarab,而不是讓IE讀取這些請求,如 上圖所示。確保除“爲LAN使用代理服務器”之外的所有複選框都處於未選中狀態。爲IE配置好這個代理後,在其它對話框中單擊確定按鈕,並重新回到瀏覽 器。瀏覽一個非SSL的網站,於是轉向WebScarab。

這時,您應該看到如下圖所示的畫面;否則的話,或者是在瀏覽時遇到錯誤的話,您 應當回到上面的步驟,檢查你的Internet Explorer中的代理設置是否如上所述。如果代理設置是正確的,還有一種可能原因是端口8008已經被其他程序佔用,這樣的話WebScarab就無 法正常使用該端口了。如果是這樣的話,您應當停用那個程序。後面我們會介紹如何讓WebScarab使用不同的端口。

注意:如果您正在使用 WebScarab測試的站點與瀏覽器位於同一個主機之上(即localhost或者127.0.0.1),並且瀏覽器爲IE7的話,則需要在主機名的後 面添加一個點號“.”,從而強迫IE7使用您配置的代理。這可不是WebScarab的一個bug,而是IE 開發人員所做的一個令人遺憾的設計決策。 如果IE覺得您試圖訪問的服務器位於本地計算機上,它就會忽略所有的代理設置,欺騙它的一個方法是在主機名後面加一個點,例如 http://localhost./WebGoat/attack。這將強迫IE使用我們配置的代理。

 
圖9

這 裏您可以看到一個URL樹,用來表示站點佈局,以及經過WebScarab的各個會話。要想查看一個特定會話的詳細信息,您可以雙擊表中的一行,這時會彈 出一個顯示請求和響應的詳細信息的窗口。您可以通過多種形式來查看請求和響應,這裏顯示的是一個Parsed視圖,在這裏,報頭被分解成一個表,並且請求 或者響應的內容按照Content-Type報頭進行顯示。您還可以選擇Raw格式,這樣的話,請求或者響應就會嚴格按照它們的原始形態進行展示。

 
圖10

在會話窗口中,您可以通過“previous”按鈕和“next”按鈕從一個會話切換到另一個會話,也可通過下拉式組合框直接跳到特定的會話。

現在,您已經熟悉了WebScarab的基本界面,並且正確地配置了瀏覽器,接下來要做的就是攔截一些請求,並且在它們被髮送給服務器之前對其進行修改。

我 們可以啓用代理插件的攔截功能,方法是通過工具欄上的“proxy”按鈕。然後,選擇“Manual Edit”選項卡。一旦選中“Intercept Requests”複選框,我們就可以選擇希望攔截的請求方法(大部分情況下是GET或者POST),甚至可以使用Ctrl+單擊的方式選擇多個方法。 目前,我們只選擇“GET”。

 
圖11

現在,返回到你的瀏覽器,並單擊一個鏈接。這時,將會看到如下所示的一個窗口。最初,它只是在任務攔閃爍,只要點選它,就能正確顯示了。

 
圖12

現在,我們就可以編輯選擇的請求的任何部分了。需要注意的是,報頭是以URL譯碼形式顯示的,而輸入的一切都會自動地URL編碼。如果您不想這樣的話,則可以使用Raw模式。在某些情況下,使用Raw模式可能是最簡單的形式,尤其是您希望粘貼某些東西的時候。

作 出修改後,單擊“Accept changes”按鈕就會將修改後的請求發送到服務器。如果您希望取消所在的修改,可以單擊“Cancel changes”按鈕,這樣就會發送原始的請求。 您還可以單擊“Abort request”按鈕,如果您根本不想給服務器發送一個請求的話,這會向瀏覽器返一個錯誤。最後,如果打開了多個攔截窗口(也就是說瀏覽器同時使用了若干 線程),您可以使用“Cancel ALL intercepts”按鈕來釋放所有的請求。

WebScarab將一直攔截所有的匹配我們指 定的方法的請求,直到您在攔截會話窗口或者Proxy插件的“Manual Edit”選項卡取消選中“intercept requests”複選框爲止。但是,您可能會奇怪:爲什麼WebScarab不會攔截對圖像、樣式表、javascript等內容的請求。如果您返回到 “Manual Edit”選項卡,將會看到一個標識爲“Exclude paths matching :”的字段。 這個字段包含一個正則表達式,用於匹配請求的URL,如果匹配,則該請求就不會被攔截。

如果您想改變頁面某些行爲的話,您還可以通過配置WebScarab使其攔截有關響應,舉例來說,您可以禁用javascript驗證,修改SELECT字段可選項,等等。

九、小結

WebGoat 是由著名的OWASP負責維護的一個漏洞百出的J2EE Web應用程序,這些漏洞並非程序中的bug,而是故意設計用來講授Web應用程序安全課程的。這個應用程序提供了一個逼真的教學環境,爲用戶完成課程提 供了有關的線索。本文對該工具的安裝和使用做了詳細的介紹,希望本文能夠對讀者有所幫助。

【51CTO.COM 獨家特稿,轉載請註明出處及作者!】



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章