作者:Gilberto Najera-Gutierrez
譯者:飛龍
協議:CC BY-NC-SA 4.0
簡介
幾乎每個滲透測試項目都需要遵循嚴格的日程,多數由客戶的需求或開發交談日期決定。對于滲透測試者,擁有一種工具,它可以在很短的時間內執行單個應用上的多個測試,來盡可能在排期內識別最多漏洞很有幫助。自動化漏洞掃描器就是完成這種任務的工具,它們也用于發現替代的利用,或者確保滲透測試中不會遺漏了明顯的事情。
Kali 包含一些針對 Web 應用或特定 Web 漏洞的漏洞掃描器。這一章中,我們會涉及到一些在滲透測試者和安全研究員中最廣泛使用工具。
5.1 使用 Nikto 掃描
每個測試者的工具庫中必定含有的工具就是 Nikto,它可能是世界上使用最廣泛的自由掃描器。就像它的網站(https://cirt.net/Nikto2)上所說的那樣:
Nikto 是開源(GPL)的 Web 服務器掃描器,它對 Web 服務器執行綜合掃描,包含超過 6700 個潛在的危險文件或程序,檢查超過 1250 個服務器的過期版本,以及超過 270 個服務器上的特定問題。它也會檢查服務器配置項,例如多個首頁文件的存在,HTTP 服務器選項,也會嘗試識別安裝的 Web 服務器和軟件。掃描的項目和插件也會經常更新,并可以自動更新。
這個秘籍中,我們會使用 Nikto 來搜索 Web 服務器中的漏洞并分析結果。
操作步驟
1.Nikto 是個命令行工具,所以我們打開終端。
2.我們會掃描 Peruggia 漏洞應用,并導出結果到 HTML 報告:
1 nikto -h http://192.168.56.102/peruggia/ -o result.html
-h
選項告訴 Nikto 掃描哪個主機,-o
選項告訴在哪里存放輸出,文件的擴展名決定了接受的格式。這里,我們使用.html
來獲得 HTML 格式的結果報告。輸出也可以以 CSV、TXT 或 XML 格式。
- 3.它需要一些時間來完成掃描。完成之后,我么可以打開
result.html
文件:
工作原理
這個秘籍中,我們使用 Nikto 來掃描應用并生成 HTML 報告。這個工具擁有一些更多的選項,用于執行特定掃描或生成特定輸出格式。一些最實用的選項是:
-H
:這會顯示 Nikto 的幫助。
-config <file>
:在掃描中用自定義的配置文件。
-update
:更新插件數據庫。
-Format <format>
:這定義了輸出格式,可以為CSV、HTML、NBE(Nessus)、SQL、TXT 或 XML。例如 CSV、XML 和 NBE 的格式在我們打算將其用于其它工具的輸入時非常實用。
-evasion <techique>
:這使用一些編碼技巧來幫助避免 Web 應用防火墻和入侵檢測系統的檢測。
-list-plugins
:查看可用的測試插件。
-Plugins <plugins>
:選擇在掃描中使用哪個插件(默認為全部)。
-port <port number>
:如果服務器使用非標準端口(80,443),我們可能會以這個選項來使用 Nikto。
5.2 使用 Wapiti 發現漏洞
Wapiti 是另一個基于終端的 Web 漏洞掃描器,它發送 GET 和 POST 請求給目標站點,來尋找下列漏洞。
操作步驟
- 1.我們可以從終端窗口打開 Wapiti,例如:
1 wapiti http://192.168.56.102/peruggia/ -o wapiti_result -f html -m "-blindsql"
我們會掃描 vulnerable_vm 中的 Peruggia 應用,將輸出保存為 HTML 格式,保存到wapiti_result
目錄中,并跳過 SQL 盲注檢測。
-
2.如果我們打開了報告目錄,和
index.html
文件,我們會看到一些這樣的東西:
這里,我們可以看到 Wapiti 發現了 12 個 XSS 和 20 個文件處理漏洞。 3.現在點擊
Cross Site Scripting
(跨站腳本)。-
4.選項某個漏洞并點擊
HTTP Request
。我們選擇第二個,選中并復制請求的 URL 部分。
-
5.現在,我們將 URL 粘貼到瀏覽器中,像這樣:
http://192.168.56.102/ peruggia/index.php?action=comment&pic_id=%3E%3C%2Fform%3E%3Cscr ipt%3Ealert%28%27wxs0lvms89%27%29%3C%2Fscript%3E
。
我們確實發現了 XSS 漏洞。
工作原理
這個秘籍中,我們跳過了 SQL 盲注檢測(-m "-blindsql"
),因為這個應用存在這個漏洞。它會觸發超時錯誤,使 Wapiti 在掃描完成之前關閉,因為 Wapiti 通過輸入sleep()
命令來測試多次,直到服務器超過了超時門檻。同時,我們為輸出選擇了 HTML 格式(-o html
),wapiti_result
作為報告的目標目錄,我們也可以選擇其他格式,例如,JSON、OpenVAS、TXT 或 XML。
Wapiti 擁有一些其它的有趣的選項,它們是:
-x <URL>
:從掃描中排除特定的 URL,對于登出和密碼修改 URL 很實用。
-i <file>
:從 XML 文件中恢復之前保存的掃描。文件名稱是可選的,因為如果忽略的話 Wapiti 從scan
文件夾中讀取文件。
-a <login%password>
:為 HTTP 登錄使用特定的證書。
--auth-method <method>
:為-a
選項定義授權方式,可以為basic
,digest
,kerberos
或 ntlm
。
-s <URL>
:定義要掃描的 URL。
-p <proxy_url>
:使用 HTTP 或 HTTPS 代理。
5.3 使用 OWASP ZAP 掃描漏洞
OWASP ZAP 是我們已經在這本書中使用過的工具,用于不同的任務,并且在它的眾多特性中,包含了自動化的漏洞掃描器。它的使用和報告生成會在這個秘籍中涉及。
準備
在我們使用 OWASP ZAP 成功執行漏洞掃描之前,我們需要爬取站點:
1.打開 OWASP ZAP 并配置瀏覽器將其用作代理。
2.訪問
192.168.56.102/peruggia/
。3.遵循第三章“使用 ZAP 的蜘蛛”中的指南。
操作步驟
1.訪問 OWASP ZAP 的
Sites
面板,并右擊peruggia
文件夾。-
2.訪問菜單中的
Attack | Active Scan
。
-
3.新的窗口會彈出。這里,我們知道我們的應用和服務器使用哪種技術,所以,訪問
Technology
標簽頁,并只勾選MySQL
、PostgreSQL
和Linux
,以及Apache
。
這里我們可以配置我們的掃描器的Scope
(從哪里開始掃描、在什么上下文中,以及其它)、Input Vectors
(選項是否你打算測試 GET 和 POST 請求、協議頭、Cookie和其它選項)、Custom Vectors
(向原始請求中添加特定的字符或單詞作為攻擊向量)、Technology
(要執行什么技術特定的測試)、以及Policy
(為特定測試選項配置參數)。 4.點擊
Start Scan
。-
5.
Active Scan
標簽頁會出現在面板頂部,并且所有請求都會出現在那里。當掃描完成時,我們可以在ALerts
標簽頁中檢查結果。
6.如果我們選項某個警告,我們可以查看生成的請求,以及從服務器獲得的響應。這允許我們分析攻擊并判斷是否是真正的漏洞,或者是誤報。我們也可以使用這個信息來模糊測試,在瀏覽器中重放這個請求,或者深入挖掘以利用。為了生成 HTML 報告,就像前一個工具那樣,在主菜單中訪問Report
之后選擇GenerateHTML Report....
。-
7.新的對話框會詢問文件名和位置。例如,設置
zap_result. html
并且在完成時打開文件:
工作原理
OWASP ZAP 能夠執行主動和被動漏洞掃描。被動掃描是 OWASP ZAP 在我們瀏覽過、發送數據和點擊鏈接程中進行的非入侵測試。主動測試涉及對每個表單變量或請求值使用多種攻擊字符串,以便檢測服務器的響應是否帶有我們叫做“脆弱行為”的東西。
OWASP ZAP 使用多種技術生成測試字串,它對于首次識別目標所使用的技術非常實用,以便優化我們的掃描并減少被檢測到或導致服務崩潰的可能。
這個工具的另一個有趣特性是,我們可以產生于漏洞檢測中的請求,而且它的相應響應在檢測的時候會位于相同窗口中。這允許我們快讀判斷它是真正的漏洞還是誤報,以及是否要開發我們的漏洞證明(POC)還是開始利用。
更多
我們已經談論到 Burp Suite。Kali 只包含了免費版本,它沒有主動和被動掃描特性。強烈推薦你獲得 Burp Suite 的專業版許可證,因為它擁有實用特性和免費版之上的改進,例如主動和被動漏洞掃描。
被動漏洞掃描在我們使用 Burp Suite 作為瀏覽器的代理,并瀏覽網頁時發生。Burp 會分析所有請求和響應,同時查找對應已知漏洞的模式。
在主動掃描中,Burp 會發送特定的請求給服務器并檢查響應來查看是否對應一些漏洞模式。這些請求是特殊構造的,用于觸發帶有漏洞的應用的特定行為。
5.4 使用 w3af 掃描
w3af 支持應用審計和攻擊框架。它是開源的,基于Python 的 Web 漏洞掃描器。它擁有 GUI 和命令行界面,都帶有相同的功能。這個秘籍中,我們會使用 w3af 的 GUI 配置掃描和報告選項來執行掃描。
操作步驟
- 1.為了啟動 w3af 我們可以從應用菜單欄選擇它,通過瀏覽
Applications | 03 Web Application Analysis | w3af
,或者從終端中:
1 w3af_gui
2.在
Profiles
部分中,我們選擇full_audit
。3.在插件部分中,訪問
crawl
并選擇web_spider
(已經選擇的項目)。-
4.我們不打算讓掃描器測試所有服務器,而是我們讓它測試應用。在插件部分中,選中
only_forward
選項并點擊Save
。
5.現在,我們會告訴 w3af 在完成時生成 HTML 報告。訪問
output
插件并選中html_file
。-
6.為了選擇文件名稱和保存報告的位置,修改
output_file
選項。這里我們會指定根目錄下的w3af_report.html
,點擊Save
。
-
7.現在在
Target
文本框中,輸入打算測試的 URL,這里是http://192.168.56.102/WackoPicko/
,并點擊Start
。
8.日志標簽頁會獲得焦點,我們能夠看到掃描的進程。我們需要等待它完成。
-
9.完成之后,切換到
Results
標簽頁,像這樣:
-
10.為了查看詳細的報告,在瀏覽器中打開
w3af_report.html
HTML 文件。
工作原理
w3af 使用配置文件來簡化為掃描選擇插件的任務,例如,我們可以定義只含有 SQL 注入的配置文件,它測試應用的 SQL 注入,不干其他的事情。full_audit
配置使用一些插件,它們執行爬蟲測試、提取可以用作密碼的單詞列表、測試大多數相關的 Web 漏洞,例如 XSS、SQLi、文件包含、目錄遍歷以及其它。我們修改了web_spider
插件來前向爬取,以便我們可以專注于打算測試的應用,避免掃描到其它應用。我們也修改了輸出插件來生成 HTML 報告,而不是控制臺輸出和文本文件。
w3af 也擁有一些工具,例如攔截代理、模糊測試器、文本編解碼器、以及請求導出器,它可以將原始的請求轉換為多種語言的源代碼。
更多
w3af 的 GUI 有時會不穩定。在它崩潰以及不能完成掃描的情況下,它的命令行界面可以提供相同的功能。例如,為了執行我們剛才執行的相同掃描,我們需要在終端中做下列事情:
1 w3af_console
2 profiles
3 use full_audit
4 back
5 plugins
6 output config html_file
7 set output_file /root/w3af_report.html
8 save
9 back
10 crawl config web_spider
11 set only_forward True
12 save
13 back
14 back
15 target
16 set target http://192.168.56.102/WackoPicko/
17 save
18 back
19 start
5.5 使用 Vega 掃描器
Vega 是由加拿大公司 Subgraph 制作的 Web 漏洞掃描器,作為開源工具分發。除了是掃描器之外,它也可以用作攔截代理,以及在我們瀏覽器目標站點時掃描。
這個秘籍中,我們會使用 Vega 來發現 Web 漏洞。
操作步驟
- 1.從應用菜單中選擇它,訪問
Applications | Kali Linux | Web Applications | Web Vulnerability Scanners | vega
,或者通過終端來打開 Vega:
1 vega
2.點擊“開始新掃描“按鈕。
-
3.新的對話框會彈出。在標為
Enter a base URI for scan
的輸入框中,輸入http://192.168.56.102/WackoPicko
來掃描應用。
-
4.點擊
Next
。這里我們可以選擇在應用上運行那個模塊。讓我們保持默認。
-
5.點擊
Finish
來開始掃描。
-
6.當掃描完成時,我們可以通過訪問左邊的
Scan Alerts
樹來檢查結果。漏洞詳情會在右邊的面板中展示,像這樣:
工作原理
Vega 的工作方式是首先爬取我們指定為目標的 URL,識別表單和其它可能的數據輸入,例如 Cookie 或請求頭。一旦找到了它們,Vega 嘗試不同的輸入,通過分析響應并將它們與已知漏洞模式匹配來識別漏洞。
在 Vega 中,我們可以掃描單個站點或范圍內的一組站點。我們可以通過選擇在掃描中使用的模塊,來選擇要進行哪種測試。同樣,我們可以使用身份(預保存的用戶/密碼組合)或者會話 Cookie來為站點認證,并且從測試中排除一些參數。
作為重要的缺陷,它并沒有報告生成或數據導出特性。所以我們需要在 Vega GUI 中查看所有的漏洞描述和詳情。
5.6 使用 Metasploit 的 Wmap 發現 Web 漏洞
Wmap 本身并不是漏洞掃描器,他是個 Metasploit 模塊,使用所有框架中的 Web 漏洞和服務器相關的模塊,并使它們協調加載和對目標服務器執行。它的結果并不會導出為報告,但是會作為 Metasploit 數據庫中的條目。
這個秘籍中,我們會使用 Wmap 來尋找 vulnerable_vm 中的漏洞,并使用 Metasploit 命令行工具來檢查結果。
準備
在我們運行 Metasploit 的控制臺之前,我們需要啟動 所連接的數據庫服務器,以便保存我們生成的結果:
1 service postgresql start
操作步驟
- 1.啟動終端并運行 Metasploit 控制臺:
1 msfconsole
- 2.加載完成后,加載 Wmap 模塊:
1 load wmap
- 3.現在,我們向 Wamp 中添加站點:
1 wmap_sites -a http://192.168.56.102/WackoPicko/
- 4.如果我們打算查看注冊的站點:
1 wmap_sites -l
- 5.現在我們將這個站點設為掃描目標:
1 wmap_targets -d 0
- 6.如果我們打算插件所選目標,我們可以使用:
wmap_targets -l
- 7.現在,我們執行測試:
1 wmap_run -e
- 8.我們需要使用 Metasploit 的命令來檢查記錄的漏洞:
1 vulns
2 wmap_vulns
工作原理
Wmap 使用 Metasploit 的模塊來掃描目標應用和服務器上的漏洞。它從 Metasploit 的數據庫和模塊中獲取站點信息,并將結果發送到數據庫中。這個集成的一個非常實用的層面是,如果我們執行多個服務器上的滲透測試,并且在測試中使用 Metasploit,Wmap 會自動獲得所有 Web 服務器的 IP 地址,和已知 URL,并將它們集成為站點,以便當我們打算執行 Web 評估時,我們只需要從站點列表中選擇目標。
在執行wmap_run
的時候,我們可以選擇要執行哪個模塊。通過-m
選項和正則表達式。例如,下面的命令行會開啟所有模塊,除了包含dos
的模塊,這意味著沒有拒絕服務測試:
1 wmap_run -m ^((?!dos).)*$
另一個實用的選項是-p
。它允許我們通過正則表達式選擇我們打算測試的路徑,例如,在下一個命令中,我們會檢查所有包含單詞login
的 URL。
1 wmap_run -p ^.*(login).*$
最后,如果我們打算導出我們的掃描結果,我們總是可以使用 Metasploit 的數據庫特性。例如,在 MSF 控制臺中使用下列命令來將整個數據庫導出為 XML 文件。
1 db_export -f xml /root/database.xml---
版權聲明:本文轉載自wizardforcel的專欄,如有侵權,請與本人聯系。
專欄鏈接:http://blog.csdn.net/wizardforcel
原文鏈接:http://blog.csdn.net/wizardforcel/article/details/52794801