【安全】【測試思路】基於Burpsuite工具中的intruder執行暴力破解

次次次不吃餅乾_發表於2020-04-19

基於Burpsuite工具中的intruder執行暴力破解

測試工具

序號工具版本備註
1JDK環境1.7及以上burpsuite工具執行所需
2Burpsuite1.4及以上請根據個人情況,選擇Community或Professional版本
3DVWA當前最新是1.9整合多種滲透測試工具,可根據測試場景,調整應用程式的安全等級,環境部署參考點選此處

常規暴力破解

  對於一般或中小型專案軟體來說,使用者進行登入操作時,傳送的鑑權請求可能只有一條,以使用者賬號、密碼、驗證碼(若有)作為入參,傳送給伺服器進行驗證,根據鑑權結果返回登入失敗或成功。此類登入請求,只需在intruder中選取請求中的密碼引數作為載荷標記,配置好對應的載荷內容,即可執行破解操作。

測試流程

  1. 攔截登入請求,併傳送到intruder中。
    登入請求傳送至intruder

  2. 選擇攻擊型別。

Attack type
(型別)
Payload set
(載荷集)
描述適用場景
Sniper最多1個單位置單遍歷,即所有載荷標記使用同一個載荷集,每次攻擊只替換一個載荷標記。攻擊總數=載荷標記數量 * 載荷集清單數量只有一個位置需要替換,或者多個位置依次替換
Battering ram最多1個多位置同時遍歷,即所有載荷標記使用同一個載荷集,且每次攻擊會同時替換所有載荷標記。 攻擊總數=載荷集清單數量存在多個位置需要替換,且多個位置被替換內容需要同時一致
Pitchfork至少2個各個載荷標記使用對應的載荷集,每次同時取載荷集中的第N個元素替換對應的標記。攻擊總數=所有載荷集清單最少數量2個以上位置同時被替換,被替換的內容存在一一對應關係
Cluster bomb至少2個集束爆破,攻擊總數等於所有載荷集清單數量的笛卡爾積。2個以上位置同時被替換,被替換的內容無需存在對應關係,可自由組合。

攻擊模式

  1. 選取載荷標記。
    add:手動選取一個載荷標記位置,以成對的§符號標記起來。
    clear:清除所有的載荷標記位置。
    auto:工具自動選取需要被替換的標記位置。
    refresh:重新整理編輯器中的內容,使之語法高亮。
    選取載荷標記

  2. 新增載荷內容。
    paste:從系統貼上板中獲取資料,點選paste按鈕新增。
    load:選擇並讀取本地檔案,每一行作為一條資料。
    remove:移除所選資料。
    clear:清除所有資料。
    add:單個資料新增。
    add from list:從工具自帶的資料列表中新增。
    新增載荷內容

  3. 執行破解,檢視破解請求。
    點選Start attack按鈕,即可開始破解(為了提高破解機率,可先在options中將執行緒數設定為1)。
    從圖中可發現,在執行第86次替換時,返回的長度length比其他的要少;再通過檢視該攻擊請求的返回報文,發現該請求已經正確返回了登入後的網頁原始碼;與此同時,在所有的攻擊請求中,沒有一條返回“賬號被鎖定”或“IP地址被鎖定”的錯誤資訊(具體返回內容,請根據專案實際情況判斷)。
    故由此得出,該系統的登入模組,未做任何防暴力破解的措施,極易被破解出密碼。

執行破解

特殊登入請求暴力破解

  在接觸到的某些大型專案中,為了進一步提高專案的安全防護,可能會在登入驗證請求之前,先向伺服器傳送一條獲取隨機值的請求,伺服器返回隨機值後,登入驗證請求會攜帶此隨機值,連同登入使用者賬號、密碼、驗證碼(若有),一同傳送給伺服器進行鑑權驗證,並且此隨機值長度一般可達到32位或以上,同時可能存在時間限制,以此來達到雙重保障安全登入及長時間未登入銷燬登入會話的目的。
  模擬登入流程如下:
基於會話有效期的登入請求流程

  如果此時我們們使用上述的常規暴力破解方式,未將登入隨機值放入登入請求中,伺服器一般會返回“登入會話失效”或者“登入隨機值已過期”等等訊息,而此類測試結果並不能作為專案存在防暴力破解機制的依據。
同一user_token發起登入請求驗證
  因此,我們們可以使用到burpsuite工具中自帶的巨集錄製的功能,將獲取隨機值的請求錄製成巨集,然後再將巨集命令應用到intruder功能中,便可讓登入請求入參攜帶由伺服器返回的隨機值,達到“欺騙”伺服器正常登入的目的。

測試流程

  大體流程與常規破解一致,區別在於前期的配置巨集命令(步驟4~10)。

  1. 以DVWA程式中的Brute Force為例,輸入username和password,點選Login按鈕,觸發一次登入請求。
    發起登入請求

  2. 在burpsuite中可看出,登入請求中的引數,不僅包含了使用者名稱、密碼,還包含了一條user_token,並且是隨機的。
    分析登入請求1

  3. 登入失敗後,在獲取新頁面的返回報文中,可看到新生成了一條user_token。 分析登入請求2

  4. 進入Project options->Sessions->Marcos中,點選Add新增一條Marco。
    新增一條Macro

  5. 在Macro Editior介面中,點選Record macro按鈕,在彈出的視窗中,選擇那條獲取登入隨機值的請求,點選OK。
    配置獲取隨機值的請求

  6. 在Macro Editior介面中,輸入Macro description,在Macro items中選擇上述儲存的請求,點選Configure item按鈕進入Configure Macro Item介面。
    配置巨集命令位置

  7. 點選Add按鈕,在彈出的Define Custom Paramter介面中,選擇那串user_token隨機值,工具將自動填寫隨機值的起止位置表示式,記錄下來備用。點選OK按鈕儲存,回到工具主介面。
    配置隨機值位置

  8. 在Project options的Session Handling Rules中,新增一條規則。在彈出的Session handling rule editor視窗中,取一個規則的名字,在Rule Actions中點選Add,選擇Run a macro。
    新建會話處理規則

  9. 在Session handling action editor中,自動填上了第1~4步配置的macro,選中即可,下面的選項保持預設。點選OK按鈕儲存。
    配置會話處理動作

  10. 返回到Session handling rule editor視窗,切換到Scope頁籤。確保規則應用的工具包含Intruder,URL Scope中選擇“Include all URLs”選項。點選OK按鈕以儲存。
    選擇規則應用的範圍

  11. 至此,巨集命令的配置就完成了,接下來的intruder配置和執行破解操作,與常規暴力破解的步驟類似,不再贅述。

  12. 驗證:
    a. 在發起的Intruder中,可看到每一次發起的破解請求中,其攜帶的user_token都是不同的,且有效(如果隨機值無效會返回HTTP302 Not Found)。
    b. 返回報文中,可看到返回的訊息是賬號或密碼不正確,且smithy賬號由於嘗試登入錯誤次數過多,已被鎖定了。
    破解請求1
    破解請求2
    破解結果

相關文章