《黑客秘笈——渗透测试实用指南》—第2章2.4节Web应用程序的扫描
本節書摘來自異步社區《黑客秘笈——滲透測試實用指南》一書中的第2章2.4節Web應用程序的掃描,作者【美】Peter Kim(彼得 基姆),更多章節內容可以訪問云棲社區“異步社區”公眾號查看。
2.4 Web應用程序的掃描
黑客秘笈——滲透測試實用指南
網絡掃描器、Peeping Tom可大致揭露測試目標的網絡構造。在此之后,我們就可以進行Web應用程序掃描了。本文主要圍繞Burp Suite程序討論Web應用程序的掃描方法。確實有許多開源、免費的工具可進行Web應用程序掃描,例如ZAP、WebScarab、Nikto、w3af等程序都很不錯。但是我們有必要再次強調一下,滲透測試的工具應當是速度最快、掃描結果最好的測試工具。雖然Burp Suite專業版(http://portswigger.net/burp/)是款付費工具,但是其價格僅需300美元。不僅其作者積極地進行著更新,許多的安全研究人員還在為其開發各種插件,而且它還有許多用于手工測試的評估功能。綜合來看,它無疑是我們的最佳選擇。
2.3.1節沒有逐一介紹漏洞掃描工具,這里也不會詳細介紹Web應用程序的滲透測試工具,而會側重性地介紹適合大多網絡滲透測試的測試步驟。如果要對某個Web應用程序(網站源代碼)進行全面測試,您就要進行源碼分析(利用HP Fortify之類的軟件)和深入的程序測試(The Web Application Hacker’s Handbook:Finding and Exploiting Security Flaws是個不錯的選擇)。現在,我們一起來了解如何高效使用Burp Suite吧。
2.4.1 Web應用程序的掃描流程
本節將介紹使用專業版的Burp Suite程序掃描Web應用程序的具體方法。一般來說,網絡滲透測試的時間都很緊張,我們無法對Web應用程序進行完備的測試。在掃描大型Web應用程序的時候,我通常按照如下步驟進行測試。
用Burp Pro進行Spider(爬取)/Discovery(挖掘)/Scanning(掃描)。
用Web應用程序掃描器進行掃描。
手動注入參數。
Session令牌分析。
2.4.2 Web應用程序的掃描工具
在使用Nessus或者Nexpose找到常見的操作系統、應用程序、網絡服務的漏洞之后,就應當針對應用程序進行深度測試了。本節將講述使用Burp Suite深入測試Web應用程序的具體方法。有關的測試步驟如下。
1)配置網絡代理
2)開啟Burp Suite
3)對應用進行爬取(Spider)
4)對內容進行挖掘
5)進行主動掃描
6)漏洞利用(exploit)
1.配置網絡代理和瀏覽器
Burp Suite應當作為Web瀏覽器和Web應用程序的通信通道來用。只有這樣,它才可以清楚地獲取瀏覽器發送的各種請求,您才可以對原始請求進行修改,而不顧忌客戶端的保護機制。
首先,無論您的測試平臺安裝的是Windows系統還是Kali系統,您都要通過JAR程序啟動Burp Suite(見圖2.14)。啟動程序之后,您還要開啟Burp的代理服務器功能,使其在8080端口提供代理服務。即在Burp的Proxy→Options標簽中,確保Burp處于運行狀態。其實代理服務器程序工作于哪個端口都無關緊要,關鍵在于更改默認的端口設置時,要確保瀏覽器的代理服務器配置和Burp Suite的設置一致。
接下來,我們調整Web瀏覽器的設置,讓它使用Burp提供的網絡代理功能。本文使用的Firefox插件是Foxy Proxy(http://addons.mozilla.org/en-US/firefox/addon/foxyproxy- standard/)。我們在1.1.3節介紹過它的安裝方法。我們可以在Foxy Proxy中設置多個代理,并通過它快速地切換代理服務器。在瀏覽器地址欄的右邊,有個帶有圓圈、橫線和狐貍的圖標。單擊這個圖標,選中Add New Proxy,選中Proxy Detail標簽,將Manual Proxy Configuration設置為本機127.0.0.1,代理端口設為8080。再回到General標簽,為代理設置一個名字,保存配置即可(見圖2.15)。
上述操作把瀏覽器的所有流量轉發到本機的8080端口。這個端口應當是您剛才配置的Burp Suite的監聽端口。Burp會接收這些流量,再把它轉發給Internet。
在您保存了代理服務器的設置后,右擊Foxy Proxy的圖標,選擇代理服務器的配置。在本例中,將代理的配置命名為Burp Suite,并且選用了這個配置(見圖2.16)。
為瀏覽器配置好了代理設置之后,我們再來瀏覽先前挑選出來的Web應用程序。這里以我的網站www.securepla.net 進行說明。如果我們再切換到Burp程序,此時,可以看到Proxy/Intercept標簽變亮了(見圖2.17)。
如果配置無誤,您應當能看到圖2.17所示的效果。我們可以看到Burp捕獲到了GET請求,同時也能看到cookie和其他請求信息。在默認的情況下,如果使用程序的最初設置,Burp會截獲(Intercept)所有的流量。即Burp Suite會攔下Web瀏覽器發向Web應用程序的瀏覽請求,您可以讀取或者修改它們,然后再將請求轉發出去或者直接丟棄掉。
也就是說,默認情況下您是無法正常瀏覽網站的,除非您關閉掉Intercept(攔截)按鈕。因為請求被攔截了下來,所以瀏覽器獲取不到服務器的任何應答。在關閉Intercept按鈕后,我們仍可捕獲所有Web流量,不過這樣一來我們就不能修改瀏覽器發送的請求數據了。關閉攔截功能之后,我們仍然可以在Intercept右側的History標簽中看到所有的瀏覽器請求和服務器應答。
現在,我們切換到Target標簽,查看我們處理和轉發的URL。首先,我們把網址添加到Scope中。Scope定義了進行自動抓取、測試的范圍,幫您過濾掉掃描范圍之外的域名。后文再對這個過濾功能將進行細致的介紹。現在,先將所有您想測試的URL或者FQDN添加到Scope中。在圖2.18中,右擊域名,選擇Add to scope。
2.爬取Web應用程序
測試Web應用程序的第一步是爬取網站。即是說,我們首先要用Burp對整個網站進行爬取,記錄其上的所有種類的文件、表格、HTTP方法等。我們要通過爬取手段知道網站都有哪些鏈接、使用了什么樣的參數、都鏈接到了哪些外部的網站,進而了解Web應用程序的大致功能。
如欲爬取Web應用程序的頁面,可單擊Target→Site map標簽,然后右鍵單擊要爬取的域名,然后單擊Spider this host,如圖2.19所示。
待其完成爬取網站的操作之后,Burp就會分析出Web應用程序的大致布局。如圖2.20所示,單擊任何文件,就能看到對應的請求和應答。在程序的左欄里可以看到網站全部的文件和文件夾,右欄里可看到瀏覽器請求和服務器應答。在Site map標簽的正下方是執行過濾功能的Filter按鈕。您可以通過它篩選出對滲透有價值的內容。通常,我先將所有的域名添加到Scope中,然后單擊Filter按鈕,設置程序令其只顯示Scope中的內容。這樣,就可以讓Burp過濾掉不在測試范圍內的大量內容。
3.深入挖掘網站內容
某些情況下,您無法直接通過Web應用程序(網站)的鏈接找到某些網頁和文件夾。例如,一些網站上就沒有admin文件夾或者登錄頁面的鏈接。但是,只要您在瀏覽器的地址欄里輸入/admin/folder,就可以看到admin認證頁面。爬取網站的操作階段可能會漏掉這些信息。因為常規用戶不應當看到這些內容,所以主機管理員通常會隱藏這些文件夾和管理登錄頁面的鏈接。然而滲透測試恰恰就要尋找這些內容,以便繞過認證,或者對這些認證頁面進行暴力破解。
Burp里專門有個專門應對此類場景的模塊。同樣是在Site map標簽中,我們右擊上級網址,然后在下拉菜單中選擇Engagement tools,最后單擊Discover content(見圖2.21)。
在Discovery模塊中,單擊Session is not running按鈕。此后,Burp就會對文件夾和文件結構進行智能暴力破解(smart brute forcing)。這里所說的智能暴力破解,是指Burp會根據它在應用中所找到的文件、文件夾,做出動態的選擇,來進行更好的暴力破解。它能夠快速地鑒別文件、文件夾,更好地幫助您進行應用程序測試。
在我自己進行安全評估時,我更喜歡使用一些專門定制的字典。我不知道現在是不是有人還在維護RAFT項目的字典。幾年之前,確實有一幫小伙子開發出了常見文件夾名和文件名的字典——RAFT,他們那時還會定期更新。這個項目發布了各種不同的字典。您可根據自己的測試范圍情況選用相應的字典。他們發布字典的網址是http://code.google.com/p/raft/source/browse/trunk/data/wordlists/?r=64。
從圖 2.22 中可以看到,Discovery 工具發現了文件夾/wp-includes/。這個文件夾通常是WordPress程序的目錄。然后,它在那個文件夾中搜索常見類型的文件夾和文件。您可以單擊Discovery模塊頂端的Site map標簽,查看所有的掃描到結果。這樣就能快速地發現那些隱藏的文件夾、管理頁面、配置頁面,以及其他對測試有幫助的頁面。
4.主動式漏洞掃描
如果您已經掌握了目標網站的大致情況,就可以調整參數或請求,以查找它們的漏洞。右鍵單擊上級域名,選擇Active scan this host(見圖2.23),即可啟動Burp的應用程序掃描器,對網站進行模糊測試。這種掃描會造成極大的網絡流量,會對Web應用程序發起大量查詢。有一點需要注意,如果被測網站有評論功能,在進行模糊測試的時候,Web應用程序可能會給客戶發送海量的E-mail郵件。所以,在主動測試之前,務必要讓您的客戶了解這些情況。
啟動掃描器后,您可在Scanner標簽里查看掃描結果,以及將要進行的測試隊列。您可能需要在Scanner標簽下的Options標簽中,對Burp Suite的選項進行深入地調整。我通常會增加Active Scan Engine的線程數,以減少掃描時間。雖然增加線程可顯著地縮短掃描時間,但是過高的線程數量也可能把小型網站直接拖垮。
掃描結果表明,Burp Suite發現了該網站的一個XSS漏洞。它清楚地描述了問題所在、觸發的請求,以及相應的服務器應答(見圖2.24)。
滲透測試人員不僅要排除全部的誤報,并且要驗證漏洞的嚴重程度。所以我們要驗證Burp找到的問題是否真的存在。單擊掃描結果中的某個XSS漏洞,可以看到所觸發漏洞使用的GET參數。接下來,我們要訪問這個網址,再現這個問題:
http://www.securepla.net/xss_example/example.php?alert=9228a%3Cscript%3Ealert(1)%3C/script%3E281717daa8d%3C/script%3E281717daa8d)
打開瀏覽器之后,我們輸入這個URL。如圖2.25所示,網頁信息證明了這個警告不是誤報,是一個客觀存在的漏洞。如果您尚未熟悉XSS攻擊,可花些時間來了解像WebGoat這類的進行Web漏洞實驗的應用平臺:
除了檢測XSS漏洞之外,Burp還可以識別CSRF問題、無效SSL證書、目錄遍歷漏洞、SQL注入、命令注入等。關于Burp的詳細使用方法,可參考4.1節。
本文僅用于學習和交流目的,不代表異步社區觀點。非商業轉載請注明作譯者、出處,并保留本文的原始鏈接。
總結
以上是生活随笔為你收集整理的《黑客秘笈——渗透测试实用指南》—第2章2.4节Web应用程序的扫描的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《大众创业做电商——淘宝与微店 开店 运
- 下一篇: 《R语言数据分析》——3.2 聚集