9.1 Burp Scanner 爬網階段
Burp Scanner是用于執行網站自動掃描,發現內容和審核漏洞的工具。
掃描的爬網階段包括在應用程序中導航,跟蹤鏈接,提交表單以及在必要時登錄,以對應用程序的內容及其中的導航路徑進行分類。這個看似簡單的任務提出了Burp的爬蟲能夠應對的各種挑戰,以創建應用程序的準確地圖。
核心方法
默認情況下,Burp的搜尋器通過單擊鏈接并提交輸入,就像使用瀏覽器的用戶一樣在目標應用程序中導航。它以有向圖的形式構造應用程序內容和功能的映射,表示應用程序中的不同位置以及這些位置之間的鏈接:
搜尋器不假設應用程序使用的URL結構。根據位置的內容(而不是用于訪問它們的URL)來標識位置(并在以后重新標識)。這使搜尋器能夠可靠地處理將短暫數據(例如CSRF令牌或緩存破壞器)放入URL的現代應用程序。即使每個鏈接中的整個URL每次都發生變化,爬網程序仍會構建準確的地圖:
該方法還允許爬網程序根據應用程序的狀態或用戶與其交互來處理使用相同URL到達不同位置的應用程序:
當搜尋器四處導航并建立目標應用程序的覆蓋范圍時,它會跟蹤圖中尚未完成的邊緣。這些代表在應用程序中已觀察到但尚未訪問的鏈接(或其他導航過渡)。但是搜尋器從不“跳轉”到掛起的鏈接并脫離上下文訪問它。相反,它要么直接從當前位置導航,要么還原到起始位置并從那里導航。這將盡可能接近地復制普通用戶瀏覽網站的操作:
以不假設URL結構的方式進行爬網在處理現代Web應用程序時非常有效,但可能會導致看到“太多”內容的問題。現代網站通常包含大量多余的導航路徑(通過頁面頁腳,漢堡菜單等),這意味著所有內容都直接鏈接到其他內容。Burp的搜尋器采用了多種技術來解決此問題:它建立到已訪問位置的鏈接的指紋,以避免重復訪問它們。它以優先進入新內容的廣度優先順序進行爬網;并且它具有可配置的截止時間,可限制抓取的范圍。這些措施還有助于正確處理“無限”應用程序,例如日歷。
會話處理
由于Burp的搜尋器像用戶一樣在目標應用程序周圍導航,因此它能夠自動處理現代瀏覽器可以處理的幾乎所有會話處理機制。無需記錄宏或配置會話處理規則即可告訴Burp如何獲取會話或驗證當前會話是否有效。
搜尋器使用多個搜尋器“代理”來并行化其工作。每個代理代表使用自己的瀏覽器瀏覽的應用程序的不同用戶。每個代理都有其自己的Cookie罐,當應用程序向其發出Cookie時會對其進行更新。當代理返回起始位置以開始從那里開始爬網時,其cookie罐將被清除,以模擬完全新鮮的瀏覽器會話。
爬網程序在其四處導航時發出的請求是根據前面的響應動態構建的,因此URL或表單字段中的CSRF令牌會自動處理。這使爬網程序可以正確導航使用復雜會話處理的功能,而用戶只需進行零配置:
檢測應用程序狀態的變化
現代Web應用程序具有高度的狀態,由于用戶同時執行的操作,同一應用程序功能通常會在不同的場合返回不同的內容。Burp的搜尋器能夠檢測到它在搜尋期間執行的操作導致的應用程序狀態更改。
在下面的示例中,導航路徑BC導致應用程序從狀態1轉換為狀態2。鏈接D轉到狀態1和狀態2的邏輯不同位置。因此,路徑AD將轉到空購物車,而路徑ABCD將轉到填充的購物車。爬蟲不僅能夠確定鏈接D是不確定的,還能夠識別鏈接D所依賴的狀態改變路徑。這使搜尋器可以在將來可靠地到達填充的購物車位置,以訪問那里可用的其他功能:
應用程序登錄
Burp的搜尋器以未經身份驗證的階段開始,該階段不提交任何憑據。完成此操作后,Burp將發現該應用程序中的所有登錄和自我注冊功能。
如果該應用程序支持自我注冊,Burp將嘗試注冊用戶。您還可以將搜尋器配置為使用一個或多個預先存在的登錄名。
然后,搜尋器進入驗證階段。它將多次訪問登錄功能并提交:
- 自注冊帳戶的憑據(如果有)。
- 每個已配置的現有帳戶的憑據。
- 偽造的憑證(這些憑證可能會達到有趣的功能,例如帳戶恢復)。
對于提交給登錄名的每組憑據,Burp都會對登錄名后面發現的內容進行爬網。這允許搜尋器捕獲可用于不同類型的用戶的不同功能:
搜尋易揮發的內容
現代的Web應用程序經常包含易失性內容,其中“相同”的位置或功能將返回在不同情況下有顯著差異的響應,而不是(不必要)由于用戶的任何操作而導致的響應。此行為可能是由社交媒體渠道的提要或用戶評論,內聯廣告或真正隨機的內容(每日消息,A / B測試等)引起的。
Burp的搜尋器能夠識別易失性內容的許多實例,并且盡管響應有所不同,但在不同的訪問中可以正確地重新標識相同的位置。這使搜尋器可以將注意力集中在一組應用程序響應中的“核心”元素上,這對于發現有趣的應用程序內容和功能的關鍵導航路徑而言可能是最重要的:
在某些情況下,在不同的情況下訪問給定的鏈接將返回僅相差太大而不能被視為“相同”的響應。在這種情況下,Burp的搜尋器會將兩個版本的響應捕獲為兩個不同的位置,并將在圖中繪制不確定的邊。如果整個應用程序的不確定性程度不是很大,那么Burp仍可以抓取關聯的內容,并可靠地找到其通往不確定性鏈接背后的內容的方式:
Burp Suite中文使用教程(桌面版)
推薦文章: