暴力破解【驗證碼繞過、token防爆破】靶場實驗

★★實戰前置聲明★★

文章中涉及的程序(方法)可能帶有攻擊性,僅供安全研究與學習之用,讀者將其信息做其他用途,由用戶承擔全部法律及連帶責任,文章作者不承擔任何法律及連帶責任。

一、BurpSuite簡介

爆破工具Burp Suite是用於攻擊web應用程序的集成平臺,包含許多工具,併爲這些工具設計了很多接口,促進加快攻擊應用程序的過程。所有工具都共享一個強大、可擴展的框架,處理並顯示HTTP消息。

暴力破解主要使用Intruder模塊,該模塊用於自動對Web應用程序自定義的攻擊,可以使用Intruder方便地執行許多任務,可用於缺陷測試:SQL注入,跨站點腳本,路徑遍歷、暴力攻擊認證系統、操縱參數、拖出隱藏的內容和功能、數據挖掘、併發攻擊、應用層的拒絕服務式攻擊等。

Intruder爆破模塊主要由4個模塊組成:
1、Target:用於配置目標服務器進行攻擊的詳細信息;
2、Positions:設置Payloads的插入點和攻擊類型(攻擊模式);
3、Payloads:設置payload,配置字典
4、Options:收發包細節,發包速度、記錄是否保存,發包後是否要更新請求頭、主動聲明請求連接已關閉、記錄匹配到的數據等。

二、暴力破解【驗證碼繞過、token防爆破】靶場實驗

暴力破解可分爲4類:簡單的暴力破解、前端JS檢測驗證碼、後端服務器檢測驗證碼和Token防爆破檢測。第一類在《認證崩潰(中)之暴力破解和靶場實驗一》已分享過了。本文分享剩下的3類,還以pikachu靶場爲例。使用火狐瀏覽器開啓burp,在驗證過程BurpSuite開啓攔截器。

1、基於表單的暴力破解

詳細破解過程請參考《認證崩潰(中)之暴力破解和靶場實驗一》

2、驗證碼繞過(on server)

2.1、思路

使用burpsuite抓包,使用repeater進行請求驗證,驗證碼在服務端是否有驗證正確性,驗證完是否做清除,發現在服務端有驗證驗證碼的正確性,但正確的驗證碼未做清除動作,可持續使用。

2.2、頁面輸入信息提交

2.3、BurpSuite發送Repeater


2.4、BurpSuite發送Intruder

在BurpSuite攔截到的信息右擊選擇Send to Intruder,在Intruder tab下的Positons,清除默認指定的參數點,重新設置並指定攻擊類型

2.5、設置payload


2.6、攻擊並分析結果


2.7、web端登錄驗證

注意:火狐瀏覽器關閉burp代理,輸入上一步破解的用戶名和密碼登錄,驗證可用。

3、驗證碼繞過(on client)

3.1、思路

故意輸入錯的驗證碼,發現頁面出現彈窗信息,並沒有發起提交請求動作,輸入正確的驗證碼纔有發請求動作。

右擊:查看頁面源碼,搜索關鍵字:Please Enter Your Information,在form表單的onsubmit="return validate();",找到validate();方法代碼

<script language="javascript" type="text/javascript">
    var code; //在全局 定義驗證碼
    function createCode() {
        code = "";
        var codeLength = 5;//驗證碼的長度
        var checkCode = document.getElementById("checkCode");
        var selectChar = new Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9,'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');//所有候選組成驗證碼的字符,當然也可以用中文的

        for (var i = 0; i < codeLength; i++) {
            var charIndex = Math.floor(Math.random() * 36);
            code += selectChar[charIndex];
        }
        //alert(code);
        if (checkCode) {
            checkCode.className = "code";
            checkCode.value = code;
        }
    }

    function validate() {
        var inputCode = document.querySelector('#bf_client .vcode').value;
        if (inputCode.length <= 0) {
            alert("請輸入驗證碼!");
            return false;
        } else if (inputCode != code) {
            alert("驗證碼輸入錯誤!");
            createCode();//刷新驗證碼
            return false;
        }
        else {
            return true;
        }
    }

    createCode();
</script>

從validate()方法看出驗證碼是在前端生成,驗證也是在前端,提交時驗證不通過,直接不發起post請求。

因此破解是跟【1、基於表單的暴力破解】是一樣的。

3.2、詳細操作步驟

參考1、基於表單的暴力破解 即可

4、token防爆破

4.1、思路

先界面隨便輸入用戶名和密碼,點按鈕提交,看請求參數,發現參數有一個token。

刷新頁面,右擊:查看頁面源碼,搜索關鍵字:Please Enter Your Information,看到form內容裏面有一個input標籤,type=hidden,value有一串數字,頁面一刷新就不一樣。

接下來參考【2、驗證碼繞過(on server)】,先使用burpsuite抓包,使用repeater進行請求驗證,token在服務端是否有驗證正確性,驗證完是否做清除,發現在服務端有驗證token的正確性,但正確的token也有做清除動作,無法持續使用,必須每次重新獲取。

4.2、頁面輸入信息提交

4.3、BurpSuite發送Repeater

參考步驟2.4、BurpSuite發送Repeater

4.4、BurpSuite發送Intruder

在BurpSuite攔截到的信息右擊選擇Send to Intruder,在Intruder tab下的Positons,清除默認指定的參數點,重新設置並指定攻擊類型

攻擊類型選擇:Pitchfork,假設已經知曉用戶名, 設置password和token爲爆破點進行標記

4.4.1、設置payload

設置密碼本,點擊payload,選擇第一項的密碼本與低等級的相同;
第二項的時候選擇Recursive grep 遞歸查找並且把之前得到的token值粘貼到下方的方框中。

4.4.2、設置Options-正則抽取

在options中的grep-extract中打勾,點擊add添加過濾條件
點擊refetch response找到響應包中的token 選中複製token值點擊確定

4.4.3、設置Options-重定向

重定向設置成:always總是 ,用於動態獲取token,下次請求的參數值

4.4.4、設置Resource Pool

★★注意★★:線程一定要設置爲1,因爲需要從響應裏面的取token用於下一次請求的參數值。

4.6、攻擊並分析結果

4.7、web端登錄驗證

注意:火狐瀏覽器關閉burp代理,輸入上一步破解的密碼登錄,驗證可用。

三、資料獲取

Burp Suite工具之前已提供過了,如需要請關注我的公衆號:大象只爲你,回覆:【BP安裝】獲取。

靶場環境搭建請參考《靶場環境搭建【XP、pikachu、dvwa、sqli-labs】》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章