Burpsuit構造測試數據
- 2019 年 10 月 3 日
- 筆記
一、使用場景
測試設備web性能優化時,需要構造或刪除多個user、設備、設備帳號、訂單等,除了使用excel批量導入外,有些數據構造/刪除使用burpsuit代理並將對應請求發送到Burp Intruder模組中改參數對應value,同時根據場景配置選擇不同的attack type,設置需要修改參數值的變數類型和變數取值規則,進行attack攻擊可以很方便達到數據構造
二、模組說明
Burp Intruder主要有四個模組組成:
1:Target 用於配置目標伺服器進行攻擊的詳細資訊。
2:Positions 設置Payloads的插入點以及攻擊類型(攻擊模式)。
3:Payloads 設置payload,配置字典
4:Opetions 此選項卡包含了request headers,request engine,attack results ,grep match,grep_extrack,grep payloads和redirections。你可以發動攻擊之前,在主要Intruder的UI上編輯這些選項,大部分設置也可以在攻擊時對已在運行的窗口進行修改。
1:Target 目標選項(Target tab)
這個選項是用來配置目標伺服器的細節:
2:Positions 位置選項(Positions tab)
這個選項是用來配置在攻擊里產生的所有 HTTP 請求的模板:
使用一對§字元來標記出有效負荷的位置,在這兩個符號直接包含了模板文本的內容。當把一個有效負荷放置到一個給出的請求的特殊位置上時,就把這§符號放到這個位置,然後在兩個符號之間的出現的文本都會被有效負荷替換。當有個特殊位置沒有為一個給出的請求安排有效負荷時(這隻適用”sniper”攻擊類型),那個位置的§字元會被刪除,出現在它們之間的文本不會變化。
當使用 Burp Suite 發送一個其他地方的請求時,Burp Intruder 會對你最想放置有效負荷的位置做一個最好的猜測,並且它把這些放置在每個 URL 和主體參數的值里,以及每個cookie 里。每個標記和它中間的文本都會被加亮以顯得更清晰。你可以使用 Intruder 菜單上的選項標記的位置是要替換還是附加現有的參數值。在上面的請求編輯器里,指出了定義位置的數量和文本模板的大小。
你可以使用選項上的按鈕來控制位置上的標記:
1. add § — 在當前游標位置插入一個位置標記。
2. clear § — 刪除整個模板或選中的部分模板里的位置標記。
3. auto § — 這會對放置標記的位置做一個猜測,放哪裡會有用,然後就把標記放到相應位置。這是一個為攻擊常規漏洞(SQL 注入)快速標記出合適位置的有用的功能,然後人工標記是為自定義攻擊的。
4.refresh — 如果需要,可以刷新編輯器里有顏色的程式碼。
5.clear — 刪除整個編輯器內容。
3:Payloads 有效負荷選項(Payloads tab)
這個選項是用來配置一個或多個有效負荷的集合。如果定義了”cluster bomb”和”pitchfork”攻擊類型,然後必須為每定義的有效負荷位置(最多8個)配置一個單獨的有效負荷。使用”payload set”下拉菜單選擇要配置的有效負荷。
選項1:Payload SetsPayload數量類型設置
選項2:Payload Opetions[Simple list] 該選項會根據選項1中Payload type的設置而改變
選項3:Payload Processing對生成的Payload進行編碼、加密、截取等操作
選項4:Payload Encoding你可以配置哪些有效載荷中的字元應該是URL編碼的HTTP請求中的安全傳輸。任何已配置的URL編碼最後應用,任何有效載荷處理規則執行之後。 這是推薦使用此設置進行最終URL編碼,而不是一個有效載荷處理規則,因為可以用來有效載荷的grep選項來檢查響應為呼應有效載荷的最終URL編碼應用之前。
4:Opetions 選項卡(Options tab)此選項卡包含了request headers,request engine,attack results ,grep match,grep_extrack,grep payloads和redirections。你可以發動攻擊之前,在主要Intruder的UI上編輯這些選項,大部分設置也可以在攻擊時對已在運行的窗口進行修改。
選項1:Request Headers 這些設置控制在Intruder是否更新配置請求頭。
如果選中‘update Content-Length header’框,Burp Intruder 會使用每個請求的 HTTP 主體長度的正確值,添加或更新這個請求里 HTTP 消息頭的內容長度。這個功能對一些需要把可變長度的有效載荷插入到 HTTP 請求模板主體的攻擊是很有必要的。這個 HTTP 規範和大多數 web 伺服器一樣,需要使用消息頭內容長度來指定 HTTP 主體長度的正確值。如果沒有指定正確值,目標伺服器會返回一個錯誤,也可能返回一個未完成的請求,也可能無限期地等待接收請求里的進一步數據。
如果選中‘set Connection: close’框,則 Burp Intruder 會添加或更新 HTTP 消息頭的連接來請求在每個請求後已關閉的連接。在多數情況下,這個選項會讓攻擊執行得更快。
選項2:Request Engine 設置發送請求的執行緒、超時重試等。
選項3:Attack Results 設置攻擊結果的顯示。
選項4:Grep – Match 在響應中找出存在指定的內容的一項。
選項5:Grep – Extract 通過正則提取返回資訊中的內容。
選項6:Grep – Payloads 這些設置可以用於包含已提交的有效負載的反射的標誌結果項目。如果啟用了此選項,BurpSuite會添加包含一個複選框指示當前負載的值在每個響應發現新的結果列。
選項7:Redirections 重定向響應,控制Burp在進行攻擊時如何處理重定向。
Burp Suite Intruder的4種攻擊類型
以下面這一段參數為例,被§§包圍的部分為需要破解的部分:
user=§ss§&password=§zxcv§&imageField.x=17&imageField.y=1
(1) (2)
———————————————————-
payload1 = [admin,administrator,sys,system,root]
payload2 = [pass,passwd,pwd]
1. Sniper (狙擊)
按順序將(1)(2)其中之一中使用所給的payload進行替換,另一個參數不變.
若在這裡使用payload2的話,破解嘗試順序為:
user | password
——————-
ss | pass
ss | passwd
ss |pwd
pass | zxcv
passwd | zxcv
pwd| zxcv
2. Battering ram (撞擊)
使用payload同時替換所有被選中的位置.
在這裡使用payload2的話,破解嘗試順序為:
user | password
——————-
pass | pass
passwd | passwd
pwd|pwd
3. Pitchfork (交叉)
按順序分別使用payload1替換(1),payload2替換(2).payload數量較少的列表用完則停止.
破解方式如下:
foriinrange( min(len(payload1),len(payload2)) ):
user = payload1[i]
password = payload2[i]
4. Cluster Bomb (集束炸彈)
通常意義上的窮舉法.
foriinpayload1:
forjinpayload2:
user = payload1
password = payload2
三、數據構造演示
1、新建多個設備
Step1、burpsuit中開啟代理設置及瀏覽器代理配置為burpsuit中代理地址
‘’
Step2、burp中proxy中開啟代理intercept攔截功能,IE瀏覽器中新建設備頁面填寫新建設備後點擊確定,burp代理中將可以看到新建設備請求
Step3、步驟2中看到對應請求後滑鼠右擊“send to Intruder”後,Intruder模組中可以看到對應請求,如下
Step4、步驟3可看到每個傳入參數burpsuit都自動會替換成一個Payloads,可以根據需求“Clear$”後選擇某個變數點擊“Add$”,
Step5、設置Positions中Attack type,此處設置會影響到後續Payloads的配置,具體Attack type差異和影響Payloads配置可查看本文前面描述,此處保持為默認Sniper模式:
Step6、設置Payloads變數生成規則,此處設置的規則會影響attack的結果和發起attack請求數量,此處新建設備只需要改變設備名稱變數即可,設置規則較簡單,如下
Step7、配置基本完成,如果有需要可在Options配置發起請求的多執行緒數目,後點擊Start attack即可(tip:此處可能會出現很多請求失敗的情況,有可能是獲取token失效,重新獲取到token替換髮起attack即可)