1. 程式人生 > >第三章 如何使用Burp Suite代理

第三章 如何使用Burp Suite代理

不同 共存 ava 結束 web 同時 編碼方式 詳細 分別是

Burp Proxy 是Burp Suite以用戶驅動測試流程功能的核心,通過代理模式,可以讓我們攔截、查看、修改所有在客戶端和服務端之間傳輸的數據。

本章主要講述以下內容:

  • Burp Proxy基本使用
  • 數據攔截與控制
  • 可選項配置Options
  • 歷史記錄History

Burp Proxy基本使用

通過上一章的學習,我們對Burp Suite代理模式和瀏覽器代理設置有了基本的了解。Burp Proxy的使用是一個循序漸進的過程,剛開始使用時,可能並不能很快就獲取你所期望的結果,慢慢地當你熟悉了它的功能和使用方法,你就可以用它很好地對一個產品系統做安全能力評估。 一般使用Burp Proxy時,大體涉及環節如下:

  1. 首先,確認JRE已經安裝好,Burp Suite可以啟動並正常運行,且已經完成瀏覽器的代理服務器配置。
  2. 打開Proxy功能中的Intercept選項卡,確認攔截功能為“Interception is on”狀態,如果顯示為“Intercept is off”則點擊它,打開攔截功能。 技術分享
  3. 打開瀏覽器,輸入你需要訪問的URL(以http://baike.baidu.com/為例)並回車,這時你將會看到數據流量經過Burp Proxy並暫停,直到你點擊【Forward】,才會繼續傳輸下去。如果你點擊了【Drop】,則這次通過的數據將會被丟失,不再繼續處理。
  4. 當我們點擊【Forward】之後,我們將看到這次請求返回的所有數據。 技術分享
  5. 當Burp Suite攔截的客戶端和服務器交互之後,我們可以在Burp Suite的消息分析選項卡中查看這次請求的實體內容、消息頭、請求參數等信息。消息分析選項視圖主要包括以下四項: 技術分享
  6. Raw 這是視圖主要顯示web請求的raw格式,包含請求地址、http協議版本、主機頭、瀏覽器信息、Accept可接受的內容類型、字符集、編碼方式、cookie等。你可以通過手工修改這些信息,對服務器端進行滲透測試。
  7. params 這個視圖主要顯示客戶端請求的參數信息、包括GET或者POST請求的參數、Cookie參數。滲透人員可以通過修改這些請求參數來完成對服務器端的滲透測試。
  8. headers 這個視圖顯示的信息和Raw的信息類似,只不過在這個視圖中,展示得更直觀、友好。
  9. Hex 這個視圖顯示Raw的二進制內容,你可以通過hex編輯器對請求的內容進行修改。

默認情況下,Burp Proxy只攔截請求的消息,普通文件請求如css、js、圖片是不會被攔截的,你可以修改默認的攔截選項來攔截這些靜態文件,當然,你也可以通過修改攔截的作用域、參數或者服務器端返回的關鍵字來控制Burp Proxy的消息攔截,這些在後面的章節中我們會進一步的學習。 所有流經Burp Proxy的消息,都會在http history記錄下來,我們可以通過歷史選項卡,查看傳輸的數據內容,對交互的數據進行測試和驗證。同時,對於攔截到的消息和歷史消息,都可以通過右擊彈出菜單,發送到Burp的其他組件,如Spider、Scanner、Repeater、Intruder、Sequencer、Decoder、Comparer、Extender,進行進一步的測試。如下圖所示: 技術分享


數據攔截與控制

Burp Proxy的攔截功能主要由Intercept選項卡中的Forward、Drop、Interception is on/off、Action、Comment 以及Highlight構成,它們的功能分別是: Forward的功能是當你查看過消息或者重新編輯過消息之後,點擊此按鈕,將發送消息至服務器端。 Drop的功能是你想丟失當前攔截的消息,不再forward到服務器端。Interception is on表示攔截功能打開,攔截所有通過Burp Proxy的請求數據;Interception is off表示攔截功能關閉,不再攔截通過Burp Proxy的所有請求數據。 Action的功能是除了將當前請求的消息傳遞到Spider、Scanner、Repeater、Intruder、Sequencer、Decoder、Comparer組件外,還可以做一些請求消息的修改,如改變GET或者POST請求方式、改變請求body的編碼,同時也可以改變請求消息的攔截設置,如不再攔截此主機的消息、不再攔截此IP地址的消息、不再攔截此種文件類型的消息、不再攔截此目錄的消息,也可以指定針對此消息攔截它的服務器端返回消息。

技術分享

Comment的功能是指對攔截的消息添加備註,在一次滲透測試中,你通常會遇到一連串的請求消息,為了便於區分,在某個關鍵的請求消息上,你可以添加備註信息。

技術分享

Highlight的功能與Comment功能有點類似,即對當前攔截的消息設置高亮,以便於其他的請求消息相區分。

技術分享

除了Intercept中可以對通過Proxy的消息進行控制外,在可選項設置選項卡Options中也有很多的功能設置也可以對流經的消息進行控制和處理。

可選項配置Options

當我們打開可選項設置選項卡Options,從界面顯示來看,主要包括以下幾大板塊(涉及https的功能不包含在本章內容裏,後面會一章專門敘述):

  • 客戶端請求消息攔截
  • 服務器端返回消息攔截
  • 服務器返回消息修改
  • 正則表達式配置
  • 其他配置項
客戶端請求消息攔截

客戶端請求消息攔截是指攔截客戶端發送到服務器端消息的相關配置選項,其界面如下: 技術分享

主要包含攔截規則配置、錯誤消息自動修復、自動更新Content-Length消息頭三個部分。

  1. 如果intercept request based on the follow rules的checkbox被選中,則攔截所有符合勾選按鈕下方列表中的請求規則的消息都將被攔截,攔截時,對規則的過濾是自上而下進行的。當然,我們可以根據自己的需求,通過【Up】和【Down】按鈕,調節規則所在位置和排序。同時,我們可以點擊【Add】添加一條規則,也可以選中一條規則,通過點擊【Edit】進行編輯、點擊【Remove】進行刪除。當我們點擊【Add】按鈕時,會彈出規則添加的輸入對話框,如下圖: 技術分享 攔截規則添加時,共包含4個輸入項。Boolean opertor表示當前的規則與其他規則是與的方式(And)還是或的方式(Or)共存;Match type表示匹配類型,此處匹配類型可以基於域名、IP地址、協議、請求方法、URL、文件類型、參數, cookies, 頭部或者內容, 狀態碼, MIME類型, HTML頁面的title等。Match relationship表示此條規則是匹配還是不匹配Match condition輸入的關鍵字。當我們輸入這些信息,點擊【OK】按鈕,則規則即被保存。
  2. 如果Automatically fix missing的checkbox被選中,則表示在一次消息傳輸中,Burp Suite會自動修復丟失或多余的新行。比如說,一條被修改過的請求消息,如果丟失了頭部結束的空行,Burp Suite會自動添加上;如果一次請求的消息體中,URl編碼參數中包含任何新的換行,Burp Suite將會移除。此項功能在手工修改請求消息時,為了防止錯誤,有很好的保護效果。
  3. 如果Automatically update Content-Length的checkbox被選中,則當請求的消息被修改後,Content-Length消息頭部也會自動被修改,替換為與之相對應的值。
服務器端返回消息攔截

服務器端返回消息攔截顧名思義是指攔截服務器端返回的消息的相關配置項,其界面如下: 技術分享

它的功能主要包含intercept response based on the follow rules和Automatically update Content-Length header when the response edited兩個選項,其功能分別與客戶端請求消息攔截中的intercept request based on the follow rules、Automatically update Content-Length header when the request edited相對應,就不在贅述,請參上一節的內容。

服務器返回消息修改

服務器返回消息修改是指自動修改服務器端返回消息的相關設置項。其界面如下:

技術分享

自上而下,每一個選擇項分別對應的功能是

  • 顯示form表單中隱藏字段
  • 高亮顯示form表單中隱藏字段
  • 使form表單中的disable字段生效,變成可輸入域
  • 移除輸入域長度限制
  • 移動JavaScript驗證
  • 移動所有的JavaScript
  • 移除標簽
  • 轉換https超鏈接為http鏈接
  • 移除所有cookie中的安全標誌

通過服務器返回消息修改可選擇項的設置,可以方便滲透測試人員在安全評估過程中突破原有的數據限制,更好、更快地檢測服務器端的安全性。

正則表達式配置

此項配置主要用來自動替換請求消息和服務器端返回消息中的某些值和文本,它與前文的規則的不同之處還在於支持正則表達式語言。

技術分享

當點擊【Add】按鈕時,在彈出的匹配或替換規則輸入對話框中我們可以看到,它可以對請求和返回消息的消息頭,消息體、請求參數名、請求參數值、請求的第一行進行匹配和替換。例如,當我們要替換所有返回消息中的郵箱地址為[email protected]時,可以參考下圖的設置填寫輸入項並保存驗證。

技術分享

其他配置項

其他配置項主要是雜項設置。其界面如下:

技術分享

自上而下依次的功能是

  • 指定使用HTTP/1.0協議與服務器進行通信 這項設置用於強制客戶端采用HTTP/1.0協議與服務器進行通信,一般客戶端使用的HTTP協議版本依賴於客戶端瀏覽器,但某些服務器或者應用,必須使用HTTP/1.0協議,此時可勾選此項

  • 指定使用HTTP/1.0協議反饋消息給客戶端 目前所有的瀏覽器均支持HTTP/1.0協議和HTTP/1.1協議,強制指定HTTP/1.0協議主要用於顯示瀏覽器的某些方面的特征,比如,阻止HTTP管道攻擊。

  • 設置返回消息頭中的“Connection:close” 可用於某些情況下的阻止HTTP管道攻擊。

  • 請求消息頭中脫掉Proxy-* 瀏覽器請求消息中,通常會攜帶代理服務器的相關信息,此選項主要用於清除消息頭中的代理服務器信息。

  • 解壓請求消息中的壓縮文件 某些應用在與服務器端進行交互時,會壓縮消息體,勾選此選項,則Burp Suite 會自動解壓消息體

  • 解壓返回消息中的壓縮文件 大多數瀏覽器支持壓縮的消息體,勾選此選項,則Burp Suite 會自動解壓被服務器端壓縮的消息體

  • 禁用http://burp

  • 允許通過DNS和主機名訪問web接口 即允許通過域名或主機名訪問Burp Suite

  • 不在瀏覽器中顯示Burp Suite錯誤 在我們使用Burp Suite時,如果發生了Burp Suite自身的錯誤,會在瀏覽器中顯示,如果勾選了此項,則不會在瀏覽器中顯示此類錯誤。

  • 禁用日誌到歷史和網站地圖中 此選項的作用是阻止記錄日誌到歷史和網站地圖,在某些情況下可能有用,比如說,通過上遊服務器進行認證或者做正則表達式替換時,為了降低內存的消耗,減少日誌的儲存,你可以勾選此項。

  • 攔截功能開始設置
    這個選項主要用來配置intercept功能的生效方式,分為總是生效、 總是失效 、從上一次的Burp Suite中恢復設置3種方式。

歷史記錄History


Burp Proxy的歷史記錄由HTTP歷史和WebSockets歷史兩個部分組成。 技術分享

HTTP歷史界面由篩選過濾器、歷史記錄列表、消息詳情3個部分組成。 技術分享

當我們在某一條歷史記錄上單擊,會在下方的消息詳解塊顯示此條消息的文本詳細信息。當我們在某條消息上雙擊,則會彈出此條消息的詳細對話框。 技術分享

我們可以點擊對話框右上方的【Previous】、【Next】按鈕,瀏覽上一條或下一條消息的內容,也可以修改Raw的請求參數,然後執行多種【Action】操作。

技術分享

歷史消息列表中主要包含請求序列號、請求協議和主機名、請求的方式、URL路徑、請求參數、Cookie、是否用戶編輯過消息、服務器端返回的HTTP狀態碼等信息。通過這些信息,我們可以對一次客戶端與服務器端交互的HTTP消息詳情做出準確的分析,同時,在下方的詳情視圖中,也提供基於正則表達式方式的匹配查找功能,更好的方便滲透測試人員查找消息體中的相關信息。

技術分享

當我們在做產品系統的安全評估過程中,會在HTTP歷史中保存了大量的日誌記錄,為了更友好的消息管理,Burp提供了篩選過濾器功能。當我們點擊HTTP歷史標簽下發的Filter時,將彈出篩選過濾器界面。

技術分享

按照過濾條件的不同,篩選過濾器劃分出7個子板塊,分別是

  • 按照請求類型過濾 你可以選擇僅顯示當前作用域的、僅顯示有服務器端響應的和僅顯示帶有請求參數的消息。當你勾選“僅顯示當前作用域”時,此作用域需要在Burp Target的Scope選項中進行配置,詳細請閱讀Burp Target相關章節。

  • 按照MIME類型過濾 你可以控制是否顯示服務器端返回的不同的文件類型的消息,比如只顯示HTML、css或者圖片。此過濾器目前支持HTML、Script、XML、CSS、其他文本、圖片、Flash、二進制文件 8種形式。

  • 按照服務器返回的HTTP狀態碼過濾 Burp根據服務器的狀態碼,按照2XX,3XX,4XX,5XX分別進行過濾。比如,如果你只想顯示返回狀態碼為200的請求成功消息,則勾選2XX。

  • 按照查找條件過濾 此過濾器是針對服務器端返回的消息內容,與輸入的關鍵字進行匹配,具體的匹配方式,你可以選擇 1.正則表達式 2.大小寫敏感 3.否定查找 3種方式的任何組合,前面兩種匹配方式容易理解,第3種匹配方式是指與關鍵字匹配上的將不再顯示。

  • 按照文件類型過濾 通過文件類型在過濾消息列表,這裏有兩個選擇可供操作。一是僅僅顯示哪些,另一個是不顯示哪些。如果是僅僅顯示哪些,在show only的輸入框中填寫顯示的文件類型,同樣,如果不顯示哪些文件類型,只要在hide的輸入框中填寫不需要顯示的文件類型即可。

  • 按照註解過濾 此過濾器的功能是指,根據每一個消息攔截時候的備註或者是否高亮來作為篩選條件控制哪些消息在歷史列表中顯示。

  • 按照監聽端口過濾 此過濾器通常使用於當我們在Proxy Listeners中多個監聽端口時,僅僅顯示某個監聽端口通信的消息,一般情況下,我們很少用到。

現在,我們再看看WebSockets歷史選項的功能,從界面上我們可以看出,WebSockets歷史所提供的功能和選項是HTTP歷史的一個子集,只是因為采用的通信方式的不同,而被獨立出來成為一個專門的視圖。其功能的使用方式與HTTP歷史雷同,此處就不在贅述。

通過本章的學習,你對Burp Suite的代理模式有了更深入的理解,知道了作為中間人的Burp Proxy在消息攔截過程中,可以對請求消息、應答消息做多方面的修改,並可以把消息傳遞給Burp的其他組件做進一步的測試。同時,Burp Proxy的歷史日誌功能和多種篩選過濾器讓我們在使用中,能快速地查找需要的數據和關鍵信息,這些,都極大地幫助你提高了工作效率。

第三章 如何使用Burp Suite代理