官术网_书友最值得收藏!

2.3 抓包工具Burp Suite

在代碼審計過程中,經常會用到一款抓包分析工具——Burp Suite(簡稱Burp)。這款工具的使用率很高,成了各大Web安全工程師手中的“神器”,它的優勢是對于HTTP請求的處理做得很細致,這款工具更專注Web大體系里的HTTP安全。但是很多漏洞不是通過抓包就可以看出來的,還需要你運用所儲備的技術思路、測試手法與手段等。

2.3.1 Burp Suite簡介與安裝

Burp Suite是一款信息安全從業人員必備的集成型滲透測試工具,采用自動測試和半自動測試的方式。該工具包含了多個功能模塊,如Proxy、Spider、Scanner、Intruder、Repeater、Sequencer、Decoder、Comparer等。

Burp Suite通過攔截HTTP/HTTPS的Web數據包,充當瀏覽器和相關應用程序的中間人,進行攔截、修改、重放數據包進行測試,是Web安全人員必備的“瑞士軍刀”。

使用Burp Suite需要Java環境,因為它是用Java編程語言開發的。安裝Java環境如圖2-27所示。

圖2-27 Java環境安裝

Java環境安裝好之后,還需要配置環境變量(注意:環境變量是追加進去的,而不是覆蓋進去的)。在“系統屬性→高級→環境變量→系統變量→Path”中,點擊“確定”以后,就可以嘗試編輯系統變量了,如圖2-28所示。

圖2-28 環境變量和編輯系統變量

環境變量和系統變量設置好后,就可以正常使用Burp Suite了。如果遇到以下幾種異常情況,請做相應的處理:

1)雙擊打開軟件的時候無法運行。請嘗試使用命令行模式運行,Linux下為控制臺模式,Windows下為DOS窗口模式,在當前路徑下嘗試命令:java-jar工具名.jar。

2)未配置好Java系統環境變量,導致操作系統無法識別。也許之前添加系統變量的時候把原來的變量刪除了,導致所有命令都無法識別。添加變量時需要小心,禁止在添加或修改變量的時候刪除或覆蓋系統原有的變量值,添加好以后,請先嘗試運行一個簡單的Java程序。

3)運行軟件一旦出現其他錯誤,請嘗試更換JDK其他版本,如JDK1.6、JDK1.7、JDK1.8等版本,因為Burp Suite可能對Java的環境版本有一定的要求。也可以閱讀官方資料進行參考。

Burp Suite的版本很多,選一款可以使用的即可。如果只是用來做代碼審計,版本的區別不是很大。這里筆者使用的是1.7.30版本,如圖2-29所示。

這里需要用到的常用模塊有Proxy(代理)、Repeater(數據重放)、Intruder(批量請求)、Decoder(編碼&解碼)。下面分別介紹這幾個模塊。

圖2-29 打開Burp Suite工具

2.3.2 Proxy模塊

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

1.Options子選項卡

通過Options(選項)子選項卡可以設置或者添加攔截代理,如圖2-30所示。

圖2-30 設置或添加攔截代理

瀏覽器需要設置代理(也可以使用一些瀏覽器插件,如谷歌的SwitchyOmega、360安全瀏覽器自帶的代理設置),如果找不到谷歌的代理設置,可以在設置選項里的搜索框中搜索“代理”,可以看到有一個選項“打開代理設置”,雙擊進去就可以設置,如圖2-31所示。

圖2-31 瀏覽器的代理設置(谷歌或360安全瀏覽器)

2.Intercept子選項卡

進入Intercept(攔截)子選項卡,可以設置攔截狀態。如要開啟攔截狀態,則選中Intercept is on,點擊后該按鈕顯示為Intercept is off,在此狀態下點擊按鈕可關閉攔截模式。用這個按鈕可以輕松地開啟和關閉代理,如圖2-32所示。

圖2-32 代理的開啟和關閉

