幾乎每一個滲透測試項目都須要遵循嚴格的日程,多數由客戶的需求或開發交談日期決定。對於滲透測試者,擁有一種工具,它能夠在很短的時間內執行單個應用上的多個測試,來儘量在排期內識別最多漏洞頗有幫助。自動化漏洞掃描器就是完成這種任務的工具,它們也用於發現替代的利用,或者確保滲透測試中不會遺漏了明顯的事情。php
Kali 包含一些針對 Web 應用或特定 Web 漏洞的漏洞掃描器。這一章中,咱們會涉及到一些在滲透測試者和安全研究員中最普遍使用工具。html
每一個測試者的工具庫中一定含有的工具就是 Nikto,它多是世界上使用最普遍的自由掃描器。就像它的網站(https://cirt.net/Nikto2)上所說的那樣:web
Nikto 是開源(GPL)的 Web 服務器掃描器,它對 Web 服務器執行綜合掃描,包含超過 6700 個潛在的危險文件或程序,檢查超過 1250 個服務器的過時版本,以及超過 270 個服務器上的特定問題。它也會檢查服務器配置項,例如多個首頁文件的存在,HTTP 服務器選項,也會嘗試識別安裝的 Web 服務器和軟件。掃描的項目和插件也會常常更新,並能夠自動更新。正則表達式
這個祕籍中,咱們會使用 Nikto 來搜索 Web 服務器中的漏洞並分析結果、sql
Nikto 是個命令行工具,因此咱們打開終端。數據庫
咱們會掃描 Peruggia 漏洞應用,並導出結果到 HTML 報告:api
nikto -h http://192.168.56.102/peruggia/ -o result.html
-h
選項告訴 Nikto 掃描哪一個主機,-o
選項告訴在哪裏存放輸出,文件的擴展名決定了接受的格式。這裏,咱們使用.html
來得到 HTML 格式的結果報告。輸出也能夠以 CSV、TXT 或 XML 格式。瀏覽器
它須要一些時間來完成掃描。完成以後,我麼能夠打開result.html
文件:安全
這個祕籍中,咱們使用 Nikto 來掃描應用並生成 HTML 報告。這個工具擁有一些更多的選項,用於執行特定掃描或生成特定輸出格式。一些最實用的選項是:ruby
-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。
Wapiti 是另外一個基於終端的 Web 漏洞掃描器,它發送 GET 和 POST 請求給目標站點,來尋找下列漏洞(
咱們能夠從終端窗口打開 Wapiti,例如:
wapiti http://192.168.56.102/peruggia/ -o wapiti_result -f html -m "-blindsql"
咱們會掃描 vulnerable_vm 中的 Peruggia 應用,將輸出保存爲 HTML 格式,保存到wapiti_result
目錄中,並跳過 SQL 盲注檢測。
若是咱們打開了報告目錄,和index.html
文件,咱們會看到一些這樣的東西:
這裏,咱們能夠看到 Wapiti 發現了 12 個 XSS 和 20 個文件處理漏洞。
如今點擊Cross Site Scripting
(跨站腳本)。
選項某個漏洞並點擊HTTP Request
。咱們選擇第二個,選中並複製請求的 URL 部分。
如今,咱們將 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 代理。
OWASP ZAP 是咱們已經在這本書中使用過的工具,用於不一樣的任務,而且在它的衆多特性中,包含了自動化的漏洞掃描器。它的使用和報告生成會在這個祕籍中涉及。
在咱們使用 OWASP ZAP 成功執行漏洞掃描以前,咱們須要爬取站點:
打開 OWASP ZAP 並配置瀏覽器將其用做代理。
訪問 192.168.56.102/peruggia/
。
遵循第三章「使用 ZAP 的蜘蛛」中的指南。
訪問 OWASP ZAP 的Sites
面板,並右擊peruggia
文件夾。
訪問菜單中的Attack | Active Scan
。
新的窗口會彈出。這裏,咱們知道咱們的應用和服務器使用哪一種技術,因此,訪問Technology
標籤頁,並只勾選MySQL
、PostgreSQL
和Linux
,以及Apache
。
這裏咱們能夠配置咱們的掃描器的Scope
(從哪裏開始掃描、在什麼上下文中,以及其它)、Input Vectors
(選項是否你打算測試 GET 和 POST 請求、協議頭、Cookie和其它選項)、Custom Vectors
(向原始請求中添加特定的字符或單詞做爲攻擊向量)、Technology
(要執行什麼技術特定的測試)、以及Policy
(爲特定測試選項配置參數)。
點擊Start Scan
。
Active Scan
標籤頁會出如今面板頂部,而且全部請求都會出如今那裏。當掃描完成時,咱們能夠在ALerts
標籤頁中檢查結果。
若是咱們選項某個警告,咱們能夠查看生成的請求,以及從服務器得到的響應。這容許咱們分析攻擊並判斷是不是真正的漏洞,或者是誤報。咱們也可使用這個信息來模糊測試,在瀏覽器中重放這個請求,或者深刻挖掘以利用。爲了生成 HTML 報告,就像前一個工具那樣,在主菜單中訪問Report
以後選擇Generate HTML Report....
。
新的對話框會詢問文件名和位置。例如,設置zap_result. html
而且在完成時打開文件:
OWASP ZAP 可以執行主動和被動漏洞掃描。被動掃描是 OWASP ZAP 在咱們瀏覽過、發送數據和點擊連接程中進行的非入侵測試。主動測試涉及對每一個表單變量或請求值使用多種攻擊字符串,以便檢測服務器的響應是否帶有咱們叫作「脆弱行爲」的東西。
OWASP ZAP 使用多種技術生成測試字串,它對於首次識別目標所使用的技術很是實用,以便優化咱們的掃描並減小被檢測到或致使服務崩潰的可能。
這個工具的另外一個有趣特性是,咱們能夠產生於漏洞檢測中的請求,並且它的相應響應在檢測的時候會位於相同學口中。這容許咱們快讀判斷它是真正的漏洞仍是誤報,以及是否要開發咱們的漏洞證實(POC)仍是開始利用。
咱們已經談論到 Burp Suite。Kali 只包含了免費版本,它沒有主動和被動掃描特性。強烈推薦你得到 Burp Suite 的專業版許可證,由於它擁有實用特性和免費版之上的改進,例如主動和被動漏洞掃描。
被動漏洞掃描在咱們使用 Burp Suite 做爲瀏覽器的代理,並瀏覽網頁時發生。Burp 會分析全部請求和響應,同時查找對應已知漏洞的模式。
在主動掃描中,Burp 會發送特定的請求給服務器並檢查響應來查看是否對應一些漏洞模式。這些請求是特殊構造的,用於觸發帶有漏洞的應用的特定行爲。
w3af 支持應用審計和攻擊框架。它是開源的,基於 Python 的 Web 漏洞掃描器。它擁有 GUI 和命令行界面,都帶有相同的功能。這個祕籍中,咱們會使用 w3af 的 GUI 配置掃描和報告選項來執行掃描。
爲了啓動 w3af 咱們能夠從應用菜單欄選擇它,經過瀏覽Applications | 03 Web Application Analysis | w3af
,或者從終端中:
w3af_gui
在Profiles
部分中,咱們選擇full_audit
。
在插件部分中,訪問crawl
並選擇web_spider
(已經選擇的項目)。
咱們不打算讓掃描器測試全部服務器,而是咱們讓它測試應用。在插件部分中,選中only_forward
選項並點擊Save
。
如今,咱們會告訴 w3af 在完成時生成 HTML 報告。訪問output
插件並選中html_file
。
爲了選擇文件名稱和保存報告的位置,修改output_file
選項。這裏咱們會指定根目錄下的w3af_report.html
,點擊Save
。
如今在Target
文本框中,輸入打算測試的 URL,這裏是http://192.168.56.102/WackoPicko/
,並點擊Start
。
日誌標籤頁會得到焦點,咱們可以看到掃描的進程。咱們須要等待它完成。
完成以後,切換到Results
標籤頁,像這樣:
爲了查看詳細的報告,在瀏覽器中打開w3af_report.html
HTML 文件。
w3af 使用配置文件來簡化爲掃描選擇插件的任務,例如,咱們能夠定義只含有 SQL 注入的配置文件,它測試應用的 SQL 注入,不幹其餘的事情。full_audit
配置使用一些插件,它們執行爬蟲測試、提取能夠用做密碼的單詞列表、測試大多數相關的 Web 漏洞,例如 XSS、SQLi、文件包含、目錄遍歷以及其它。咱們修改了web_spider
插件來前向爬取,以便咱們能夠專一於打算測試的應用,避免掃描到其它應用。咱們也修改了輸出插件來生成 HTML 報告,而不是控制檯輸出和文本文件。
w3af 也擁有一些工具,例如攔截代理、模糊測試器、文本編解碼器、以及請求導出器,它能夠將原始的請求轉換爲多種語言的源代碼。
w3af 的 GUI 有時會不穩定。在它崩潰以及不能完成掃描的狀況下,它的命令行界面能夠提供相同的功能。例如,爲了執行咱們剛纔執行的相同掃描,咱們須要在終端中作下列事情:
w3af_console
profiles
use full_audit back plugins output config html_file set output_file /root/w3af_report.html save back crawl config web_spider set only_forward True save back back target set target http://192.168.56.102/WackoPicko/ save back start
Vega 是由加拿大公司 Subgraph 製做的 Web 漏洞掃描器,做爲開源工具分發。除了是掃描器以外,它也能夠用做攔截代理,以及在咱們瀏覽器目標站點時掃描。
這個祕籍中,咱們會使用 Vega 來發現 Web 漏洞。
從應用菜單中選擇它,訪問Applications | Kali Linux | Web Applications | Web Vulnerability Scanners | vega
,或者經過終端來打開 Vega:
vega
點擊「開始新掃描「按鈕。
新的對話框會彈出。在標爲Enter a base URI for scan
的輸入框中,輸入http://192.168.56.102/WackoPicko
來掃描應用。
點擊Next
。這裏咱們能夠選擇在應用上運行那個模塊。讓咱們保持默認。
點擊Finish
來開始掃描。
當掃描完成時,咱們能夠經過訪問左邊的Scan Alerts
樹來檢查結果。漏洞詳情會在右邊的面板中展現,像這樣:
Vega 的工做方式是首先爬取咱們指定爲目標的 URL,識別表單和其它可能的數據輸入,例如 Cookie 或請求頭。一旦找到了它們,Vega 嘗試不一樣的輸入,經過分析響應並將它們與已知漏洞模式匹配來識別漏洞。
在 Vega 中,咱們能夠掃描單個站點或範圍內的一組站點。咱們能夠經過選擇在掃描中使用的模塊,來選擇要進行哪一種測試。一樣,咱們可使用身份(預保存的用戶/密碼組合)或者會話 Cookie來爲站點認證,而且從測試中排除一些參數。
做爲重要的缺陷,它並無報告生成或數據導出特性。因此咱們須要在 Vega GUI 中查看全部的漏洞描述和詳情。
Wmap 自己並非漏洞掃描器,他是個 Metasploit 模塊,使用全部框架中的 Web 漏洞和服務器相關的模塊,並使它們協調加載和對目標服務器執行。它的結果並不會導出爲報告,可是會做爲 Metasploit 數據庫中的條目。
這個祕籍中,咱們會使用 Wmap 來尋找 vulnerable_vm 中的漏洞,並使用 Metasploit 命令行工具來檢查結果。
在咱們運行 Metasploit 的控制檯以前,咱們須要啓動 所鏈接的數據庫服務器,以便保存咱們生成的結果:
service postgresql start
啓動終端並運行 Metasploit 控制檯:
msfconsole
加載完成後,加載 Wmap 模塊:
load wmap
如今,咱們向 Wamp 中添加站點:
wmap_sites -a http://192.168.56.102/WackoPicko/
若是咱們打算查看註冊的站點:
wmap_sites -l
如今咱們將這個站點設爲掃描目標:
wmap_targets -d 0
若是咱們打算插件所選目標,咱們可使用:
wmap_targets -l
如今,咱們執行測試:
wmap_run -e
咱們須要使用 Metasploit 的命令來檢查記錄的漏洞:
vulns wmap_vulns
Wmap 使用 Metasploit 的模塊來掃描目標應用和服務器上的漏洞。它從 Metasploit 的數據庫和模塊中獲取站點信息,並將結果發送到數據庫中。這個集成的一個很是實用的層面是,若是咱們執行多個服務器上的滲透測試,而且在測試中使用 Metasploit,Wmap 會自動得到全部 Web 服務器的 IP 地址,和已知 URL,並將它們集成爲站點,以便當咱們打算執行 Web 評估時,咱們只須要從站點列表中選擇目標。
在執行wmap_run
的時候,咱們能夠選擇要執行哪一個模塊。經過-m
選項和正則表達式。例如,下面的命令行會開啓全部模塊,除了包含dos
的模塊,這意味着沒有拒絕服務測試:
wmap_run -m ^((?!dos).)*$
另外一個實用的選項是-p
。它容許咱們經過正則表達式選擇咱們打算測試的路徑,例如,在下一個命令中,咱們會檢查全部包含單詞login
的 URL。
wmap_run -p ^.*(login).*$
最後,若是咱們打算導出咱們的掃描結果,咱們老是可使用 Metasploit 的數據庫特性。例如,在 MSF 控制檯中使用下列命令來將整個數據庫導出爲 XML 文件。
db_export -f xml /root/database.xml