第三章 爬蟲和蜘蛛
作者:Gilberto Najera-Gutierrez
譯者:飛龍
協(xié)議:CC BY-NC-SA 4.0
簡介
滲透測試可以通過多種途徑完成永淌,例如黑盒崎场、灰盒和白盒砰嘁。黑盒測試在測試者沒有任何應(yīng)用的前置信息條件下執(zhí)行崎脉,除了服務(wù)器的 URL。白盒測試在測試者擁有目標(biāo)的全部信息的條件下執(zhí)行乎澄,例如它的構(gòu)造、軟件版本螃宙、測試用戶蛮瞄、開發(fā)信息,以及其它谆扎」彝保灰盒測試是黑盒和白盒的混合堂湖。
對于黑盒和灰盒測試闲先,偵查階段對測試者非常必然,以便發(fā)現(xiàn)白盒測試中通常由應(yīng)用所有者提供的信息苗缩。
我們打算采取黑盒測試方式饵蒂,因為它涉及到外部攻擊者用于獲取足夠信息的所有步驟,以便入侵應(yīng)用或服務(wù)器的特定功能酱讶。
作為每個 Web 滲透測試中偵查階段的一部分退盯,我們需要瀏覽器每個包含在網(wǎng)頁中的鏈接,并跟蹤它展示的每個文件泻肯。有一些工具能夠幫助我們自動和以及加速完成這個任務(wù)渊迁,它們叫做 Web 爬蟲或蜘蛛。這些工具通過跟隨所有到外部文件的鏈接和引用灶挟,有的時候會填充表單并將它們發(fā)送到服務(wù)器琉朽,保存所有請求和響應(yīng)來瀏覽網(wǎng)頁,從而提供給我們離線分析它們的機會稚铣。
這一章中箱叁,我們會涉及到一些包含在 Kali 中的爬蟲的使用,也會查看我們感興趣的文件和目錄惕医,來尋找常見的網(wǎng)頁耕漱。
3.1 使用 Wget 為離線分析下載網(wǎng)頁
Wget 是 GNU 項目的一部分,也包含在主流 linux 發(fā)行版中抬伺,包括 Kali螟够。它能夠遞歸為離線瀏覽下載網(wǎng)頁,包括鏈接轉(zhuǎn)換和下載非 HTML 文件峡钓。
這個秘籍中妓笙,我們會使用 Wget 來下載和 vulnerable_vm 中的應(yīng)用相關(guān)的頁面。
準(zhǔn)備
這一章的所有秘籍都需要運行 vulnerable_vm能岩。在這本書的特定場景中寞宫,它的 IP 地址為 192.168.56.102。
操作步驟
-
讓我們做第一次嘗試捧灰,通過僅僅以一個參數(shù)調(diào)用 Wget 來下載頁面淆九。
wget http://192.168.56.102/bodgeit/
我們可以看到统锤,它僅僅下載了
index.html
文件到當(dāng)前目錄毛俏,這是應(yīng)用的首頁炭庙。 -
我們需要使用一些選項,告訴 Wget 將所有下載的文件保存到特定目錄中煌寇,并且復(fù)制我們設(shè)為參數(shù)的 URL 中包含的所有文件焕蹄。讓我們首先創(chuàng)建目錄來保存這些文件:
mkdir bodgeit_offline
-
現(xiàn)在,我們會遞歸下載應(yīng)用中所有文件并保存到相應(yīng)目錄中阀溶。
wget -r -P bodgeit_offline/ http://192.168.56.102/bodgeit/
工作原理
像之前提到的那樣腻脏,Wget 是個為下載 HTTP 內(nèi)容創(chuàng)建的工具。通過-r
參數(shù)银锻,我們可以使其遞歸下載永品,這會按照它所下載的每個頁面的所有連接,并同樣下載它們击纬。-P
選項允許我們設(shè)置目錄前綴鼎姐,這是 Wget 會開始保存下載內(nèi)容的目錄。默認(rèn)它設(shè)為當(dāng)前目錄更振。
更多
在我們使用 Wget 時炕桨,可以考慮一些其它的實用選項:
-l
:在遞歸下載的時候,規(guī)定 Wget 的遍歷深度可能很有必要肯腕。這個選項后面帶有我們想要遍歷的層級深度的數(shù)值献宫,讓我們規(guī)定這樣的界限。-k
:在文件下載之后实撒,Wget 修改所有鏈接姊途,使其指向相應(yīng)的本地文件,這會使站點能夠在本地瀏覽知态。-p
:這個選項讓 Wget 下載頁面所需的所有圖像捷兰,即使它們位于其它站點。-w
:這個選項讓 Wget 在兩次下載之間等待指定的描述肴甸。當(dāng)服務(wù)器中存在防止自動瀏覽的機制時寂殉,這會非常有用。
3.2 使用 HTTrack 為離線分析下載頁面
就像 HTTrack 的官網(wǎng)所說(http://www.httrack.com
):
它允許你從互聯(lián)網(wǎng)下載 WWW 站點到本地目錄中原在,遞歸構(gòu)建所有目錄友扰、從服務(wù)器獲得 HTML、圖像庶柿,和其它文件到你的計算機中村怪。
我們在這個秘籍中會使用 HTTrack 來下載應(yīng)用站點的所有內(nèi)容。
準(zhǔn)備
HTTrack 沒有默認(rèn)在 Kali 中安裝浮庐。所以我們需要安裝它甚负。
apt-get update
apt-get install httrack
操作步驟
-
我們的第一步是創(chuàng)建目錄來儲存下載的站點柬焕,輸入:
mkdir bodgeit_httrack cd bodgeit_httrack
-
使用 HTTrack 的最簡單方式就是向命令中添加我們打算下載的 URL。
httrack http://192.168.56.102/bodgeit/
設(shè)置最后的
/
非常重要梭域,如果遺漏了的話斑举,HTTrack 會返回 404 錯誤,因為服務(wù)器根目錄沒有bodgeit
文件病涨。 -
現(xiàn)在富玷,如果我們訪問文件
file:///root/MyCookbook/test/bodgeit_httrack/index. html
(或者你在你的測試環(huán)境中選擇的目錄),我們會看到既穆,我們可以離線瀏覽整個站點:
工作原理
HTTrack 創(chuàng)建站點的完整靜態(tài)副本赎懦,這意味著所有動態(tài)內(nèi)容,例如用戶輸入的響應(yīng)幻工,都不會有效励两。在我們下載站點的文件夾中,我們可以看到下列文件和目錄:
以服務(wù)器名稱或地址命名的目錄囊颅,包含所有下載的文件当悔。
cookies.txt
文件,包含用于下載站點的 cookie 信息迁酸。hts-cache
目錄包含由爬蟲檢測到的文件列表先鱼,這是 httrack 所處理的文件列表。hts-log.txt
文件包含錯誤奸鬓、警告和其它在爬取或下載站點期間的信息index.html
文件重定向到副本的原始主頁焙畔,它位于名稱為服務(wù)器的目錄中。
更多
HTTrack 也擁有一些擴展選項串远,允許我們自定義它的行為來更好符合我們的需求宏多。下面是一些值得考慮的實用修改器:
-
-rN
:將爬取的鏈接深度設(shè)置為 N。 -
-%eN
:設(shè)置外部鏈接的深度界限澡罚。 -
+[pattern]
:告訴 HTTrack 將匹配[pattern]
的 URL 加入白名單伸但,例如+*google.com/*
。 -
-[pattern]
:告訴 HTTrack 將匹配[pattern]
的 URL 加入黑名單留搔。 -
-F [user-agent]
:允許我們定義用于下載站點的 UA(瀏覽器標(biāo)識符)更胖。
3.3 使用 ZAP 蜘蛛
在我們的計算機中將完整的站點下載到目錄給予我們信息的靜態(tài)副本,這意味著我們擁有了不同請求產(chǎn)生的輸出隔显,但是我們沒有服務(wù)器的請求或響應(yīng)狀態(tài)却妨。為了擁有這種信息的記錄,我們需要使用蜘蛛括眠,就像 OWASP ZAP 中集成的這個彪标。
這個秘籍中,我們會使用 ZAP 的蜘蛛來爬取 vulnerable_vm 中的目錄掷豺,并檢查捕獲的信息捞烟。
準(zhǔn)備
對于這個秘籍薄声,我們需要啟動 vulnerable_vm 和 OWASP ZAP,瀏覽器需要配置來將 ZAP 用做代理题画。這可以通過遵循上一章中“使用 ZAP 發(fā)現(xiàn)文件和文件夾”中的指南來完成默辨。
操作步驟
為了讓 ZAP 啟動并使瀏覽器將其用作代理,瀏覽
http://192.168.56.102/bodgeit/
婴程。在
Sites
標(biāo)簽頁中廓奕,打開對應(yīng)測試站點的文件夾(本書中是http://192.168.56.102
)抱婉。右擊
GET:bodgeit
档叔。-
從下拉菜單中選擇
Attack | Spider…
。 在對話框中蒸绩,保留所有選項為默認(rèn)并點擊
Start Scan
衙四。-
結(jié)果會出現(xiàn)在
Spider
標(biāo)簽頁的底部面板中。 -
如果我們打算分析獨立文件的請求和響應(yīng)患亿,我們訪問
Sites
標(biāo)簽并打開其中的site
文件夾和bodget
文件夾传蹈。讓我們看一看POST:contact.jsp(anticsrf,comments,null)
。在右邊步藕,我們可以看到完整的請求惦界,包含所使用的參數(shù)(下半邊)。
-
現(xiàn)在咙冗,選擇右側(cè)部分的
Reponse
標(biāo)簽頁沾歪。在上半邊中,我們可以看到響應(yīng)頭雾消,包括服務(wù)器標(biāo)識和會話 Cookie灾搏,在下版本我們擁有完整的 HTML 響應(yīng)。在之后的章節(jié)中立润,我們會了解從已授權(quán)的用戶獲取這種 cookie狂窑,如何用于劫持用戶會話以及執(zhí)行冒充它們的操作。
工作原理
就像任何其它爬蟲那樣桑腮,ZAP 的蜘蛛跟隨它找到的每個鏈接泉哈,位于每個包含請求范圍以及其中的鏈接中的頁面上。此外破讨,蜘蛛會跟隨表單響應(yīng)丛晦、重定向和包含在robots.txt
和sitemap.xml
文件中的 URL。之后它會為之后分析和使用儲存所有請求和響應(yīng)添忘、
更多
在爬取站點或目錄之后采呐,我們可能打算使用儲存的請求來執(zhí)行一些測試。使用 ZAP 的功能搁骑,我們能夠執(zhí)行下列事情:
- 在修改一些數(shù)據(jù)之后重放請求
- 執(zhí)行主動和被動漏洞掃描
- 模糊測試輸入?yún)?shù)來尋找可能的攻擊向量
- 在瀏覽器中重放特定請求
3.4 使用 Burp Suite 爬取站點
Burp 幾乎是最廣泛用于應(yīng)用滲透測試的工具斧吐,因為它擁有類似 ZAP 的功能又固,并含有一些獨特的特性和易用的界面。Burp 不僅僅能夠用于爬取站點煤率,但是現(xiàn)在仰冠,作為偵查階段的一部分,我們先涉及這個特性蝶糯。
準(zhǔn)備
通過訪問 Kali 的Applications
菜單洋只,之后訪問03 Web Application Analysis | Web Application Proxies | burpsuite
來啟動 Burp Suite,就像下面這樣:
![](http://upload-images.jianshu.io/upload_images/118142-f4d8393d896bea71.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
之后配置瀏覽器將其用做代理昼捍,通過 8080 端口识虚,就像我們之前使用 ZAP 的那樣。
操作步驟
-
Burp 的代理默認(rèn)配置為攔截所有請求妒茬,我們需要禁用它來不帶攔截瀏覽担锤。訪問
Proxy
標(biāo)簽頁并點擊Intercept is on
按鈕,它就會變?yōu)?code>Intercept is off乍钻,像這樣: 現(xiàn)在肛循,在瀏覽器中,訪問
http://192.168.56.102/bodgeit/
银择。-
在 Burp 的窗口中多糠,當(dāng)我們訪問
Target
的時候,我們會看到其中含有我們正在瀏覽器的站點信息浩考,以及瀏覽器產(chǎn)生的請求夹孔。 -
現(xiàn)在,為了激活蜘蛛怀挠,我們右擊
bodgeit
文件夾析蝴,并從菜單中選擇Spider this branch
。 Burp 會詢問我們是否添加項目到這里绿淋,我們點擊
Yes
闷畸。通常,Burp 的蜘蛛只爬取匹配定義在Target
標(biāo)簽頁中的Scope
標(biāo)簽頁中的模式的項目吞滞。-
之后佑菩,蜘蛛會開始運行。當(dāng)它檢測到登錄表單之后裁赠,它會向我們詢問登錄憑據(jù)殿漠。我們可以忽略它,蜘蛛會繼續(xù)佩捞,或者我們可以提交一些測試值绞幌,蜘蛛會填充這些值到表單中。讓我們將兩個字段一忱,用戶名和密碼都填充為單詞
test
莲蜘,并點擊Submit form
: 下面谭确,我們會要求在注冊頁中填充用戶名和密碼。我們通過點擊
Ignore form
來忽略它票渠。-
我們可以在
Spider
標(biāo)簽頁中檢查蜘蛛的狀態(tài)逐哈。我們也可以通過點擊Spider is running
按鈕來停止它。讓我們現(xiàn)在停止它问顷,像這樣: -
我們可以在
Site map
標(biāo)簽頁中檢查蜘蛛生成的結(jié)果昂秃,它在Target
中。讓我們查看我們之前填充的登錄請求:
工作原理
Burp 的蜘蛛遵循和其它蜘蛛相同的方式杜窄,但是它的行為有一些不同肠骆,我們可以讓它在我們?yōu)g覽站點的時候運行,它會添加我們跟隨(匹配范圍定義)的鏈接到爬取隊列中羞芍。
就像 ZAP 那樣哗戈,我們可以使用 Burp 的爬取結(jié)果來執(zhí)行任何操作。我們可以執(zhí)行任何請求荷科,例如掃描(如果我們擁有付費版)、重放纱注、比較畏浆、模糊測試、在瀏覽器中查看狞贱,以及其它刻获。
3.5 使用 Burp 重放器重放請求
在分析蜘蛛的結(jié)果以及測試可能的表單輸入時,發(fā)送相同請求的修改特定值的不同版本可能很實用瞎嬉。
這個秘籍中蝎毡,我們會學(xué)到如何使用 Burp 的重放器來多次發(fā)送帶有不同值的請求。
準(zhǔn)備
我們從前一個秘籍的地方開始這個秘籍氧枣。啟動 vulnerable_vm 虛擬機和 Burp 以及將瀏覽器合理配置來將 Burp 用做代理非常必要沐兵。
操作步驟
我們的第一步是訪問
Target
標(biāo)簽,之后訪問蜘蛛所生成的登錄頁面請求(http://192.168.56.102/bodgeit/login.jsp
)便监,帶有username=test&password=test
的那個扎谎。-
右擊請求并從菜單中選擇
Send to Repeater
,像這樣: 現(xiàn)在我們切換到
Repeater
標(biāo)簽頁烧董。-
讓我們點擊
Go
來在右側(cè)查看服務(wù)器的響應(yīng)毁靶。在
Request
部分(圖像左側(cè))中,我們可以看到發(fā)給服務(wù)器的原始請求逊移。第一行展示了所使用的方法:POST预吆,被請求的 URL 和協(xié)議:HTTP 1.1。下面一行胳泉,一直到 Cookie拐叉,都是協(xié)議頭參數(shù)觅够,在它們后面我們看到一個換行,之后是我們在表單輸入的 POST 參數(shù)和值巷嚣。 -
在響應(yīng)部分我們看到了一些標(biāo)簽頁:
Raw
喘先、Headers
、Hex
廷粒、HTML
和Render
窘拯。這些以不同形式展示相同的響應(yīng)信息。讓我們點擊Render
來查看頁面坝茎,就像在瀏覽器中那樣: -
我們可以在請求端修改任何信息涤姊。再次點擊
OK
并檢查新的響應(yīng)。對于測試目的嗤放,讓我們將密碼值替換為一個單引號思喊,并發(fā)送請求。我們可以看到次酌,我們通過修改輸入變量的值觸發(fā)了系統(tǒng)錯誤恨课。這可能表明應(yīng)用中存在漏洞。在后面的章節(jié)中岳服,我們會涉及到漏洞的測試和識別剂公,并深入探索它。
工作原理
Burp 的重放器允許我們手動為相同的 HTTP 請求測試不同的輸入和場景吊宋,并且分析服務(wù)器提供的響應(yīng)纲辽。這在測試漏洞的時候非常實用,因為測試者可以了解應(yīng)用如何對多種所提供的輸入反應(yīng)璃搜,以及從而識別或利用設(shè)計拖吼、編程或配置中的可能缺陷。
3.6 使用 WebScarab
WebScarab 是另一個 Web 代理这吻,擁有讓滲透測試者感興趣的特性吊档。這個秘籍中,我們會使用它來爬取網(wǎng)站橘原。
準(zhǔn)備
作為默認(rèn)配置籍铁,WebScarab 實用 8008 端口來捕獲 HTTP 請求。所以我們需要配置我們的瀏覽器來在 localhost 中使用這個端口作為代理趾断。你需要遵循與在瀏覽器中配置 OWASP ZAP拒名、Burp Suite 的相似步驟。這里芋酌,端口必須是 8008增显。
操作步驟
在 Kali 的
Applications
菜單中,訪問03 Web Application Analysis | webscarab
來打開WebScarab。瀏覽vulnerable_vm 的 Bodgeit 應(yīng)用(
http://192.168.56.102/ bodgeit/
)同云。我們會看到它出現(xiàn)在 WebScarab 的Summary
標(biāo)簽頁中糖权。-
現(xiàn)在,右擊 bodgeit 文件夾并從菜單選擇
Spider tree
炸站,像這樣: -
在蜘蛛發(fā)現(xiàn)新文件過程中星澳,所有請求會出現(xiàn)在概覽的下半部分,樹也會被填滿旱易。
這個概覽也展示了一些關(guān)于每個特定文件的相關(guān)信息禁偎。例如,是否存在注入或者可能為注入的漏洞阀坏,是否設(shè)置了 cookie如暖,包含表單,或者是否表單含有隱藏字段忌堂。它也表明了代碼或文件上傳中存在注釋盒至。
-
如果我們右擊任何下半部分的請求,我們會看到可以對它們執(zhí)行的操作士修。我們分析請求枷遂,找到路徑
/bodgeit/search.jsp
,右擊它李命,并選擇Show conversation`登淘。新的窗口會彈出,并以多種格式展示響應(yīng)和請求封字,就像下面這樣: -
現(xiàn)在點擊
Spider
標(biāo)簽頁。這個標(biāo)簽頁中耍鬓,我們可以在
Allowed Domains
和Forbidden Domains
中阔籽,使用正則表達(dá)式來調(diào)整蜘蛛抓取的內(nèi)容。我們也可以使用Fetch Tree
來刷新結(jié)果牲蜀。我們也可以通過點擊Stop
按鈕來停止蜘蛛笆制。
工作原理
WebScarab 的蜘蛛類似于 ZAP 或者 Burp Suite,對發(fā)現(xiàn)網(wǎng)站中所有被引用文件或目錄涣达,而無需手動瀏覽器所有可能的鏈接在辆,以及深度分析發(fā)給服務(wù)器的請求,并使用它們執(zhí)行更多復(fù)雜的測試非常實用度苔。
3.7 從爬取結(jié)果中識別相關(guān)文件和目錄
我們已經(jīng)爬取了應(yīng)用的完整目錄匆篓,并且擁有了被引用文件和目錄的完整列表。下一步地然是識別這些文件哪個包含相關(guān)信息寇窑,或者是更可能發(fā)現(xiàn)漏洞的機會鸦概。
這篇不僅僅是個秘籍,更是用于文件和目錄的常見名稱甩骏、前后綴的總結(jié)窗市,它們通常給滲透測試者提供有價值的信息先慷,或者是可能導(dǎo)致整個系統(tǒng)淪陷的漏洞利用。
操作步驟
-
首先咨察,我們打算尋找登錄和注冊頁面论熙,它們可以給我們機會來成為應(yīng)用的正常用戶,或者通過猜測用戶名和密碼來冒充它們摄狱。一些名稱和部分名稱的例子是:
- Account
- Auth
- Login
- Logon
- Registration
- Register
- Signup
- Signin
-
另一個常見的用戶名脓诡、密碼來源和與之相關(guān)的漏洞是密碼恢復(fù)頁面:
- Change
- Forgot
- lost-password
- Password
- Recover
- Reset
-
下面,我們需要識別是否存在應(yīng)用的管理員部分二蓝,這里有一組功能可能允許我們執(zhí)行高權(quán)限的操作誉券,例如:
- Admin
- Config
- Manager
- Root
-
其它有趣的目錄是內(nèi)容管理系統(tǒng)(CMS)的管理員、數(shù)據(jù)庫或應(yīng)用服務(wù)器之一刊愚,例如:
- Admin-console
- Adminer
- Administrator
- Couch
- Manager
- Mylittleadmin
- PhpMyAdmin
- SqlWebAdmin
- Wp-admin
-
應(yīng)用的測試和開發(fā)版通常沒有保護踊跟,并且比最終發(fā)行版更容易存在漏洞,所以它們在我們搜索缺陷的時候是個很好的目標(biāo)鸥诽。這些目錄的名稱包含:
- Alpha
- Beta
- Dev
- Development
- QA
- Test
-
Web 服務(wù)器的信息和配置文件如下:
- config.xml
- info
- phpinfo
- server-status
- web.config
此外商玫,所有在
robots.txt
中標(biāo)記為Disallow
的目錄和文件可能非常實用。
工作原理
一些前面列出的名稱和它們的語言變體允許我們訪問站點的首先部分牡借,這是滲透測試中非常重要的步驟拳昌。它們中的一些能夠提供給我們服務(wù)器,它的配置以及所使用的開發(fā)框架信息钠龙。其它的炬藤,例如 Tomcat 管理器和 JBoss 的登錄頁面,如果配置不當(dāng)?shù)脑挷昀铮瑫屛覀儯ɑ驉阂夤粽撸┇@得服務(wù)器的控制沈矿。