Kali Linux滲透測試——WEB滲透(一)
筆記內容參考安全牛課堂苑房弘老師的Kali Linux滲透測試教程
WEB攻擊面
訪問網絡服務基本架構如圖1所示:
圖1 網絡服務訪問架構
WEB滲透途徑涵蓋了每一層內容
- Browser
- Network
- WEB Server
- WEB Application
- App Server
- Database
掃描工具
主要介紹針對WEB Server、WEB Application層面的漏洞掃描工具,注意與Nessus、OpenVAS等側重於操作系統層面的掃描工具不同。自動化的掃描工具只能發現技術層面的漏洞,不能發現業務邏輯層面的漏洞
1.HTTrack
開源的跨平臺網站克隆工具,用於離線存儲網絡鏡像進行掃描探測,避免與目標網站大量交互。嚮導式交互界面,支持代理功能。
2.Nikto
Perl語言開發的開源WEB安全掃描器,針對軟件版本、存在安全隱患的文件、服務器配置漏洞以及WEB應用進行掃描探測,主要掃描WEB Server層面的安全隱患。基本使用:
git clone https://github.com/sullo/nikto.git
# 通過git進行升級
nikto -list-plugins
# 列出nikto插件,對應掃描的內容
nikto -host http://10.10.11.128/dvwa
nikto -host 192.168.1.1 -ssl -port 443,8443,995
# 可以通過url或host:port形式指定掃描目標
# 掃描目標可以是網站主頁或子站
# 支持ssl掃描
nikto -host host.txt
# host.txt中爲多個掃描目標,每個目標占一行
nmap -p80 192.168.1.0/24 -oG - | nikto -host -
# 將nmap掃描結果輸出給nikto掃描
nikto -host baidu.com -useproxy http://localhost:8087
# 指定代理服務器,提高掃描隱蔽性
nikto -host http://10.10.11.128/dvwa -evasion 157
# -evasion:指定IDS繞過技術,有8種可供選擇
在掃描過程中可以交互式回顯信息:
Space:report current scan status
v:verbose mode on/off
d:debug mode on/off
e:error reporting on/off
p:progress reporting on/off
r:redirect display on/off
c:cookie display on/off
a:auth display on/off
q:quit
N:next host
P:Pause
可以通過配置文件/etc/nikto.conf
設置cookies,注意修改其中的USERAGNET
,增加掃描行爲的隱蔽性。
注意:nikto不能提供基於表單的身份驗證,身份驗證只能通過cookies的形式,在/etc/nikto.conf
中修改STATIC-COOKIE
的值。
3.Vega
JAVA語言開發的開源圖形化掃描工具,主要掃描WEB Application層面的安全隱患,分爲掃描模式(Scanner)和代理模式(Proxy)。
圖2 Vega配置界面
在Window->Preferences
中配置Proxy和Scanner參數,注意General
中的代理是外部代理,Proxy
中代理是Vega自身代理。
(1)爬站掃描
① 首先進入Proxy模式進行人工爬站,所有的鏈接、提交頁面都要瀏覽,瀏覽器設置好Vega代理,開啓掃描模塊,人工訪問目標站點的每一個鏈接,此時Vega會掃描、分析經由自身的流量,爬取目標站點網頁並分析安全漏洞;
圖3 Vega Proxy模式掃描
② 然後進入Scanner模式,需要登錄訪問的網站要配置身份信息Identity,macro認證信息可以通過request請求添加,注意掃描時定義好scope,否則Scanner會爬取頁面中所有的鏈接,點擊開始後Scanner就會根據字典和已爬取的網頁進行進一步爬取,並逐一掃描分析安全漏洞。
綜合Proxy模式和Scanner模式掃描的結果進行分析。
(2)流量截獲
在Proxy模式下,Vega可以通過Intercept
進行流量截斷、篡改,通過Intereptor Options
對Request和Response流量配置截流規則。
4.OWASP ZAP
JAVA語言開發的開源WEB Application圖形化集成滲透測試和漏洞挖掘工具,主要掃描WEB Application層面的安全隱患,具有截斷代理、主被動掃描、暴力破解、Fuzz等功能。
開啓時可以選擇將當前session保存在指定文件中,方便下次打開時查看爬網結果。ZAP開啓後首先進行add-ons升級,add-ons分爲:Realease(發行版,穩定性好,準確率高)、Beta(基本版,性能待優化)、Alpha(開發版,性能沒有保證),Installed爲已安裝,Marketplace爲未安裝。
圖4 ZAP運行界面
標準的掃描工作流程爲:
設置代理 -> 手動爬網(被動掃描)-> 自動爬網(主動掃描)
(1)設置代理
ZAP默認開啓代理功能,HTTPS代理需要在瀏覽器中添加OWASP根證書且設置爲信任
圖5 OWASP根證書
(2)手動爬網(被動掃描)
-
配置掃描範圍
ZAP掃描範圍概念爲Context(上下文),可以定義不同的Context,每個Context包含不同的站點,Scope爲掃描顯示的站點,可以包含不同的Context -
配置登錄身份
在Session Properties
選擇相應會話的身份驗證,一般選擇手動身份驗證,即通過手動爬網自動記錄登錄信息 -
配置HTTP Session
通過Set as Active
選擇不同的HTTP Sessions作爲登錄身份,而無需再瀏覽器中修改配置,其中Session中沒有的關鍵字可以在Options->HTTP Sessions
中添加 -
配置掃描策略、規則
ZAP掃描模式分爲Safe、Protected、Standard、Attack,掃描的危險性依次遞增;在工具欄Scan Strategy
定製掃描策略,可以配置不同的警報閾值和攻擊強度,掃描策略應用於主動掃描;在Options中配置主被動掃描規則,選擇閾值、質量、範圍等參數。 -
手動爬網(被動掃描)
瀏覽器設置好代理後,手動訪問目標網站,所有的鏈接、提交頁面都要瀏覽,ZAP會記錄人工爬網站點,且根據設置的策略、規則進行被動掃描。
(3)自動爬網(主動掃描)
在Quick Start中輸入目標URL,開始Attack,或者在已爬站點上右鍵->攻擊->主動掃描
,選擇掃描策略進行主動掃描。
圖6 配置HTTP Sessions
- Fuzz/暴力破解
在工具欄選擇工具->Fuzz
,或者在已爬站點上右鍵->攻擊->Fuzz
,選中要Fuzz的部分,輸入自定義字典,類型爲字符串、文件、File Fuzzers等,在Kali中已默認安裝常見WEB Fuzz文件(eg:/usr/share/wfuzz/wordlist/fuzzdb/),開始Fuzz匹配。暴力破解即將post表單中的password部分進行Fuzz,根據返回碼和size進行判斷是否登錄成功。
圖7 Fuzz匹配
5.Burp Suite
JAVA語言開發的統一WEB安全集成工具,WEB安全工具中的瑞士軍刀,分爲Enterprise、Professional、Community三個版本,其中Community爲免費版本,但是沒有主動掃描的功能。
注:Burp運行需要與JDK版本對應,不然可能導致打不開情況,這裏使用的Burp版本爲Professional v1.7.37
,JDK版本爲jdk-8u201
(1)Proxy
Burp最爲優異的功能,可以通過代理高效截獲、分析、過濾、修改HTTP流量。① Invisible
當客戶端不支持代理時,可以啓動Invisible功能,通過DNS重定向將客戶端請求發往Burp,此時爲了將流量正常轉發,需要在Project options->Hostname Resolution
添加正確的域名和IP,這樣流量會根據Burp設置的域名對應IP進行轉發。
注意:
正常情況下,支持代理的瀏覽器HTTP Request的url如:
GET http://example.org/foo.php HTTP/1.1
Host: example.org
不支持代理的瀏覽器發出的HTTP Request如:
GET /foo.php HTTP/1.1
Host: example.org
Burp Proxy分析正常HTTP Request不會理會Host頭,而Invisible模式下會將Host與GET後的url拼接成完整url,但如果不支持代理功能的客戶端請求沒有嚴格按照HTTP規範,HTTP請求頭沒有Host,GET後的url只是相對路徑,此時可以在Request handling
中配置Redirect to host
。
圖8 Proxy Invisible配置
② CA根證書
作爲HTTPS代理時需要在瀏覽器中導入Burp的CA根證書,可以在Proxy->Options
中將證書導出,也可以通過瀏覽器訪問http://burp
將證書導出,然後添加至瀏覽器證書並選擇信任。
③ Intercept
默認只截斷HTTP Request,HTTP Response截斷需要在Options
中配置,所有訪問的流量都會在HTTP history
保存,在Filter
處右鍵對內容進行篩選,同時可以對Request和Response頭以及內容進行修改和替換:
圖9 HTTP Request/Response頭修改和替換
圖10 HTTP Response修改
客戶端發出的Request和服務器返回的Response都是可以被代理截獲修改的,任何來自客戶端瀏覽器的驗證都是不可靠的。
(2)Target
所有訪問的url會在Target中記錄,黑色字體爲已經訪問過的,灰色爲頁面分析得到的url,但沒有訪問。
① Scope
可以選擇目標網站添加至scope,添加至Include
和Exclude
,一般導致登出logout的請求頁面不能訪問。
② Site map
顯示所有爬取以及分析出的url,在Filter
處右鍵進行選擇,如圖11所示,其中Show only commented items
和Show only highlighted items
僅顯示有comment和highlight的內容,這些都是在分析時對某個HTTP Request或Response做的標記,Filter by search term
可以很方便查找特定的Request/Response內容。
圖11 Site map Filter
注:在Proxy->HTTP history
和Target->Site map
中對流量做的標記和Filter過濾配置是相互獨立的,互不影響。
(3)Spider
Burp已自動開啓Passive Spidering
,所有經過Burp代理的流量都會被Burp爬取分析,可以通過Control
界面開啓Spider
,或者在Target->Site map
中選擇站點右鍵->Spider this branch
。在Options
中進行身份驗證信息配置,如下圖所示:
圖12 Spider驗證信息配置
可以對不同登錄身份所爬取的頁面進行頁面級比較,首先選擇Burp->Save copy of project
保存當前項目,然後以另一身份新建項目,選擇目標站點右鍵選擇Compare site maps
,選擇要比較的兩個項目和站點內容進行比較,可以同步選擇HTTP Request/Response,如下圖所示:
圖13 Compare site maps
(4)Scanner
被動掃描默認開啓,主動掃描在目標站點右鍵選擇Active scan
,在Options
中配置掃描項、掃描速度、準確度等內容,開啓主動掃描後Scan queue
顯示掃描進度。
(5)Intruder
利用Payload進行Fuzz攻擊(暴力破解),在目標HTTP Request/Response右鍵選擇Send to Intruder
,需要Fuzz的變量位置用$Variable$
表示,Payload包括Simple list
、Runtime file
、Numbers
、Dates
、Brute force
等多種類型,攻擊類型分爲四種:
- Sniper:利用1個Payload針對每一個變量進行Fuzz,期間其他變量保持不變
- Battering ram:利用1個Payload對所有變量同步進行Fuzz
- Pitchfork:利用多個Payload對多個變量同步進行Fuzz,注意Fuzz數量與內容最少的Payload相同
- Cluster bomb:利用所有的Payload對多個變量交叉Fuzz,Fuzz數量是所有Payload內容的組合項
可以在Payload->Payload Processing
中對Payload內容進行添加前綴、後綴、大小寫切換等處理,攻擊結果除了根據Length和HTTP返回碼判斷,還可以根據Options->Grep-Match
進行判斷
圖14 Grep-Match判斷Intruder攻擊結果
(6)Repeater
選擇HTTP Request/Response編輯後進行重放,可以修改Request
的提交方法、編碼方式等,對Response
可以通過不同形式查看內容。
在HTTP Request界面右鍵選擇Engagement tools->Generate CSRF PoC
可以將Request轉換爲CSRF PoC,保存爲HTML文檔方便後續漏洞利用。
(7)Sequencer
判斷僞隨機序列算法的質量,選中包含Set-Cookie
頭的HTTP Request/Response,右鍵選擇Send to Sequencer
,選中隨機生成的Cookies值,然後選擇Start live capture
,當捕獲的內容足夠多時,進行分析Analyze now
,生成報告,查看Cookie隨機生成算法的質量。
圖15 Sequencer隨機算法分析
(8)Decoder
編碼、解碼模塊,支持Base64、ASCII、Hex、Binary、Octal、URL、HTML、Gzip等編碼方式,以及SHA、SHA-256、SHA-512、MD5等HASH算法。
(9)Comparer
對HTTP Request/Response進行字節級比較,在比較內容上右鍵選擇Sent to comparer
,在Comparer不同窗口中可以同步查看區別。
(10)Extender
擴展功能,BApp Store
中包含了可以擴展安裝的插件,以及每個插件的評級、受歡迎程度、更新時間等信息。
6.AWVS
Acunetix WEB Vulnerability Scanner,商業版WEB掃描器,AWVS11.0以後採用B/S架構,支持不同平臺,具有AcuSensor灰盒測試、強大的報告生成功能等優勢,閹割掉了HTTP Request/Response截獲、轉發、分析等功能,更加專注於漏洞掃描和管理,操作界面更加簡介。
首先選擇Target->Add Target
添加掃描目標URL,在General、Crawl、HTTP、Advanced中配置相應信息,然後選擇Scan,配置掃描和報告類型後開啓掃描。Scans
和Reports
中生成相應掃描項和報告項。
圖16 配置Targets
在Vulnerabilities
查看掃描的所有漏洞,點擊具體漏洞後查看漏洞檢測方法、漏洞編號、修復建議等詳細信息。
圖16 查看Vulnerabilities
7.AppScan
商業版WEB掃描器,具有Glass Box灰盒測試、強大的報告生成功能等優勢,掃描過程分爲探索(爬網)階段和測試(掃描)階段,與一般掃描工具不同的是,AppScan除了可以將自身作爲代理服務器,而且可以在自身窗口中集成瀏覽器功能直接進行爬網。
(1)探索掃描
按照 手動探索->繼續僅探索->完全掃描 的順序完成探索掃描過程
首先新建項目,選擇文件->新建
,選擇針對WEB Application或者WEB Service進行掃描,可以選擇將AppScan作爲代理,這裏要對Metasploitable主機上的DVWA應用進行掃描,選在掃描Web應用程序
,填寫url。
圖17 新建項目嚮導
然後選擇登錄方法,推薦使用記錄的方式進行登錄,點擊記錄
按鈕,AppScan會打開集成的IE或者Chrome接口,訪問上一步填寫的URL,用戶只需要正常登錄,AppScan就會將登錄過程記錄下來供之後掃描、爬網登錄使用。
圖18 記錄身份驗證過程
隨着嚮導選擇掃描配置,也可以在之後的掃描界面菜單欄選擇配置
進行詳細的配置,最後建議選擇使用手動探索啓動
(AppScan中探索=爬網,測試=掃描)。
手動探索啓動後,AppScan會開啓瀏覽器窗口對目標進行登陸訪問,人工點擊每個鏈接,提交所有的url,然後在掃描
中選擇繼續僅探索
,自動爬取所有的頁面後再開啓完全掃描
,如果左下角已爬取的頁面和需要爬取的頁面數目不一致,則需要將探索-掃描
的步驟一直持續,直到將所有界面都爬取且掃描,之後掃描
的按鈕會顯示灰色。
圖19 AppScan掃描界面
(2)漏洞分析
對於檢測出的每個漏洞,AppScan在問題
中記錄了有關漏洞信息、修復建議、測試方法等非常詳細的說明,對安全測試人員非常有幫助,甚至在任務
中按照優先級制定好了修復漏洞的一系列任務,幫助安全測試人員修復漏洞。
在數據
中記錄了HTTP Request/Response的參數、Cookie等信息,針對具體內容右鍵選擇手動測試
,可以對HTTP Request/Response進行編輯重放進行測試。
(3)報告生成
AppScan同樣具有強大的報告生成功能,支持不同行業標準、不同合規性、不同模板內容的報告導出功能,同時其具有Glass Box灰盒測試功能,可以幫助更加精準地掃描目標。