1. 程式人生 > >針對非Webapp測試的Burp技巧(一):攔截和代理監聽

針對非Webapp測試的Burp技巧(一):攔截和代理監聽

Burp不僅僅可以被用於Web應用程式測試。我常在移動端和胖客戶端測試中使用Burp。如果應用使用了HTTP方法,那麼Burp絕對會成為你最好的選擇。

我要記錄在工作中對我有很大幫助的Burp技巧。目的之一是與大家一起分享這些技巧,另一個目的是把這些技巧記錄下來(類似於選單中的備忘錄)。

這部分中,我將講述通過 Proxy >  Option 配置的攔截和代理監聽。

這篇文章中的Burp Pro的版本為1.6.39,大部分項都適用於現狀的Burp Free版本(1.6.32)。自從我開始使用Burp(v1.5)以來,大部分設定都沒有改變過。你可以在這個地址下載Burp https://portswigger.net/burp/download.html

當我開始寫這篇文章的時候真沒想到Burp有這麼多東西可以寫。所以我把這篇文章分成了幾個不同的部分。請注意,這篇文章並不是針對Web應用程式測試的,所以我可能會跳過一些功能。如果你有喜歡的tips或者使用案例,非常希望你在評論裡分享出來。

1. 攔截

Burp支援request/response攔截和修改。你可以在Proxy > Options中配置大部分設定。

1.1 攔截響應

有時你想要手動修改攔截的響應。在Proxy > Options > Intercept responses based …中啟用它。確保取消第一個規則裡的複選框,否則二進位制有效載荷可能無法被攔截。

02.png

1.2 攔截請求/響應規則

Burp支援一些規則來完成攔截請求/響應。當你已經重定向大量流量到Burp,但是隻想要攔截一些特定端點的流量時(比如,使用IE代理設定),這些規則非常有用。進入Proxy > Options,檢視攔截客戶端/伺服器 請求規則。有一些預先定義的規則來確定攔截請求的範圍。你還可以新增你的規則,它支援正則表示式匹配內容和頭。

03.png

1.3 匹配和替換

你可以在 Proxy > Options > Match 和 Replace 下進行匹配/替換。這意味著你可以在請求或響應中進行替換。它也支援正則表示式。我通常使用它來修改User-Agent(檢視預設規則或新增你自己的User-Agent)。另一種方式在請求中不使用修補二進位制就自動修改來繞過旁路控制。舉個例子,如果伺服器對登入的true/false響應,我會匹配/替換規則來修復錯誤的登入響應讓它變為true並繞過登入(它只適用於伺服器不關心登入是否成功的情況)。

04.png

1.4 SSL Pass Through

Burp的這個功能被低估了(Proxy > Options > SSL Pass Through)。Burp 不會MitM任何新增到這部分的東西,只是一個不會終止的TLS代理。

假設你正在嘗試代理什麼東西,但是它並不工作。你可以新增端點到SSL Pass Through,然後檢視 Burp 是不是出現了問題。

這種情況常發生於使用混合HTTP和非HTTP協議的胖客戶端來與不痛埠對話。Burp將MitM非HTTP連線,並且可能自動刪除或修改資料包。這將會導致應用程式故障。首先確定端點,然後將它們新增到SSL Pass Through中。讓我們通過實際的例子看看 Proxying Hipchat 第二部分:你認為你能夠使用Burp嗎?

你可以使用這個功能,把Burp當做一個快速、簡單的埠轉換。比如過,你想要連線傳送資料到埠1234的客戶端到正在監聽埠5678的遠端伺服器。如果不想寫程式碼(或使用其他程式)來重定向埠。設定Burp作為埠1234上的代理,重定向端點到使用host檔案的本地主機(活著其他系統特定的方法)。在Burp中,你可以設定代理重定向所有流量到使用請求處理功能的端點和一個不同的埠。把端點新增到SSL Pass Through。

1.5 響應修改選項

大部分對web應用程式來說都是自解釋性的、非常有用的。

轉換HTTP連結到HTTP並刪除cookie中的安全標識能夠在處理請求時很好的契合強制使用SSL。如果我們的應用程式(或瀏覽器)和Burp之間禁止TLS,一個安全cookie就不會被傳輸,app就將停止工作。當Burp被設定使用Set-Cookie響應頭時,它能夠刪除安全標識。

08.png

1.6 在 Startup 和 Miscellaneous 中禁用攔截

我啟動 Burp,並將它設定為代理伺服器,執行應用,然後想知道為什麼它是停滯的。然後我意識到在啟動時,預設使用攔截狀態。

01.png

2. 代理監聽

Burp 在一個埠上進行監聽。這個埠就是進行流量轉發的埠。預設設定是127.0.0.1:8080,但是它是可以被更改的。你也可以在其他介面或所有介面0.0.0.0設定新的代理監聽。唯一的限制是另一個程式不能在所選介面的埠上使用。

代理監聽可以從 Proxy > Option > Proxy Listeners 訪問。

05.png

2.1 繫結

