https://www.gitbook.com/book/t0data/burpsuite/detailscss
剛接觸web安全的時候,很是想找到一款集成型的滲透測試工具,找來找去,最終選擇了Burp Suite,除了它功能強大以外,還有就是好用,易於上手。因而就從網上下載了一個破解版的來用,記得那時候好像是1.2版本,功能也沒有如今這麼強大。在使用的過程當中,慢慢發現,網上系統全量的介紹BurpSuite的書籍太少了,大可能是零星、片斷的講解,不成體系。後來慢慢地出現了很多介紹BurpSuite的視頻,現狀也變得愈來愈好。但往往遇到不知道的問題時,仍是不得不搜尋BurpSuite的官方文檔和英文網頁來解決問題,也正是這些問題,慢慢讓我以爲有必要整理一套全面的BurpSuite中文教程,算是爲web安全界作盡本身的一份微薄之力,也纔有了大家如今看到的這一系列文章。html
我給這些文章取了IT行業圖書比較通用的名稱: 《BurpSuite實戰指南》,您能夠稱我爲中文編寫者,文章中的內容主要源於BurpSuite官方文檔和多位國外安全大牛的經驗總結,我只是在他們的基礎上,結合個人經驗、理解和實踐,編寫成如今的中文教程。本書我也沒有出版成紙質圖書的計劃,本着IT人互聯分享的精神,放在github,作免費的電子書。於業界,算一份小小的貢獻;於本身,算一次總結和鍛鍊。java
以上,是爲小記。git
感謝您閱讀此書,閱讀過程當中,若是發現錯誤的地方,歡迎發送郵件到 t0data@hotmail.com,感謝您的批評指正。github
本書包含如下章節內容:web
Burp Suite是一個集成化的滲透測試工具,它集合了多種滲透測試組件,使咱們自動化地或手工地能更好的完成對web應用的滲透測試和攻擊。在滲透測試中,咱們使用Burp Suite將使得測試工做變得更加容易和方便,即便在不須要嫺熟的技巧的狀況下,只有咱們熟悉Burp Suite的使用,也使得滲透測試工做變得輕鬆和高效。正則表達式
Burp Suite是由Java語言編寫而成,而Java自身的跨平臺性,使得軟件的學習和使用更加方便。Burp Suite不像其餘的自動化測試工具,它須要你手工的去配置一些參數,觸發一些自動化流程,而後它纔會開始工做。chrome
Burp Suite可執行程序是java文件類型的jar文件,免費版的能夠從免費版下載地址進行下載。免費版的Burp Suite會有許多限制,不少的高級工具沒法使用,若是您想使用更多的高級功能,須要付費購買專業版。專業版與免費版的主要區別有windows
本章主要講述Burp Suite的基本配置,包含以下內容:瀏覽器
Burp Suite是一個無需安裝軟件,下載完成後,直接從命令行啓用便可。但Burp Suite是用Java語言開發的,運行時依賴於JRE,須要提早Java可運行環境。
若是沒有配置Java環境或者不知道如何配置的童鞋請參考win7電腦上的Java環境配置 配置完Java環境以後,首先驗證Java配置是否正確,若是輸入java -version 出現下圖的結果,證實配置正確且已完成。
這時,你只要在cmd裏執行java -jar /your_burpsuite_path/burpSuite.jar便可啓動Burp Suite,或者,你將Burp Suite的jar放入class_path目錄下,直接執行java -jar burpSuite.jar也能夠啓動。
==注意:your_burpsuite_path爲你Burp Suite所在路徑,burpSuite.jar文件名必須跟你下載的jar文件名稱一致==
若是Java可運行環境配置正確的話,當你雙擊burpSuite.jar便可啓動軟件,這時,Burp Suite本身會自動分配最大的可用內存,具體實際分配了多少內存,默認通常爲64M。當咱們在滲透測試過程,若是有成千上萬個請求經過Burp Suite,這時就可能會致使Burp Suite因內存不足而崩潰,從而會丟失滲透測試過程當中的相關數據,這是咱們不但願看到的。所以,當咱們啓動Burp Suite時,一般會指定它使用的內存大小。 通常來講,咱們一般會分配2G的內存供Burp Suite使用,若是你的電腦內存足夠,能夠分配4G;若是你的電腦內存足夠小,你也能夠分配128M。當你給Burp Suite分配足夠多的內存時,它能作的工做也會更多。指定Burp Suite佔用內存大小的具體配置方法是在啓動腳本里添加以下命令行參數: 假設啓動腳本的名稱爲burp_suite_start.bat,則該bat腳本的內容爲
java -jar -Xmx2048M /your_burpsuite_path/burpsuite.jar
其中參數-Xmx指定JVM可用的最大內存,單位能夠是M,也能夠是G,若是是G爲單位的話,則腳本內容爲:
java -jar -Xmx2G /your_burpsuite_path/burpsuite.jar
更多關於JVM性能調優的知識請閱讀 Oracle JVM Tuning
Burp Suite是不支持IPv6地址進行數據通訊的,這時在cmd控制檯裏就會拋出以下異常
java.net.SocketException: Permission denied
同時,瀏覽器訪問時,也會出現異常
Burp proxy error: Permission denied: connect
當出現如上問題時,咱們須要修改啓動腳本,添加對IPv4的指定後,重啓Burp Suite便可。
java -jar -Xmx2048M -Djava.net.preferIPv4Stack=true /your_burpsuite_path/burpsuite.jar
經過 -Djava.net.preferIPv4Stack=true參數的設置,告訴Java運行環境,使用IPv4協議棧進行數據通訊,IPv6協議將會被禁止使用。 這個錯誤最多見於64位的windows操做系統上,使用了32位的JDK
Burp Suite代理工具是以攔截代理的方式,攔截全部經過代理的網絡流量,如客戶端的請求數據、服務器端的返回信息等。Burp Suite主要攔截http和https協議的流量,經過攔截,Burp Suite以中間人的方式,能夠對客戶端請求數據、服務端返回作各類處理,以達到安全評估測試的目的。
在平常工做中,咱們最經常使用的web客戶端就是的web瀏覽器,咱們能夠經過代理的設置,作到對web瀏覽器的流量攔截,並對通過Burp Suite代理的流量數據進行處理。
下面咱們就分別看看IE、Firefox、Google Chrome下是如何配置Burp Suite代理的。
當Burp Suite 啓動以後,默認分配的代理地址和端口是127.0.0.1 :8080,咱們能夠從Burp Suite的proxy選項卡的options上查看。如圖:
如今,咱們經過以下步驟的設置便可完成IE經過Burp Suite 代理的相關配置。
與IE的設置相似,在FireFox中,咱們也要進行一些參數設置,才能將FireFox瀏覽器的通訊流量,經過Burp Suite代理進行傳輸。詳細的步驟以下:
Google Chrome使用Burp Suite做爲代理服務器的配置步驟以下:
除了上述的三種經常使用的瀏覽器外,還有Safari瀏覽器也有很多的用戶在使用,其代理配置請點擊閱讀進行查看。
Burp Proxy 是Burp Suite以用戶驅動測試流程功能的核心,經過代理模式,可讓咱們攔截、查看、修改全部在客戶端和服務端之間傳輸的數據。
本章主要講述如下內容:
經過上一章的學習,咱們對Burp Suite代理模式和瀏覽器代理設置有了基本的瞭解。Burp Proxy的使用是一個按部就班的過程,剛開始使用時,可能並不能很快就獲取你所指望的結果,慢慢地當你熟悉了它的功能和使用方法,你就能夠用它很好地對一個產品系統作安全能力評估。 通常使用Burp Proxy時,大致涉及環節以下:
默認狀況下,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,從界面顯示來看,主要包括如下幾大板塊(涉及https的功能不包含在本章內容裏,後面會一章專門敘述):
客戶端請求消息攔截是指攔截客戶端發送到服務器端消息的相關配置選項,其界面以下:
主要包含攔截規則配置、錯誤消息自動修復、自動更新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相對應,就不在贅述,請參上一節的內容。
服務器返回消息修改是指自動修改服務器端返回消息的相關設置項。其界面以下:
自上而下,每個選擇項分別對應的功能是
經過服務器返回消息修改可選擇項的設置,能夠方便滲透測試人員在安全評估過程當中突破原有的數據限制,更好、更快地檢測服務器端的安全性。
此項配置主要用來自動替換請求消息和服務器端返回消息中的某些值和文本,它與前文的規則的不一樣之處還在於支持正則表達式語言。
當點擊【Add】按鈕時,在彈出的匹配或替換規則輸入對話框中咱們能夠看到,它能夠對請求和返回消息的消息頭,消息體、請求參數名、請求參數值、請求的第一行進行匹配和替換。
例如,當咱們要替換全部返回消息中的郵箱地址爲t0data@burpsuite.com時,能夠參考下圖的設置填寫輸入項並保存驗證。
其餘配置項主要是雜項設置。其界面以下:
自上而下依次的功能是
Burp Proxy的歷史記錄由HTTP歷史和WebSockets歷史兩個部分組成。
HTTP歷史界面由篩選過濾器、歷史記錄列表、消息詳情3個部分組成。
當咱們在某一條歷史記錄上單擊,會在下方的消息詳解塊顯示此條消息的文本詳細信息。當咱們在某條消息上雙擊,則會彈出此條消息的詳細對話框。
咱們能夠點擊對話框右上方的【Previous】、【Next】按鈕,瀏覽上一條或下一條消息的內容,也能夠修改Raw的請求參數,而後執行多種【Action】操做。
歷史消息列表中主要包含請求序列號、請求協議和主機名、請求的方式、URL路徑、請求參數、Cookie、是否用戶編輯過消息、服務器端返回的HTTP狀態碼等信息。經過這些信息,咱們能夠對一次客戶端與服務器端交互的HTTP消息詳情作出準確的分析,同時,在下方的詳情視圖中,也提供基於正則表達式方式的匹配查找功能,更好的方便滲透測試人員查找消息體中的相關信息。
當咱們在作產品系統的安全評估過程當中,會在HTTP歷史中保存了大量的日誌記錄,爲了更友好的消息管理,Burp提供了篩選過濾器功能。當咱們點擊HTTP歷史標籤下發的Filter時,將彈出篩選過濾器界面。
按照過濾條件的不一樣,篩選過濾器劃分出7個子板塊,分別是
如今,咱們再看看WebSockets歷史選項的功能,從界面上咱們能夠看出,WebSockets歷史所提供的功能和選項是HTTP歷史的一個子集,只是由於採用的通訊方式的不一樣,而被獨立出來成爲一個專門的視圖。其功能的使用方式與HTTP歷史雷同,此處就不在贅述。
經過本章的學習,你對Burp Suite的代理模式有了更深刻的理解,知道了做爲中間人的Burp Proxy在消息攔截過程當中,能夠對請求消息、應答消息作多方面的修改,並能夠把消息傳遞給Burp的其餘組件作進一步的測試。同時,Burp Proxy的歷史日誌功能和多種篩選過濾器讓咱們在使用中,能快速地查找須要的數據和關鍵信息,這些,都極大地幫助你提升了工做效率。
在前一章,咱們已經學習了HTTP消息如何經過Burp Proxy進行攔截和處理,本章咱們將繼續學習HTTPS協議消息的攔截和處理。
HTTPS協議是爲了數據傳輸安全的須要,在HTTP原有的基礎上,加入了安全套接字層SSL協議,經過CA證書來驗證服務器的身份,並對通訊消息進行加密。基於HTTPS協議這些特性,咱們在使用Burp Proxy代理時,須要增長更多的設置,才能攔截HTTPS的消息。
本章包含的主要內容有
咱們都知道,在HTTPS通訊過程當中,一個很重要的介質是CA證書,下面就咱們一塊兒來看看Burp Suite中CA證書的安裝。
通常來講,Burp Proxy代理過程當中的CA主要分爲以下幾個步驟(以win7下IE9爲例):
CA證書的卸載的一般有兩種方式,第一種方式在上一章節CA證書安裝中的第6步,找到須要卸載的證書,點擊【刪除】便可。咱們這裏主要描述第二種刪除方式,主要是爲了解決在第一種方式的基礎上刪除按鈕失效或者證書列表裏看不到的證書也一塊兒刪除的方法。
除了IE以外,其餘的瀏覽器如FireFox、Chrome、Sarifa等都證書的安裝和卸載基本相似,操做時能夠以IE的CA證書安裝做爲參考。
當咱們啓動Burp Suite時,默認會監聽本地迴路地址的8080端口,除此以外,咱們也能夠在默認監聽的基礎上,根據咱們本身的需求,對監聽端口和地址等參數進行自由設置。特別是當咱們測試非瀏覽器應用時,沒法使用瀏覽器代理的方式去攔截客戶端與服務器端通訊的數據流量,這種狀況下,咱們會使用本身的Proxy監聽設置,而不會使用默認設置。
當咱們在實際使用中,可能須要同時測試不一樣的應用程序時,咱們能夠經過設置不一樣的代理端口,來區分不一樣的應用程序,Proxy監聽即提供這樣的功能設置。點擊圖中的【Add】按鈕,會彈出Proxy監聽設置對話框,裏面有更豐富的設置,知足咱們不一樣的測試需求。
Proxy監聽設置主要包含3塊功能:
SSL直連的設置主要用於指定的目的服務器直接經過SSL鏈接,而經過這些鏈接的請求或響應任何細節將在Burp代理攔截視圖或歷史日誌中可見。經過SSL鏈接傳遞能夠並非簡單地消除在客戶機上SSL錯誤的狀況下有用。好比說,在執行SSL證書的移動應用。若是應用程序訪問多個域,或使用HTTP和HTTPS鏈接的混合,而後經過SSL鏈接到特定的主機問題仍然使您可以以正常的方式使用Burp的其餘方式進行通訊。若是啓用自動添加客戶端SSL協商失敗的選項,當客戶端失敗的SSL協議檢測(例如,因爲不認可Burp的CA證書),並會自動將相關的服務器添加到SSL直統統過列表中去。其設置界面以下圖所示:
有時候,在攔截富客戶端軟件時,咱們一般須要使用隱形代理。富客戶端軟件一般是指運行在瀏覽器以外的客戶端軟件,這就意味着它自己不具備HTTP代理是屬性。當它進行網絡通訊時,客戶端將沒法使代理感知或者沒法由代理進行通訊。在Burp中,咱們可使用隱形代理的方式,對通訊內容進行代理或攔截,從而對通訊的請求和響應消息進行分析。使用隱形代理一般須要作以下設置(以https://example.com爲例): 1.配置hosts文件,Windows操做系統下的目錄位置Windows/System32/drivers/etc/hosts,而Linux或者Unix下的目錄爲/etc/hosts,添加以下行:
127.0.0.1 example.com
2.第一步設置完成以後,咱們須要添加一個新的監聽來運行在HTTP默認的80端口,若是通訊流量使用HTTPS協議,則端口爲443。
3.若是是HTTPS協議的通訊方式,咱們須要一個指定域名的CA證書。
4.接着,咱們須要把Burp攔截的流量轉發給原始請求的服務器。這須要在Options->Connections->Hostname Resolution 進行設置。由於咱們已經告訴了操做系統,example.com的監聽地址在127.0.0.1上,因此咱們必須告訴Burp,將example.com的流量轉發到真實的服務器那裏去。
5.經過這樣的配置,咱們就能夠欺騙富客戶端軟件,將流量發送到Burp監聽的端口上,再由Burp將流量轉發給真實的服務器。
【原文:burpsuite實戰指南 做者:t0data 安全脈搏整理髮布】