htcap:一款實(shí)用的遞歸型Web漏洞掃描工具
今天給大家介紹的是一款名叫 htcap 的開(kāi)源 Web 漏洞掃描工具,它通過(guò)攔截 AJAX 調(diào)用和頁(yè)面 DOM 結(jié)構(gòu)的變化并采用遞歸的形式來(lái)爬取單頁(yè)面應(yīng)用(SPA)。htcap 并不是一款新型的漏洞掃描工具,因?yàn)樗饕槍?duì)的是漏洞掃描點(diǎn)的爬取過(guò)程,然后使用外部工具來(lái)掃描安全漏洞。在 htcap 的幫助下,我們就可以通過(guò)手動(dòng)或自動(dòng)滲透測(cè)試來(lái)對(duì)現(xiàn)代 Web應(yīng)用進(jìn)行漏洞掃描了。
一、環(huán)境要求
- Python 2.7
- PhantomJS v2
- Sqlmap
- Arachni
二、工具下載和運(yùn)行
- $ git clonehttps://github.com/segment-srl/htcap.git htcap
- $ htcap/htcap.py
三、命令行參數(shù)
- $ htcap crawl -h
- usage: htcap [options] url outfile
- Options:
- -h 幫助菜單
- -w 覆蓋輸出文件
- -q 不顯示處理過(guò)程信息
- -mMODE 設(shè)置爬取模式:
- - passive:不與頁(yè)面交互
- - active:觸發(fā)事件
- - aggressive:填寫輸入值并爬取表單 (默認(rèn))
- -sSCOPE 設(shè)置爬取范圍:
- - domain:僅爬取當(dāng)前域名 (默認(rèn))
- - directory:僅爬取檔期那目錄 (以及子目錄)
- - url: 僅分析單一頁(yè)面
- -D 最大爬取深度 (默認(rèn): 100)
- -P 連續(xù)表單的最大爬取深度 (默認(rèn): 10)
- -F 主動(dòng)模式下不爬取表單
- -H 保存頁(yè)面生成的HTML代碼
- -dDOMAINS 待掃描的域名,多個(gè)域名用逗號(hào)分隔 (例如*.target.com)
- -cCOOKIES 以JSON格式或name=value鍵值對(duì)的形式設(shè)置cookie,多個(gè)值用分號(hào)隔開(kāi)
- -CCOOKIE_FILE 包含cookie的文件路徑
- -rREFERER 設(shè)置初始引用
- -xEXCLUDED 不掃描的URL地址,多個(gè)地址用逗號(hào)隔開(kāi)
- -pPROXY 設(shè)置代理,protocol:host:port- 支持'http'或'socks5'
- -nTHREADS 爬蟲線程數(shù)量 (默認(rèn): 10)
- -ACREDENTIALS 用戶HTTP驗(yàn)證的用戶名和密碼,例如username:password
- -UUSERAGENT 設(shè)置用戶代理
- -tTIMEOUT 分析一個(gè)頁(yè)面最長(zhǎng)可用時(shí)間(默認(rèn)300)
- -S 跳過(guò)初始url檢測(cè)
- -G 分組query_string參數(shù)
- -N 不使用標(biāo)準(zhǔn)化URL路徑 (保留../../)
- -R 最大重定向數(shù)量 (默認(rèn)10)
- -I 忽略robots.txt
四、htcap簡(jiǎn)單介紹
htcap的掃描過(guò)程分為兩步,htcap首先會(huì)盡可能地收集待測(cè)目標(biāo)可以發(fā)送的請(qǐng)求,例如url、表單和AJAX請(qǐng)求等等,然后將收集到的請(qǐng)求保存到一個(gè)SQLite數(shù)據(jù)庫(kù)中。爬取工作完成之后,我們就可以使用其他的安全掃描工具來(lái)測(cè)試這些搜集到的測(cè)試點(diǎn),最后將掃描結(jié)果存儲(chǔ)到剛才那個(gè)SQLite數(shù)據(jù)庫(kù)之中。
htcap內(nèi)置了sqlmap和arachni模塊,sqlmap主要用來(lái)掃描SQL注入漏洞,而arachni可以發(fā)現(xiàn)XSS、XXE、代碼執(zhí)行和文件包含等漏洞。
htcap所采用的爬蟲算法能夠采用遞歸的方式爬取基于AJAX的頁(yè)面,htcap可以捕獲AJAX調(diào)用,然后映射出DOM結(jié)構(gòu)的變化,并對(duì)新增的對(duì)象進(jìn)行遞歸掃描。當(dāng)htcap加載了一個(gè)測(cè)試頁(yè)面之后,htcap會(huì)嘗試通過(guò)觸發(fā)所有的事件和填充輸入值來(lái)觸發(fā)AJAX調(diào)用請(qǐng)求,當(dāng)htcap檢測(cè)到了AJAX調(diào)用之后,htcap會(huì)等待請(qǐng)求和相關(guān)調(diào)用完成。如果之后頁(yè)面的DOM結(jié)構(gòu)發(fā)生了變化,htcap便會(huì)用相同算法對(duì)新增元素再次進(jìn)行計(jì)算和爬取,直到觸發(fā)了所有的AJAX調(diào)用為止。
1. 爬蟲模塊
Htcap支持三種爬取模式:被動(dòng)型、主動(dòng)型和攻擊型。在被動(dòng)模式下,htcap不會(huì)與任何頁(yè)面進(jìn)行交互,這意味著爬蟲不會(huì)觸發(fā)任何頁(yè)面事件,它只會(huì)收集頁(yè)面現(xiàn)有的鏈接。在這個(gè)模式下,htcap就跟普通的Web爬蟲一樣,只會(huì)收集頁(yè)面標(biāo)簽中的鏈接。在主動(dòng)模式下,htcap會(huì)觸發(fā)所有發(fā)現(xiàn)的事件,相當(dāng)于模擬用戶與頁(yè)面進(jìn)行交互,但不填寫任何表單數(shù)據(jù)。在攻擊模式下,htcap會(huì)向所有掃描到的表單和輸入框中填寫測(cè)試數(shù)據(jù),即盡可能地模擬用戶與頁(yè)面進(jìn)行交互。