Kali Linux Web 滲透測試秘籍 第三章 爬蟲和蜘蛛

第三章 爬蟲和蜘蛛

作者:Gilberto Najera-Gutierrez

譯者:飛龍

協(xié)議:CC BY-NC-SA 4.0

簡介

滲透測試可以通過多種途徑完成,例如黑盒、灰盒和白盒。黑盒測試在測試者沒有任何應(yīng)用的前置信息條件下執(zhí)行,除了服務(wù)器的 URL。白盒測試在測試者擁有目標(biāo)的全部信息的條件下執(zhí)行,例如它的構(gòu)造、軟件版本、測試用戶、開發(fā)信息,以及其它?;液袦y試是黑盒和白盒的混合。

對于黑盒和灰盒測試,偵查階段對測試者非常必然,以便發(fā)現(xiàn)白盒測試中通常由應(yīng)用所有者提供的信息。

我們打算采取黑盒測試方式,因?yàn)樗婕暗酵獠抗粽哂糜讷@取足夠信息的所有步驟,以便入侵應(yīng)用或服務(wù)器的特定功能。

作為每個(gè) Web 滲透測試中偵查階段的一部分,我們需要瀏覽器每個(gè)包含在網(wǎng)頁中的鏈接,并跟蹤它展示的每個(gè)文件。有一些工具能夠幫助我們自動(dòng)和以及加速完成這個(gè)任務(wù),它們叫做 Web 爬蟲或蜘蛛。這些工具通過跟隨所有到外部文件的鏈接和引用,有的時(shí)候會(huì)填充表單并將它們發(fā)送到服務(wù)器,保存所有請求和響應(yīng)來瀏覽網(wǎng)頁,從而提供給我們離線分析它們的機(jī)會(huì)。

這一章中,我們會(huì)涉及到一些包含在 Kali 中的爬蟲的使用,也會(huì)查看我們感興趣的文件和目錄,來尋找常見的網(wǎng)頁。

3.1 使用 Wget 為離線分析下載網(wǎng)頁

Wget 是 GNU 項(xiàng)目的一部分,也包含在主流 linux 發(fā)行版中,包括 Kali。它能夠遞歸為離線瀏覽下載網(wǎng)頁,包括鏈接轉(zhuǎn)換和下載非 HTML 文件。

這個(gè)秘籍中,我們會(huì)使用 Wget 來下載和 vulnerable_vm 中的應(yīng)用相關(guān)的頁面。

準(zhǔn)備

這一章的所有秘籍都需要運(yùn)行 vulnerable_vm。在這本書的特定場景中,它的 IP 地址為 192.168.56.102。

操作步驟

  1. 讓我們做第一次嘗試,通過僅僅以一個(gè)參數(shù)調(diào)用 Wget 來下載頁面。

    wget http://192.168.56.102/bodgeit/
    

    我們可以看到,它僅僅下載了index.html文件到當(dāng)前目錄,這是應(yīng)用的首頁。

  2. 我們需要使用一些選項(xiàng),告訴 Wget 將所有下載的文件保存到特定目錄中,并且復(fù)制我們設(shè)為參數(shù)的 URL 中包含的所有文件。讓我們首先創(chuàng)建目錄來保存這些文件:

    mkdir bodgeit_offline
    
  3. 現(xiàn)在,我們會(huì)遞歸下載應(yīng)用中所有文件并保存到相應(yīng)目錄中。

    wget -r -P bodgeit_offline/ http://192.168.56.102/bodgeit/
    
    

工作原理

像之前提到的那樣,Wget 是個(gè)為下載 HTTP 內(nèi)容創(chuàng)建的工具。通過-r參數(shù),我們可以使其遞歸下載,這會(huì)按照它所下載的每個(gè)頁面的所有連接,并同樣下載它們。-P選項(xiàng)允許我們設(shè)置目錄前綴,這是 Wget 會(huì)開始保存下載內(nèi)容的目錄。默認(rèn)它設(shè)為當(dāng)前目錄。