打開瀏覽器輸入要攔截的地址,如http://localhost/phpMyAdmin/index.php,Burp Proxy就可以把數據請求包攔截下來。如點擊Forward按鈕則讓數據包繼續走下去,如點擊Drop按鈕則拋棄該數據包。在攔截的同時,也可以隨意修改數據包,如圖2-33所示。

圖2-33 數據包攔截

如果出現抓不到包的情況,可嘗試用以下步驟查找問題:

1)其他程序同時占用了1個端口,發生沖突,修改瀏覽器代理和工具代理端口即可。

2)之前開啟的Burp軟件未能關閉,導致了端口沖突,關閉重復開啟的軟件即可。

3)網站程序是HTTPS的方式,將Burp證書導入后重啟瀏覽器繼續嘗試即可。

4)如果使用了火狐瀏覽器,要在火狐瀏覽器設置選項里的代理模塊中,將“不使用代理”選項卡的內容清空并保存,或保存后重啟瀏覽器進行嘗試。

5)安裝了其他代理插件,該瀏覽器代理插件未關閉,在通信過程中出現端口不一致情況。

6)網站自身設置了對代理屏蔽的情況,這種情況不是很常見,可嘗試換一個網站或使用WireShark抓包嘗試。

7)代理設置沒有打開,還在關閉狀態下。

3.History子選項卡

在History(歷史)子選項卡里可以看到Burp Proxy歷史攔截數據包,HTTP和Web-Sockets只是通信方式不同,但功能一樣,如圖2-34所示。

圖2-34 History子選項卡中記錄的數據

2.3.3 Repeater模塊

Repeater(數據重放)模塊在代碼漏洞分析中是必不可少的,可以根據攔截到的包任意修改發放,并且回顯信息。這樣就不用每次分析數據包時都要抓包一下(這很麻煩),可以針對某個特定請求修改協議中的參數,然后將其發送。在Intercept攔截到的數據包上點擊鼠標右鍵,選擇Send to Repeater或者使用快捷鍵Ctrl+R將數據包發送到Repeater模塊里,如圖2-35所示。

圖2-35 HTTP請求數據發送到Repeater模塊

在Repeater選項卡中點擊Go按鈕,進行該攔截的請求包發放并顯示返回的數據包,如圖2-36所示。

圖2-36 在Repeater模塊下進行HTTP數據包發送

2.3.4 Intruder模塊

Intruder(批量請求)模塊是在原始請求下,通過自定義各種參數進行批量請求,以獲取對應的返回信息。它支持一個或多個Payload在不同的位置進行攻擊,并返回數據包。如系統需要大量不同請求、URL參數時,可以嘗試使用該模塊幫助完成一定量的需求測試。

在Proxy模塊成功攔截數據包后右擊,選中Send to Intruder,或者使用Ctrl+I快捷鍵將數據包發送至Intruder模塊上,如圖2-37所示。

1.修改設置Positions子選項卡

進入Intruder選項卡的Positions子選項卡中,可以看到發送來的原始數據,并且可以在這里設置需要批量修改或添加的參數以及Payload的位置,如圖2-38所示。

圖2-37 發送數據到Intruder模塊

圖2-38 Positions子選項卡修改設置

首先介紹一下右側的四個按鈕,常用的是Add$(選中)與Clear$(清除選中)。選中Add$后會出現$$,使用Intruder發包時可自定義替換該位置的Payload。

Attack type選項中可以定義測試模式,如圖2-39所示。

圖2-39 Positions子選項卡中測試模式的選擇

有如下幾個測試模式。

●Sniper:這個模式是使用單一的Payload組,針對每個position中的$$位置設置Payload,適合單獨請求參數進行測試。

●Battering ram:這個模式是使用單一的Payload組,重復Payload并且一次把所有相同的Payload放入指定的位置中,適合批量選中多個位置進行測試。