新增一個新的監聽很簡單,只需要點選Add按鈕即可。Loopback是127.0.0.1或者localhost。如果你想要在另一個介面上進行Burp監聽,也可以在這裡選擇。如果我正在代理一個移動裝置,那它非常有用。在這種情況下,我將在和移動裝置(如一個Windows hostednetwork)共享的所有介面(0.0.0.0)或網路介面上建立監聽。

06.png

我們可以匯入/匯出使用匯入/匯出 CA 證書的 Burp 的 root CA,或使用重新生成CA證書來建立新的證書。與瞭解更多資訊,請參閱文章:Installing Burp Certificate Authority in Windows Certificate Store。如果你重新生成了root CA,你必須在Windows證書商店(作業系統或瀏覽器,如火狐等)中用新的證書替換舊的證書。

2.2 請求處理

對於非Web應用程式來說這是一個非常有用的功能。假設我已經通過使用Windows host檔案代理了連線到www.google.com:8080點胖客戶端應用程式。在host檔案中,www.google.com被重定向到127.0.0.1,然後我已經在埠8000中建立了一個Burp監聽。現在,我需要重定向來自這個監聽的所有流量到原始端點(www.google.com:8080)。這麼做的一種方式是把這部分重定向到host和埠,host和埠將分別包含www.google.com和8000。

07.png

如果應用程式正在相同的埠(例如,如果我們想把流量引入埠80或者443)中連線到不同的端點,我們不能在這裡重定向流量。我們需要使用Options > Connections > Hostname Resolution。我們將在下個部分中介紹這些內容。

如果我正在使用Burp來pipe流量到另外的代理工具,如 Fiddler 或 Charles,那這種方法非常有用。

在我剝離Burp和應用程式中的 TLS 並想要從 Burp 新增它到端點時,強制使用 SSL 選項。一個例子是使用 SOAPUI。

2.2.1 Burp的隱形代理

想要了解更多資訊請看 Hipchat part3 然後閱讀 2.2.1 和 2.2.2。閱讀整個系列檢視Burp是如何作為代理工作的。你能跳過很多坑。 

如果我們已經代理了一個客戶端,並且客戶端代理感知它將傳送一個 CONNECT 請求到端點,它想要在開始真正的 TLS 連線之前連線(在這個例子裡連線到 www.google.com)。這是因為代理(在多數情況下是非TLS終止代理而不是像 Burp)不能看到包裡的 TLS,TLS是被加密的 TCP 有效載荷。因此,它不知道哪裡能傳送流量。這個 CONNECT 請求解決這個問題。代理知道客戶端的例子是瀏覽器。

非代理知道客戶端並不知道(或不關心)他們被代理了。對於多數既沒有代理設定也沒有使用作業系統代理設定的應用程式來說都是這種情況。應用程式仍然認為它將傳送資訊傳送到端點,但是他被重定向到了 Burp。Burp 是一個 TLS 終止代理,它能夠揭祕資料包,並通過讀 host 頭來檢視他們來發現原始端點。這就是Burp的無形代理。

它可以在 Proxy > Options 被啟用。選擇代理監聽,點選編輯,並在 Resquest Handling 下選擇支援無形代理。

07-Burp-invisible-proxy-mode.png

我常做的事捕獲應用程式和 Burp 間的本地流量(使用 RawCap ),然後檢視是否應用程式傳送CONNECt 請求。如果是這樣,那它是沒有必要的。另一種方式是嘗試兩種設定,看看哪種會工作。

2.3 證書

我們在這裡可以配置 Burp 的 MitM 證書。

1. 使用自簽名證書:這意味著 Burp 只能對所有的連線使用一個單一的證書。

2. 生成 CA 簽名的單個 host 證書:這是最常見的。Burp 將為每個 host 生成不通的證書。作為域名的證書的通用名稱(CN)是相同的。

3. 使用一個特定的 hostname 生成一個CA簽名的證書:我們可以在證書中指定CN。當一個應用程式通過檢查CN進行認證時,它非常有用,但它和經常使用萬用字元的端點不通。例如,應用程式連線到images.googlecom,但是它在尋找\*.google.com的證書。如果我們選擇最後一個選項,Burp將為images.google.com建立一個證書(因為它時端點),證書鎖定機制會拒絕該證書。

4. 使用自定義證書(PKSC #12):如果我們有一個我們需要使用的特定證書(包括私鑰),我們能夠在這裡使用它。當證書鎖定機制正在檢查更多的CN時,它非常有用,所以我們可以手動生成一個證書(或者如果使用我們能夠獲取的原始證書)並在這裡使用它。

3. 獎金提示:使用一定記憶體執行Burp

個人而言,我從沒在記憶體外執行Burp時沒有遇到任何問題。但是我通常在一天結束時儲存Burp狀態,並且不怎麼使用除YMMV之外的Python/Ruby擴充套件。

通過命令列給Burp分配2048MB(或2GB):

java -jar -Xmx2048m /burp_directory/burpsuite_whatever.jar

* 原文:parsiya.net FB小編FireFrank編譯,轉載請註明來自FreeBuf黑客與極客(FreeBuf.COM)