更多

在我們使用 Wget 時(shí),可以考慮一些其它的實(shí)用選項(xiàng):

  • -l:在遞歸下載的時(shí)候,規(guī)定 Wget 的遍歷深度可能很有必要。這個(gè)選項(xiàng)后面帶有我們想要遍歷的層級深度的數(shù)值,讓我們規(guī)定這樣的界限。

  • -k:在文件下載之后,Wget 修改所有鏈接,使其指向相應(yīng)的本地文件,這會(huì)使站點(diǎn)能夠在本地瀏覽。

  • -p:這個(gè)選項(xiàng)讓 Wget 下載頁面所需的所有圖像,即使它們位于其它站點(diǎn)。

  • -w:這個(gè)選項(xiàng)讓 Wget 在兩次下載之間等待指定的描述。當(dāng)服務(wù)器中存在防止自動(dòng)瀏覽的機(jī)制時(shí),這會(huì)非常有用。

3.2 使用 HTTrack 為離線分析下載頁面

就像 HTTrack 的官網(wǎng)所說(http://www.httrack.com):

它允許你從互聯(lián)網(wǎng)下載 WWW 站點(diǎn)到本地目錄中,遞歸構(gòu)建所有目錄、從服務(wù)器獲得 HTML、圖像,和其它文件到你的計(jì)算機(jī)中。

我們在這個(gè)秘籍中會(huì)使用 HTTrack 來下載應(yīng)用站點(diǎn)的所有內(nèi)容。

準(zhǔn)備

HTTrack 沒有默認(rèn)在 Kali 中安裝。所以我們需要安裝它。

apt-get update 
apt-get install httrack

操作步驟

  1. 我們的第一步是創(chuàng)建目錄來儲(chǔ)存下載的站點(diǎn),輸入:

    mkdir bodgeit_httrack 
    cd bodgeit_httrack
    
  2. 使用 HTTrack 的最簡單方式就是向命令中添加我們打算下載的 URL。

    httrack http://192.168.56.102/bodgeit/ 
    

    設(shè)置最后的/非常重要,如果遺漏了的話,HTTrack 會(huì)返回 404 錯(cuò)誤,因?yàn)榉?wù)器根目錄沒有bodgeit文件。

  3. 現(xiàn)在,如果我們訪問文件file:///root/MyCookbook/test/bodgeit_httrack/index. html(或者你在你的測試環(huán)境中選擇的目錄),我們會(huì)看到,我們可以離線瀏覽整個(gè)站點(diǎn):

工作原理

HTTrack 創(chuàng)建站點(diǎn)的完整靜態(tài)副本,這意味著所有動(dòng)態(tài)內(nèi)容,例如用戶輸入的響應(yīng),都不會(huì)有效。在我們下載站點(diǎn)的文件夾中,我們可以看到下列文件和目錄:

  • 以服務(wù)器名稱或地址命名的目錄,包含所有下載的文件。

  • cookies.txt文件,包含用于下載站點(diǎn)的 cookie 信息。

  • hts-cache目錄包含由爬蟲檢測到的文件列表,這是 httrack 所處理的文件列表。

  • hts-log.txt文件包含錯(cuò)誤、警告和其它在爬取或下載站點(diǎn)期間的信息

  • index.html文件重定向到副本的原始主頁,它位于名稱為服務(wù)器的目錄中。

更多

