1. 程式人生 > >Kali Linux Web 滲透測試祕籍 第五章 自動化掃描

Kali Linux Web 滲透測試祕籍 第五章 自動化掃描

第五章 自動化掃描

作者:Gilberto Najera-Gutierrez

譯者:飛龍

簡介

幾乎每個滲透測試專案都需要遵循嚴格的日程,多數由客戶的需求或開發交談日期決定。對於滲透測試者,擁有一種工具,它可以在很短的時間內執行單個應用上的多個測試,來儘可能在排期內識別最多漏洞很有幫助。自動化漏洞掃描器就是完成這種任務的工具,它們也用於發現替代的利用,或者確保滲透測試中不會遺漏了明顯的事情。

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 報告:

    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,例如:

    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選項定義授權方式,可以為basicdigestkerberosntlm

  • -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標籤頁,並只勾選MySQLPostgreSQLLinux,以及Apache

    這裡我們可以配置我們的掃描器的Scope(從哪裡開始掃描、在什麼上下文中,以及其它)、Input Vectors(選項是否你打算測試 GET 和 POST 請求、協議頭、Cookie和其它選項)、Custom Vectors(向原始請求中新增特定的字元或單詞作為攻擊向量)、Technology(要執行什麼技術特定的測試)、以及Policy(為特定測試選項配置引數)。

  4. 點選Start Scan

  5. Active Scan標籤頁會出現在面板頂部,並且所有請求都會出現在那裡。當掃描完成時,我們可以在ALerts標籤頁中檢查結果。

  6. 如果我們選項某個警告,我們可以檢視生成的請求,以及從伺服器獲得的響應。這允許我們分析攻擊並判斷是否是真正的漏洞,或者是誤報。我們也可以使用這個資訊來模糊測試,在瀏覽器中重放這個請求,或者深入挖掘以利用。為了生成 HTML 報告,就像前一個工具那樣,在主選單中訪問Report之後選擇Generate HTML 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,或者從終端中:

    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.htmlHTML 檔案。

工作原理

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

5.5 使用 Vega 掃描器

Vega 是由加拿大公司 Subgraph 製作的 Web 漏洞掃描器,作為開源工具分發。除了是掃描器之外,它也可以用作攔截代理,以及在我們瀏覽器目標站點時掃描。

這個祕籍中,我們會使用 Vega 來發現 Web 漏洞。

操作步驟

  1. 從應用選單中選擇它,訪問Applications | Kali Linux | Web Applications | Web Vulnerability Scanners | vega,或者通過終端來開啟 Vega:

    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 的控制檯之前,我們需要啟動 所連線的資料庫伺服器,以便儲存我們生成的結果:

service postgresql start

操作步驟

  1. 啟動終端並執行 Metasploit 控制檯:

    msfconsole 
  2. 載入完成後,載入 Wmap 模組:

    load wmap 
  3. 現在,我們向 Wamp 中新增站點:

    wmap_sites -a http://192.168.56.102/WackoPicko/ 
  4. 如果我們打算檢視註冊的站點:

    wmap_sites -l 
  5. 現在我們將這個站點設為掃描目標:

    wmap_targets -d 0 
  6. 如果我們打算外掛所選目標,我們可以使用:

    wmap_targets -l 

  7. 現在,我們執行測試:

    wmap_run -e

  8. 我們需要使用 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