●Pitchfork:使用多個Payload組。對于定義的位置可以使用不同的Payload組,可以同步迭代所有的Payload組,把Payload放入每個對應的位置中進行測試。

●Cluster bomb:使用多個Payload組。每個定義的位置中有不同的Payload組,可以迭代每個Payload組,每種Payload組合都會被測試一遍。該模式又稱為“混合模式”。

2.自定義Payloads子選項卡

在Payloads子選項卡中,可以根據Positions設置的自定義位置修改數據包和測試模式,設置該對應填充的Payload(字典/測試參數)。Payloads子選項卡是用來自定義修改的內容模塊,如圖2-40和圖2-41所示。

圖2-40 Payloads子選項卡的自定義設置

圖2-40 (續)

圖2-41 在Payloads子選項卡中設置其他內容

圖2-40中的主要選項說明如下。

●Payload set:在Positions里選中的對應位置,在什么位置使用什么自定義。

●Payload type:包含了18種Payload類型。本書使用到兩種類型—Simple list和Numbers。

■Simple list:自定義內容,可傳文件內容,并且可添加和刪除。

■Numbers:純數字測試,多用于數字參數測試。

對該功能感興趣的朋友,可在網上進一步了解。

設置好選中的Simple list類型后,可以在Payload Options中添加Payload(字典),如圖2-42所示。

圖2-42 在Payloads子選項卡中加載本地字典文件

添加完成后,還能對導入的內容再進行添加和刪除,如圖2-43所示。

圖2-43 對添加后的字典進行操作

當配置完成后點擊導航欄的Intruder→Start attack,開始測試,如圖2-44所示。

圖2-44 開始測試模塊

開始測試時會彈出一個Intruder attack窗口。綜合以上設置,這里是對爆破一個后臺登錄密碼的攻擊行為進行測試。點擊Start attack會彈出執行該任務所使用的任務框,該任務框中有Status狀態碼和Length數值信息,通常在測試人員的測試下,會觀察Length下的返回數據大小的差異值來輔助判斷爆破成功與否,如圖2-45所示。

圖2-45 查看發包后的長度、狀態碼判斷

2.3.5 Decoder模塊

Decoder模塊是Burp Suite中的一款編碼和解碼工具,能將原始數據進行各種編碼和散列的轉換。從圖2-46中可以看到,Decoder模塊里左邊是編輯框,右邊是功能按鈕。

圖2-46 Decoder模塊

單選按鈕Text和Hex表示顯示方式,Text主要以文本的方式進行顯示,Hex主要以Hex編碼格式進行顯示,如圖2-47所示。

圖2-47 Decoder模塊中的單選框

圖2-47中的選項欄說明如下。

●Decode as:表示選擇對應選項的解碼類型進行解碼。

●Encode as:表示選擇對應選項的編碼類型進行編碼。

●Hash:散列。

例如將www.baidu.com進行URL編碼,如圖2-48所示。

圖2-48 將地址進行URL編碼

Smart decode為智能解碼按鈕,如圖2-49所示。

圖2-49 智能解碼按鈕

Decoder模塊還支持多次編碼解碼轉換。例如將https%3a%2f%2fwww.baidu.com%2fs% 3fwd%3d1進行URL解碼,再進行URL編碼,如圖2-50所示。

圖2-50 將網址數據先解碼再編碼

主站蜘蛛池模板: 湖南省| 清河县| 林西县| 定南县| 贡山| 昌宁县| 望江县| 奇台县| 赤壁市| 盐边县| 高淳县| 尼玛县| 敖汉旗| 杭州市| 师宗县| 绥江县| 宜兰市| 南安市| 湄潭县| 平遥县| 苏尼特右旗| 钟祥市| 正宁县| 友谊县| 西盟| 达日县| 龙里县| 万山特区| 越西县| 海口市| 枝江市| 凤冈县| 镇宁| 晋中市| 汉寿县| 上饶市| 九江县| 安西县| 永安市| 枞阳县| 曲靖市|