HTTrack 也擁有一些擴(kuò)展選項(xiàng),允許我們自定義它的行為來更好符合我們的需求。下面是一些值得考慮的實(shí)用修改器:

  • -rN:將爬取的鏈接深度設(shè)置為 N。
  • -%eN:設(shè)置外部鏈接的深度界限。
  • +[pattern]:告訴 HTTrack 將匹配[pattern]的 URL 加入白名單,例如+*google.com/*。
  • -[pattern]:告訴 HTTrack 將匹配[pattern]的 URL 加入黑名單。
  • -F [user-agent]:允許我們定義用于下載站點(diǎn)的 UA(瀏覽器標(biāo)識符)。

3.3 使用 ZAP 蜘蛛

在我們的計(jì)算機(jī)中將完整的站點(diǎn)下載到目錄給予我們信息的靜態(tài)副本,這意味著我們擁有了不同請求產(chǎn)生的輸出,但是我們沒有服務(wù)器的請求或響應(yīng)狀態(tài)。為了擁有這種信息的記錄,我們需要使用蜘蛛,就像 OWASP ZAP 中集成的這個(gè)。

這個(gè)秘籍中,我們會(huì)使用 ZAP 的蜘蛛來爬取 vulnerable_vm 中的目錄,并檢查捕獲的信息。

準(zhǔn)備

對于這個(gè)秘籍,我們需要啟動(dòng) vulnerable_vm 和 OWASP ZAP,瀏覽器需要配置來將 ZAP 用做代理。這可以通過遵循上一章中“使用 ZAP 發(fā)現(xiàn)文件和文件夾”中的指南來完成。

操作步驟

  1. 為了讓 ZAP 啟動(dòng)并使瀏覽器將其用作代理,瀏覽http://192.168.56.102/bodgeit/。

  2. Sites標(biāo)簽頁中,打開對應(yīng)測試站點(diǎn)的文件夾(本書中是http://192.168.56.102)。

  3. 右擊GET:bodgeit。

  4. 從下拉菜單中選擇Attack | Spider…

  5. 在對話框中,保留所有選項(xiàng)為默認(rèn)并點(diǎn)擊Start Scan。

  6. 結(jié)果會(huì)出現(xiàn)在Spider標(biāo)簽頁的底部面板中。

  7. 如果我們打算分析獨(dú)立文件的請求和響應(yīng),我們訪問Sites標(biāo)簽并打開其中的site文件夾和bodget文件夾。讓我們看一看POST:contact.jsp(anticsrf,comments,null)。

    在右邊,我們可以看到完整的請求,包含所使用的參數(shù)(下半邊)。

  8. 現(xiàn)在,選擇右側(cè)部分的Reponse標(biāo)簽頁。

    在上半邊中,我們可以看到響應(yīng)頭,包括服務(wù)器標(biāo)識和會(huì)話 Cookie,在下版本我們擁有完整的 HTML 響應(yīng)。在之后的章節(jié)中,我們會(huì)了解從已授權(quán)的用戶獲取這種 cookie,如何用于劫持用戶會(huì)話以及執(zhí)行冒充它們的操作。

工作原理

就像任何其它爬蟲那樣,ZAP 的蜘蛛跟隨它找到的每個(gè)鏈接,位于每個(gè)包含請求范圍以及其中的鏈接中的頁面上。此外,蜘蛛會(huì)跟隨表單響應(yīng)、重定向和包含在robots.txtsitemap.xml文件中的 URL。之后它會(huì)為之后分析和使用儲(chǔ)存所有請求和響應(yīng)、

更多

在爬取站點(diǎn)或目錄之后,我們可能打算使用儲(chǔ)存的請求來執(zhí)行一些測試。使用 ZAP 的功能,我們能夠執(zhí)行下列事情:

  • 在修改一些數(shù)據(jù)之后重放請求
  • 執(zhí)行主動(dòng)和被動(dòng)漏洞掃描
  • 模糊測試輸入?yún)?shù)來尋找可能的攻擊向量
  • 在瀏覽器中重放特定請求

3.4 使用 Burp Suite 爬取站點(diǎn)

Burp 幾乎是最廣泛用于應(yīng)用滲透測試的工具,因?yàn)樗鼡碛蓄愃?ZAP 的功能,并含有一些獨(dú)特的特性和易用的界面。Burp 不僅僅能夠用于爬取站點(diǎn),但是現(xiàn)在,作為偵查階段的一部分,我們先涉及這個(gè)特性。

準(zhǔn)備

通過訪問 Kali 的Applications菜單,之后訪問03 Web Application Analysis | Web Application Proxies | burpsuite來啟動(dòng) Burp Suite,就像下面這樣:

![](http://upload-images.jianshu.io/upload_images/118142-f4d8393d896bea71.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

之后配置瀏覽器將其用做代理,通過 8080 端口,就像我們之前使用 ZAP 的那樣。

操作步驟

  1. Burp 的代理默認(rèn)配置為攔截所有請求,我們需要禁用它來不帶攔截瀏覽。訪問Proxy標(biāo)簽頁并點(diǎn)擊Intercept is on按鈕,它就會(huì)變?yōu)?code>Intercept is off,像這樣:

  2. 現(xiàn)在,在瀏覽器中,訪問http://192.168.56.102/bodgeit/。

  3. 在 Burp 的窗口中,當(dāng)我們訪問Target的時(shí)候,我們會(huì)看到其中含有我們正在瀏覽器的站點(diǎn)信息,以及瀏覽器產(chǎn)生的請求。

  4. 現(xiàn)在,為了激活蜘蛛,我們右擊bodgeit文件夾,并從菜單中選擇Spider this branch。

  5. Burp 會(huì)詢問我們是否添加項(xiàng)目到這里,我們點(diǎn)擊Yes。通常,Burp 的蜘蛛只爬取匹配定義在Target標(biāo)簽頁中的Scope標(biāo)簽頁中的模式的項(xiàng)目。

  6. 之后,蜘蛛會(huì)開始運(yùn)行。當(dāng)它檢測到登錄表單之后,它會(huì)向我們詢問登錄憑據(jù)。我們可以忽略它,蜘蛛會(huì)繼續(xù),或者我們可以提交一些測試值,蜘蛛會(huì)填充這些值到表單中。讓我們將兩個(gè)字段,用戶名和密碼都填充為單詞test,并點(diǎn)擊Submit form

  7. 下面,我們會(huì)要求在注冊頁中填充用戶名和密碼。我們通過點(diǎn)擊Ignore form來忽略它。

  8. 我們可以在Spider標(biāo)簽頁中檢查蜘蛛的狀態(tài)。我們也可以通過點(diǎn)擊Spider is running按鈕來停止它。讓我們現(xiàn)在停止它,像這樣:

  9. 我們可以在Site map標(biāo)簽頁中檢查蜘蛛生成的結(jié)果,它在Target中。讓我們查看我們之前填充的登錄請求:

工作原理

Burp 的蜘蛛遵循和其它蜘蛛相同的方式,但是它的行為有一些不同,我們可以讓它在我們?yōu)g覽站點(diǎn)的時(shí)候運(yùn)行,它會(huì)添加我們跟隨(匹配范圍定義)的鏈接到爬取隊(duì)列中。

就像 ZAP 那樣,我們可以使用 Burp 的爬取結(jié)果來執(zhí)行任何操作。我們可以執(zhí)行任何請求,例如掃描(如果我們擁有付費(fèi)版)、重放、比較、模糊測試、在瀏覽器中查看,以及其它。

3.5 使用 Burp 重放器重放請求

在分析蜘蛛的結(jié)果以及測試可能的表單輸入時(shí),發(fā)送相同請求的修改特定值的不同版本可能很實(shí)用。

這個(gè)秘籍中,我們會(huì)學(xué)到如何使用 Burp 的重放器來多次發(fā)送帶有不同值的請求。

準(zhǔn)備

我們從前一個(gè)秘籍的地方開始這個(gè)秘籍。啟動(dòng) vulnerable_vm 虛擬機(jī)和 Burp 以及將瀏覽器合理配置來將 Burp 用做代理非常必要。

操作步驟

  1. 我們的第一步是訪問Target標(biāo)簽,之后訪問蜘蛛所生成的登錄頁面請求(http://192.168.56.102/bodgeit/login.jsp),帶有username=test&password=test的那個(gè)。

  2. 右擊請求并從菜單中選擇Send to Repeater,像這樣:

  3. 現(xiàn)在我們切換到Repeater標(biāo)簽頁。

  4. 讓我們點(diǎn)擊Go來在右側(cè)查看服務(wù)器的響應(yīng)。

    Request部分(圖像左側(cè))中,我們可以看到發(fā)給服務(wù)器的原始請求。第一行展示了所使用的方法:POST,被請求的 URL 和協(xié)議:HTTP 1.1。下面一行,一直到 Cookie,都是協(xié)議頭參數(shù),在它們后面我們看到一個(gè)換行,之后是我們在表單輸入的 POST 參數(shù)和值。

  5. 在響應(yīng)部分我們看到了一些標(biāo)簽頁:Raw、Headers、Hex、HTMLRender。這些以不同形式展示相同的響應(yīng)信息。讓我們點(diǎn)擊Render來查看頁面,就像在瀏覽器中那樣:

  6. 我們可以在請求端修改任何信息。再次點(diǎn)擊OK并檢查新的響應(yīng)。對于測試目的,讓我們將密碼值替換為一個(gè)單引號,并發(fā)送請求。

    我們可以看到,我們通過修改輸入變量的值觸發(fā)了系統(tǒng)錯(cuò)誤。這可能表明應(yīng)用中存在漏洞。在后面的章節(jié)中,我們會(huì)涉及到漏洞的測試和識別,并深入探索它。

工作原理

Burp 的重放器允許我們手動(dòng)為相同的 HTTP 請求測試不同的輸入和場景,并且分析服務(wù)器提供的響應(yīng)。這在測試漏洞的時(shí)候非常實(shí)用,因?yàn)闇y試者可以了解應(yīng)用如何對多種所提供的輸入反應(yīng),以及從而識別或利用設(shè)計(jì)、編程或配置中的可能缺陷。

3.6 使用 WebScarab

WebScarab 是另一個(gè) Web 代理,擁有讓滲透測試者感興趣的特性。這個(gè)秘籍中,我們會(huì)使用它來爬取網(wǎng)站。

準(zhǔn)備

作為默認(rèn)配置,WebScarab 實(shí)用 8008 端口來捕獲 HTTP 請求。所以我們需要配置我們的瀏覽器來在 localhost 中使用這個(gè)端口作為代理。你需要遵循與在瀏覽器中配置 OWASP ZAP、Burp Suite 的相似步驟。這里,端口必須是 8008。

操作步驟

  1. 在 Kali 的Applications菜單中,訪問03 Web Application Analysis | webscarab來打開WebScarab。

  2. 瀏覽vulnerable_vm 的 Bodgeit 應(yīng)用(http://192.168.56.102/ bodgeit/)。我們會(huì)看到它出現(xiàn)在 WebScarab 的Summary標(biāo)簽頁中。

  3. 現(xiàn)在,右擊 bodgeit 文件夾并從菜單選擇Spider tree,像這樣:

  4. 在蜘蛛發(fā)現(xiàn)新文件過程中,所有請求會(huì)出現(xiàn)在概覽的下半部分,樹也會(huì)被填滿。

    這個(gè)概覽也展示了一些關(guān)于每個(gè)特定文件的相關(guān)信息。例如,是否存在注入或者可能為注入的漏洞,是否設(shè)置了 cookie,包含表單,或者是否表單含有隱藏字段。它也表明了代碼或文件上傳中存在注釋。

  5. 如果我們右擊任何下半部分的請求,我們會(huì)看到可以對它們執(zhí)行的操作。我們分析請求,找到路徑/bodgeit/search.jsp,右擊它,并選擇Show conversation`。新的窗口會(huì)彈出,并以多種格式展示響應(yīng)和請求,就像下面這樣:

  6. 現(xiàn)在點(diǎn)擊Spider標(biāo)簽頁。

    這個(gè)標(biāo)簽頁中,我們可以在Allowed DomainsForbidden Domains中,使用正則表達(dá)式來調(diào)整蜘蛛抓取的內(nèi)容。我們也可以使用Fetch Tree來刷新結(jié)果。我們也可以通過點(diǎn)擊Stop按鈕來停止蜘蛛。

工作原理

WebScarab 的蜘蛛類似于 ZAP 或者 Burp Suite,對發(fā)現(xiàn)網(wǎng)站中所有被引用文件或目錄,而無需手動(dòng)瀏覽器所有可能的鏈接,以及深度分析發(fā)給服務(wù)器的請求,并使用它們執(zhí)行更多復(fù)雜的測試非常實(shí)用。

3.7 從爬取結(jié)果中識別相關(guān)文件和目錄

我們已經(jīng)爬取了應(yīng)用的完整目錄,并且擁有了被引用文件和目錄的完整列表。下一步地然是識別這些文件哪個(gè)包含相關(guān)信息,或者是更可能發(fā)現(xiàn)漏洞的機(jī)會(huì)。

這篇不僅僅是個(gè)秘籍,更是用于文件和目錄的常見名稱、前后綴的總結(jié),它們通常給滲透測試者提供有價(jià)值的信息,或者是可能導(dǎo)致整個(gè)系統(tǒng)淪陷的漏洞利用。

操作步驟

  1. 首先,我們打算尋找登錄和注冊頁面,它們可以給我們機(jī)會(huì)來成為應(yīng)用的正常用戶,或者通過猜測用戶名和密碼來冒充它們。一些名稱和部分名稱的例子是:

    • Account
    • Auth
    • Login
    • Logon
    • Registration
    • Register
    • Signup
    • Signin
  2. 另一個(gè)常見的用戶名、密碼來源和與之相關(guān)的漏洞是密碼恢復(fù)頁面:

    • Change
    • Forgot
    • lost-password
    • Password
    • Recover
    • Reset
  3. 下面,我們需要識別是否存在應(yīng)用的管理員部分,這里有一組功能可能允許我們執(zhí)行高權(quán)限的操作,例如:

    • Admin
    • Config
    • Manager
    • Root
  4. 其它有趣的目錄是內(nèi)容管理系統(tǒng)(CMS)的管理員、數(shù)據(jù)庫或應(yīng)用服務(wù)器之一,例如:

    • Admin-console
    • Adminer
    • Administrator
    • Couch
    • Manager
    • Mylittleadmin
    • PhpMyAdmin
    • SqlWebAdmin
    • Wp-admin
  5. 應(yīng)用的測試和開發(fā)版通常沒有保護(hù),并且比最終發(fā)行版更容易存在漏洞,所以它們在我們搜索缺陷的時(shí)候是個(gè)很好的目標(biāo)。這些目錄的名稱包含:

    • Alpha
    • Beta
    • Dev
    • Development
    • QA
    • Test
  6. Web 服務(wù)器的信息和配置文件如下:

    • config.xml
    • info
    • phpinfo
    • server-status
    • web.config
  7. 此外,所有在robots.txt中標(biāo)記為Disallow的目錄和文件可能非常實(shí)用。

工作原理

一些前面列出的名稱和它們的語言變體允許我們訪問站點(diǎn)的首先部分,這是滲透測試中非常重要的步驟。它們中的一些能夠提供給我們服務(wù)器,它的配置以及所使用的開發(fā)框架信息。其它的,例如 Tomcat 管理器和 JBoss 的登錄頁面,如果配置不當(dāng)?shù)脑?,?huì)讓我們(或惡意攻擊者)獲得服務(wù)器的控制。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容