Burp不僅僅能在Web應用的測試中使用。我也在移動端和傳統客戶端測試時經常使用。對于采用HTTP方法發送數據的應用,Burp是你的最佳選擇。
我要寫下一系列在我工作中給我幫助的那些Burp的提示和技巧。寫出來為了與大家分享,也為了留著備忘。
在撰寫此文時Burp Pro的最新版本是1.6.39,大多數情況下應用的Burp Free的最新版本是1.6.32。我最初使用的是Burp 1.5,自此版本之后Burp并沒有太大改變。
當我最初準備寫時,我沒有想到Burp有這么多可寫的。所以我把它拆分成多個部分。請注意,這篇文章不是在寫Web應用測試,所以我會跳過一些功能不做介紹。如果你有任何好用的提示或用例,一如既往的,我們歡迎反饋。
Burp支持請求/響應包的攔截和修改。你可以在Proxy > Options 中配置這些設置。
有時候為了手動修改你不得不攔截響應數據包。設置在Proxy > Options > Intercept responses based。將第一條規則的復選框取消,否則二進制payload有可能不被攔截。
Burp支持為攔截請求/響應數據包制定規則。當有多重流量經過Burp時,你只想將某些特定節點的流量攔截下來時,這將非常有用。在Proxy > Options 中可以看到規則Intercept Client / Server Requests。這個預定義的規則只能攔截域內的請求。你也可以添加你自己的規則,規則支持正則表達式來匹配內容和包頭。
你可以在Proxy > Options > Match and Replace 中找到匹配與替換。這意味著你可以在請求/響應數據包中按照你的要求進行替換。我通常用用來替換User-Agent。另一種方法不需要打補丁就能繞過客戶端控件在響應數據包中自動進行更改。例如,如果服務器響應登錄是否成功,我定義了一條規則來將登錄失敗響應修改為成功響應,來繞過登錄(這只有在服務器不關心你的登錄是否成功時起作用)。
這是一個Burp被低估的功能,在Proxy > Options > SSL Pass Through中可以找到。
Burp這個功能的實現,不是像中間人攻擊一樣,而只是像一個非終端的TLS代理。
如果你想開啟代理,但是代理卻沒有工作。你可以把這個節點加入 SSL Pass Through中,看這個問題是否與Burp有關。
傳統客戶端會在不同的節點混合使用HTTP和非HTTP協議的流量是很常見的。Burp可以在非HTTP連接中架起中間人,可以靜默的丟包或者改包。這將會導致應用程序出現故障。首先應該識別終端節點,并且把它們添加進SSL Pass Through 中。可以看一個實踐案例
你可以使用這些功能使Burp變成一個快速簡單的端口轉換器。假設你想要連接一個客戶端,這個客戶端通過1234端口發送給遠端服務器所監聽的5678端口。如果你不希望自己寫代碼實現,又不希望使用其他工具來重定向端口。把Burp放在1234端口上開代理,使用hosts文件或其他操作系統特有的文件來重定向這個終端節點到本地。在Burp中你可以通過設置Request Handling 來讓代理重定向全部流量到某個終端節點的不同端口。將這個終端節點添加進SSL Pass Through 中。
這些中的大多數可能只是對于Web應用有效。
Convert HTTPS links to HTTP 和 Remove secure flag from cookies 和Force use of SSL都是Request Handling中的好工具。如果在應用或者瀏覽器和Burp之間禁用TLS,設置為Secure的Cookie將不會再傳輸,app也會停止工作。當使用Cookie設置響應頭時,Burp可以移除Secure標識。
我運行了Burp然后設置好了代理,運行應用卻沒有反應。然后我意識到啟動Burp時默認已經開啟了攔截。
Proxy > Options > Scroll all the way to the bottom > Under Miscellaneous > Enable interception at startup > Always disable.
Burp監聽之前流量經過的那個端口。默認為127.0.0.1:8080,你也可以自行設置。你可以讓新的代理監聽其他網口或者全部網口。唯一的限制是另一個程序就不能使用被選定的網口的這個端口了。
代理監聽可以在Proxy > Option > Proxy Listeners設置。
添加一個新的監聽很容易,只需要點擊Add即可。本地環回是127.0.0.1或localhost。如果你想讓Burp監聽另一個網口,就可以在這里進行選擇。如果想代理移動設備這就非常有用了。在這種情況下,我會創建一個監聽為0.0.0.0或者選擇All interfaces,這些和移動設備共享的網口(例如Windows hostednetwork)
我們可以在Import/export CA certificate 或Regenerate CA certificate來導入/導出一個新的呃Burp的根證書。更多信息請參考。如果你重新生成根證書,你必須在操作系統或瀏覽器的證書存儲區使用新證書替代舊證書。
這個功能對于非Web應用非常有用。假設傳統客戶端使用hosts文件連接www.google.com:8000,而且我開啟了代理。在這個文件中,www.google.com被重定向到127.0.0.1,我又創建了一個Burp監聽在8000端口。現在我需要將全部流量重定向到原始狀態(www.google.com:8000)。一種方法是在Redirect to host 和 Redirect to port中分別指定為www.google.com 和 8000。
如果應用在同一端口連接不同的節點(例如,我們想代理流量通過80端口或者443端口),我們就不能重定向流量了嗎?我們需要在Options > Connections > Hostname Resolution中設置,在下一個部分我將會解釋。
如果我使用Burp將流量導入另一個代理工具,比如Fiddler或Charles,這也是有用的。
當我想要在Burp和應用之間把TLS剝離出來,或者我想把它加進去的時候Force use of SSL這個選項就有用了。有一個我時常參考的文檔實例。
更多信息請看上面鏈接中的2.2.1和2.2.2部分。老實說,跟著這整個系列來看Burp怎么作為代理來工作,你將會避免出現許多問題。
如果我們代理了一個代理敏感的客戶端,它將會在實際啟用TLS傳輸前發送連接請求給想要連接的目標。這會通知代理該往哪重定向流量。這是因為代理無法看到TLS層加密的TCP流量包。由于不知道怎么處理流量,CONNECT解決了這個問題。代理敏感的客戶端會把代理視為瀏覽器。
非代理敏感的客戶端就不在意他們的流量是否經過了代理。大多數這種程序都不使用代理設置或系統代理設置。程序依舊認為它在節點間直接發送流量,并沒有被重定向到Burp。Burp可以將TLS層的數據代理并解密數據包,在包中通過頭中的host字段找到原始節點。這就是Burp的透明代理。
可以在Proxy > Options開啟。選擇代理監聽,點擊編輯,在Request Handling 中選擇Support invisible proxying (enable only if needed)。
我經常用它來捕獲應用和Burp之間的本地流量,判斷應用是否發送連接請求。另一種方法是都嘗試一下,看哪個好使。
我們可以配置Burp的中間人證書。
我從來沒有在內存不夠的電腦上運行Brup。但是我通常會在一天結束的時候保存工作狀態,我不會大量使用Python/Ruby的擴展,而是YMMV。 通過命令行來給Burp分配2GB的內存:
java -jar -Xmx2048m /burp_directory/burpsuite_whatever.jar
理想情況下,你想添加應用程序的終端節點到Scope,這會幫你過濾掉其他無用的噪聲。
把終端節點添加到Scope中很容易,右鍵單擊一個請求,然后選擇Add to scope即可。然后你就可以在Target > Scope中看到你剛剛添加的請求。
只有你指定的那個URL才能進入Scope中,這很方便。例如,我選擇使用GET請求得到Google的圖標,并且添加其到Scope中。Google.com剩下的數據包將不會包含在Scope中,你必須手動添加。
另一種方法是復制URL粘貼過來。如果我們右鍵點擊任何位置的任何請求,我們都能通過點擊右鍵菜單中的Copy URL來復制這個請求的URL地址。我們可以在Scope中點擊Paste URL來把這個請求置入Scope。這個按鈕在其他位置出現也具有類似的功能。
我們通常不止是需要一個請求。通常是整個節點,或者確定的整個目錄。幸運的是,在指定Scope時,我們可以使用正則表達式。我通常使用上述方法之一將URL添加進Scope中,然后通過編輯按鈕來對其修改。
Scope中有四個選項:
如果我們想要添加Google和它的所有子域到Scope中,我們要添加這個Logo(或者任何Google的東西)到Scope中,然后編輯這個請求。
在Proxy > HTTP History中可以看到Burp所有捕獲的請求和響應。我幾乎一半的時間都花在了這兒。我們可以使用過濾器來篩選數據包,過濾器的設置可以在Filter: Showing all items調整,你可以根據你不同的需求來調整你的設置。我一般都是清空這些狀態重新開始。
最有效的過濾是Show Only in-scope items,這將會把不在Scope里的數據包都清除掉。
正如你在上圖中看到的,過濾器具有很多設置選項。大部分的設置都非常簡單易用,我要講解的是那些我在非Web應用中常用的設置。
Burp有一個特別好的掃描模塊,它雖然不像IBM的Appscan那樣優秀的覆蓋面和準確度,但是它的優勢體現在非Web應用測試。
掃描結果在Issue activity選項卡中顯示,在Target > Site map縱覽全局結果則更為直觀,掃描請求都在Scan queue中。
Burp有兩種掃描模式,主動掃描和被動掃描。兩種掃描狀態可以同時開啟。 在被動掃描中,只關心請求和響應的數據包,僅僅通過規則進行匹配掃描,不發送任何請求。在主動掃描中,可以產生有效的測試載荷發送到服務器,同時分析其請求和響應。
在此可以對其進行配置:
在這里你可以配置這些掃描設置。盡管我不使用實時主動掃描,這些選項也可以用來配置對單個請求的掃描。
入侵模塊是Burp的半自動掃描部分。可以右鍵單擊任何一個請求發送到入侵模塊,在入侵模塊中你可以指定注入點,之后可以使用內部掃描器來進行掃描,或者使用你自己的載荷。
發送載荷到入侵模塊后,在Intruder > Positions標簽頁中看得到注入點。我通常先Clear掉所有設置,然后使用Add來對自己設置的注入點進行標記。
正如你所見,我選擇之前用過的Google的Logo再次發送到入侵模塊。然后清除掉所有的預定義的注入點和已經添加的文件名。現在我們可以右鍵點擊并選擇Actively scan defined insertion points來將其發送到掃描模塊,不僅掃描注入點還可以使用Start Attack來用我自己設計的載荷進行注入。因為我沒有選擇任何載荷,第二項是不會起效果的。
現在我們可以設置我們自己的載荷來配置入侵模塊進行攻擊。切換到Payloads選項卡。
在這,我們可以使用不同的載荷。Burp可以滿足你在特殊情況下進行一些復雜的負載設置。例如,Recursive grep可以讓你在先前載荷的響應中得到每個載荷。還有Case modification、Character substitution、Dates和Numbers等等。
Simple list允許你對所有的注入點都使用自己的載荷。在有載荷的源文件中復制到Payload Options中。你可以直接選擇使用這個文件。
Runtime File通過點擊Load按鈕來加載一個文件。你也可以使用Burp自帶的負載列表,但似乎只有Pro版本才有。
Custom iterator(自定義迭代器)可以讓Burp生成更加復雜的載荷。如果我想要模擬兩個自己的十六進制(四個字符),我可以在一個位置上設置0-9和a-f在其他位置上也類似的設置。Burp允許你設置八個位置。如果你想添加用戶名,可以選擇五個位置,添加自己的用戶名列表。Burp也支持位置間使用分隔符。
一個流行的載荷列表是FuzzDB。需要注意的是,這些載荷基本都會觸發反病毒軟件的報警。
在進行測試之前,你可以對載荷進行轉換處理。例如,你可以將載荷進行base64編碼再發送,或者發送其hash。
我們可以在Request Engine限制入侵模塊的速度,就像掃描模塊那樣,或者減慢其速度。Payload Encoding可以在Burp中對特殊字符進行URL編碼。
我們可以查找帶有特定字符串的響應。如果我在進行SQL注入測試,我就可以尋找帶有SQL錯誤信息的那些響應。對于XSS,我通常使用9999進行測試,之后只要在響應中匹配9999即可。
FuzzDB有自己的正則表達式來分析響應,這個頁面展示了如何使用它們。
雖然這些模塊沒有很多功能,但是也相當有用。
重放模塊是為了手動測試而設計的,掃描模塊是自動化,入侵模塊是半自動化。
將請求發送到重放模塊和之前類似。我們可以修改請求,發送請求然后觀察響應。
我選擇Google的Logo的GET請求,發送到重放模塊然后發送它。我們可以對其進行修改,然后查看其404響應和一些無效文件。用Ctrl+Z可以撤銷這次更改。
你可以將修改過的數據包發送到掃描模塊或者入侵模塊進行進一步掃描。
允許使用不同的格式進行編碼或解碼。也支持創建其哈希。雙擊任何一個參數右鍵發送至解碼模塊。你也可以使用Ctrl+C復制其到解碼模塊。
比較模塊可以對兩個載荷、兩個HTTP請求或響應進行比對。可以在字節水平(通常是二進制對象)進行比對,也可以在字的水平進行比對(通常是文本)。
這個模塊是用來配置Burp進行更復雜的工作。
如果應用程序需要特殊形式的身份驗證,如NTLM或Basic,你都可以在這里進行配置。如果你需要在瀏覽器中進行身份驗證,那么你可以不需要進行修改。你將會在Burp中看到消息頭的部分,意味著你不需要每次登錄應用時都輸入它們。如果你需要使用某種平臺進行身份驗證,Burp對傳統客戶端都是有幫助的。
有時你的工具并不支持對其進行設置,我在使用Appscan時就存在這個問題,盡管Appscan支持平臺身份驗證。
你可以重定向你其他工具的流量到Burp,讓Burp承擔起這個責任。我不是暗示它們會生成大量的流量,但是形勢所迫,你必須使用Appscan。如果驗證失敗,錯誤消息將顯示在Alerts選項卡中。
開啟Prompt for credentials on platform authentication failure,保證在認證失敗時可以迅速傳遞給瀏覽器。
我已經講了很多關于Burp如何作為一個代理鏈中的一部分。我們要在這里對經過Burp轉發的請求進行設置。這對聯合代理服務器環境下的Burp使用是非常有幫助的。通常情況下,這些代理服務器是自動配置的。這些設置可以訪問Tools (menu) > Internet Options (menu item)> Connections (tab) > LAN settings (button)來更改IE的代理設置。通常在Use automatic configuration script中能夠對proxy auto-config和pac文件進行配置。檢索PAC文件并且在文本編輯器中查看,應該能看到代理地址:端口格式的配置。
使用SOCKS代理是類似的。根據細則,這將會覆蓋之前的代理設置。就我個人而言,我從來沒有對Burp的Socks代理進行配置。
對老服務器進行測試,應該增加超時設置,如果Burp是代理鏈中的一部分,就要增加超時的設定,以修正延誤。
我在之前簡要討論過。如果應用使用多個端口還不支持代理服務器設置。我們就要將應用程序的流量重定向到Burp。現在Burp需要知道這些流量將要被轉發到哪,否則它會陷入本地回環的無限循環中。
因為Request Handling只支持一個節點,我們不能使用它。正相反,我們會將其置空,并添加節點及其關聯的IP地址在Hostname Resolution中。例如,server.com和10.11.12.13。如果節點經過負載均衡、CDN或者像亞馬遜的S3共享主機,就會更加復雜。在這種情況下,不經過代理,運行一個Wireshark或者Netmon來捕獲應用程序的流量。發現HTTP請求發送目的地的IP地址。使用這個IP在host頭字段中發揮作用。有許多方法能做到這一點,但是我覺得這個方法是最簡單的。
我們可以指定Burp把不屬于域內的請求全部丟棄。如果我們設置了正確的域范圍,就可以降低流量噪聲,這會對我們有利。如果應用程序連接了除了我們正在測試的節點外的其他節點,這樣就增加的域的范圍,它可能會停止工作。如果你是一個沒有使用過Burp的人,又不想讓這個功能起作用,你可以在此指定。除此之外,我沒覺得它有多么有用,我從未使用過此功能。
Redirections和Status 100 Responses都很簡單,我就跳過了這個部分
這是一個被低估的功能,特別是對非Web應用測試來說。當我們要使用這個功能時,先讓我們看看代理是如何工作的。我曾經寫過一篇文章解釋這件事兒。
總之,下面是流程:
需要注意的是,這個圖和HTTPS請求不同。
現在假設http://downloads.hipchat.com/blog_info.html
是個大文件(比如是100MB的更新),應用程序需要請求下載。該應用程序將此文件作為流,根據下載完成的數據量顯示一個進度條。
如果我們代理這個請求,Burp會執行步驟四。直到下載完成,Burp才會將此數據發送到應用程序中。這意味著應用程序會等待此文件,可能就放棄等待了,并重新發送請求或者返回超時或凍結。如果我們添加http://downloads.hipchat.com/blog_info.html
到Streaming Responses部分,Burp就會在接收到數據時立即把響應傳遞給應用程序。
Server SSL Certificates只顯示從服務器中檢索的證書列表。使用命令行工具像Openssl就可以很容易的得到證書,但是我猜你也想在這里查看證書信息。
無論如何,安裝其都是個好主意,但是你也可以在Burp中使用無限長度的密碼。要確保你運行的是最新版的Java運行環境(JRE)。
除了Disable Java SNI extension啟用所有選項,只有當你需要SNI的時候再啟用。Allow unsafe renegotiation看起來有點嚇人,但是當使用客戶端證書的時候,這非常有用。
在代理期間,如果你不確信當前TLS設置是否工作,你需要時刻留意Alerts標簽頁。如果TLS我收失敗或者Burp和服務器無法完成TLS握手,就會有錯誤提示。對于錯誤請看這個頁面。
如果應用程序需要客戶端證書,我們也可以非常容易地添加。我們可以選擇目的host和Burp對應這個host使用的證書。
這個選項卡提供給我們許多自動化的東西。你可以創建宏。你可以進行一些操作然后把它們記錄下來錄制為宏。之后在中, 你可以在確定的域內或對特定的請求來選擇要運行的宏。例如,你可以創建用于登錄的宏,這樣Burp可以在你發送請求前就登錄。還可以創建一個帶有特定值的參數,并將其添加到每個請求,或者在一定范圍內的請求,或者自動改變參數的值。
你可以更改字體、編碼和其他一些可以更改的東西。不加贅述。
在這里大多數項目不需要任何解釋。如果你有Pro版,我建議你開啟Automatic Backup。我通常將其設置為每小時存檔并且退出時存檔。因為,我希望可以每天保存狀態的備份,我也開啟了Include in-scope items only,這大大減少了保存數據的體積。 如果你需要在測試期結束時回頭檢查一些東西,或者你的賬戶被鎖定時,你可以回檔。 計劃任務會允許你做一些計劃。例如你可以設置掃描模塊在何時啟動。如果你不想或者不能每天掃描,那就讓它在特定的時間進行掃描吧。不幸的是,作為計劃任務不允許運行宏,并且可選項也非常有限
這是一項新功能。默認設置在Use the default collaborator server。這是我非常不喜歡的一個功能,每次我新安裝完Burp總要去修改這個設置。我不太清楚它會把什么信息傳到服務器中,所以我寧愿別發送客戶端信息到默認的服務器。你也可以選擇運行,詳細的可以閱讀文檔
報警標簽頁也是重要的。特別是在TLS連接問題或是超時。如果這個標簽亮起時,要注意這個標簽。
Burp支持擴展,擴展可以用Java、Python或者Ruby編寫。不幸的是,沒有很多非Java開發的擴展。個人來講,我更喜歡Python。我可以從讀其他人編寫的擴展中學到更多。
這個選項卡會顯示當前被加載的擴展。它還能顯示這些擴展的輸出和錯誤。在擴展加載之后,就要關注它的錯誤頁面運行中是否存在錯誤。添加擴展非常簡單,單擊添加,然后選擇類型和擴展文件的路徑。我通常把這些都放在Burp目錄的一個子目錄內。
在Burp的app store中安裝插件是一件輕而易舉的事情。只需要切換到該選項卡,選擇擴展名然后單擊安裝。如果該擴展是用Python編寫的,你必須安裝Jython才能運行。如果不方便安裝,Burp很方便的提供了下載Jython按鈕。
單擊下載按鈕打開此頁,下載最新的Standalone Jar。我通常把它放在和Burp相同的目錄中。之后在Extender > Options中,可以選擇Python Environment > Location of the Jython standalone JAR file其作為你的運行環境。
現在就可以點擊安裝按鈕進行安裝了。
APIs選項卡中有API文檔。Burp擴展可以使用這些API來與Burp進行交互。正如你在那些為Java擴展編寫的文檔里看到的。
正如之前所見,我們可以為Jython和JRuby設置路徑。我們也可以為Java和Python編寫的擴展指定目錄。在Burp啟動時,這些擴展所在的目錄會自動加載。
使用到的應用程序
Cygwin + IBM Appscan Standard + Charles Proxy + Fiddler + SoapUI
你不需要使用Burp的Pro版,IBM Appscan 也用的是評估版。所有的應用都是免費使用的。
一般情況下,應用程序有自己的代理設置或者使用IE的代理設置,我們都能夠使用Burp來進行代理。
在開始之前,要確保你在操作系統證書存儲區安裝了Burp的根證書。
Burp的默認代理監聽在127.0.0.1:8080
Cygwin是一個Windows下的類*nix命令行。使用Cygwin可以很方便的運行很多程序,比如git或Curl。因為在一個API測試中,我需要使用一系列Curl命令。為了方便,我通過Cygwin來執行。重定向到Burp中,并且在測試中將使用到重放模塊。
為了在Cygwin中安裝Curl,我們需要運行Cygwin的安裝文件,并且在可用的包列表中選擇curl。這和包管理器的功能是相似的,并且支持搜索功能。所以安裝Curl是非常容易的。安裝文件會自動下載其依賴。
我要用再次使用GET請求再一次來取回Google的Logo。使用Burp模擬一些Curl命令來完成這個最簡單的任務。重定向瀏覽器的流量到Burp,并訪問Google首頁。確保你清除了瀏覽器緩存,否則將不會發送請求,你也看不到請求了。選擇Logo圖片的那個請求,右鍵點擊Copy as curl command。
結果應該與下面類似:
curl -i -s -k -X 'GET' \
-H 'Referer: https://www.google.com/' -H 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko' -H 'DNT: 1' \
-b 'NID=78=S4kjzm5kwP82gAN8xazSJCiG6UWZhRNEGEE_a3hHZ2OMcy5bPX1CjZisClbvBgPUodlcpywR6WyhVSRUykloTI3ay7jSy9fpgTG2tKV2s8eojpQmL_F5sYKyHP1exm8iwp0F_FEnnE_DaQ' \
'https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png'
我們不需要關心這么多項,我們可以忽略Referer、Cookie、User-Agent和其他一些沒用的東西。
curl -i -s -k -X 'GET' 'https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png'
-k意味著Curl將不會驗證證書的安全性。在使用Burp時,有時候會非常必要,因為Burp自簽發的證書有可能失效。如果你想使用其他Curl命令,一定要記得加上-k來保證不出現任何問題。
這很簡單,我們只需要執行以下命令:
export http_proxy=http://127.0.0.1:8080
export https_proxy=http://127.0.0.1:8080
眾所周知,這是一個Web應用掃描軟件。有時候我會將其重定向到Burp上,為了練習,我們將使用評估版,在撰寫本文時,版本是9.0.3。我們必須注冊一個免費的IBM ID才能獲得軟件,我相信這對你來說并不難。
評估版只能掃描IBM的示例網站http://demo.testfire.net/
,不過這就足夠了。
在Appscan中,我們可以在Scan Configuration > Connection > Communication and Proxy設置代理。這和Firefox的代理設置類似,我們也可以使用IE的代理,或是為Appscan指定一個特定的代理。我們有兩種方法,第一種是通過IE代理,第二種是直接設置代理。
現在,我們可以重定向Appscan的流量到Burp了,也可以進行一些手動探索了。試用版軟件可以讓我們這樣做,但是不要把它添加進掃描中。如果我們有Appscan的授權版本,我們可以運行一個掃描。在Burp中可以看得到掃描的流量經過。
或者,你也有可能想把其他的流量導入Appscan中。例如,使用額外的瀏覽器或者其他工具,你可以在Tools (menu) > Options > Recording Proxy (tab) > Appscan proxy port中設置導入端口。你也可以通過選擇,來指定你自己設置的端口。在手動探索時Appscan只是起到監聽功能。
你可以安裝導入Appscan的根證書了。
有時候,你需要使用兩個或兩個以上的代理來組成代理鏈。我現在將要給你介紹最流行的HTTP代理。
我們先下載并安裝一個免費試用的版本,在截稿時,版本是3.11.4。出于演示目的,我會使用IE和普通的Google主頁。事實上流量可以來自我們關心的任何位置,只要代理成功,其余東西都是相同的。
要確保你安裝了Charles的根證書,你可以在Help (menu) > SSL Proxying設置。
首先你要在Proxy (menu) > Windows Proxy關閉Charles的自動代理設置。如果系統代理是開啟的,就會在下拉菜單中有一個小小的標記。在Proxy (menu) > SSL Proxying Settings (sub-menu) > SSL Proxying (tab)中確保Enable SSL Proxying是被選中的。點擊添加,在HOST和PORT上填入*。在Proxy (menu) > Proxy Setting (sub-menu) > Proxies (tab)里我們可以查看HTTP代理端口,默認是8888端口,我們也可以指定其他端口。
試用版本會每隔三十分鐘重新啟動,就會再次開啟自動代理。確保每次啟動后你都要禁用它。你也可以使用Firefox來代替IE代理設置。
在Burp中,可以在Options > Upstream Proxy Servers添加上行代理服務器為127.0.0.1:8888
現在可以在IE中打開Google的主頁了,可以看到流量經過了Burp和Charles。
我們只需要將IE的代理設置改為Charles,即127.0.0.1:8888。幸運的是就算Charles每隔三十分鐘重啟,但是它不會重置設置。
Charles要在Proxy (menu) > External Proxy Settings (sub-menu)確保開啟了Use external proxy servers。要將Web Proxy (HTTP)和Secure Web Proxy (HTTPS)都輸入Burp的代理監聽(127.0.0.1:8080)
設置完成,可以打開主頁了。
Fiddler的好處在于其可以添加腳本,我們使用的是4.6.2.2這個版本。
首先,我們要在Tools (menu) > Fiddler Options (sub-menu) > HTTPS (tab) > Decrypt HTTPS traffic設置Fiddler可以捕獲HTTPS流量。這將會在Windows證書存儲區安裝Fiddler的根證書。這將會讓Fiddler捕獲并且解密全部經過代理的流量。還要確保Ignore server certificate errors (unsafe),因為Burp可能是不被承認的。
切換到Gateway標簽頁,選擇Manual Proxy Configuration并且在上面的輸入框中輸入http=127.0.0.1:8080;https=127.0.0.1:8080,這將會將Fiddler的流量導入到Burp。
現在設置完成,可以訪問首頁了。
你也可以在Tools > Fiddler Options > Connections (tab)手動更改Fiddler的代理設置。
首先要禁用Fiddler的自動代理,并且把Gateway中的所選項刪除。如果使用IE代理設置,記得選擇No Proxy,否則又會回到Burp。之后我們設置Burp是IE的代理,Fiddler是Burp的上游代理。
這個部分我已講過,請參見。
作者的案例要寫在第五部分,不知道會連載幾期