暴力破解
前置burp的知識(Intruder爆破的四種模式)
1. Sniper(狙擊手模式)
它使用一組Payload集合,依次爆破被§標誌的爆破點。
如果爆破點設定一個,payload設定10個,就執行10次;如果爆破點設定兩個,則執行20次。
一般這個模式下只設定一個爆破點,因為如果使用者名稱和密碼都不知道的情況下不會使用該模式去爆破。通常用於在知道使用者名稱後,對密碼進行爆破。
2. Battering ram(破城槌模式)
它使用一組Payload集合,同時爆破被§標誌的爆破點。
無論爆破點設定幾個,payload設定10個,就執行10次。
3. Pitchfork(音叉模式)
同時爆破被§標誌的爆破點,爆破點1指定payload1,爆破點2指定payload2。
無論爆破點設定幾個,payload1設定10個,payload2設定10個,就執行10次。
並且一般按照payload少的執行,如payload1設定10個,payload2設定9個,就執行9次。
4. Cluster bomb(集束炸彈)
同時爆破被§標誌的爆破點,爆破點1指定payload1,爆破點2指定payload2,依次使用payload1與payload2的組合進行爆破。
payload1設定10個,payload2設定9個,就執行10*10=90次。
基於表單的爆破(沒有驗證)
直接丟入burp進行暴力破解
有驗證碼的爆破(驗證碼繞過)
實驗原理
驗證碼用來防止登入暴力破解、防止機器惡意註冊。具體是利用驗證碼影響如Burp Suite這類軟體進行攻擊。
驗證碼在後臺不過期,導致可以長期被使用;
驗證碼校驗不嚴格,邏輯出現問題;
驗證碼設計的太過簡單和有規律,容易被猜解
Server端產生驗證碼
例:Pikachu(驗證碼繞過(on server))
輸入使用者名稱和賬號密碼,看回顯(正確的驗證碼)
輸入空的驗證碼以及錯誤的驗證碼嘗試
然後重新輸入當時正確的那個驗證碼,後來發現這個驗證碼長期有效,有效時間很長,可以爆破。
然後Burpsuite跑一下,暴力破解成功。
Client端產生驗證碼
例:Pikachu(驗證碼繞過(on client))
輸入使用者名稱和密碼以及正確的驗證碼,抓包檢視回顯,發現了一串驗證碼的jjs程式碼
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();
然後瀏覽器禁用Js程式碼,便可暴力破解。
新增token防止爆破
輸入賬號密碼然後burp抓包:
有兩次發包可知:token值是一直在變化的,但是從客戶端的相應包來看,驗證碼是由客戶端生成的,這時候就需要用到burp的音叉模式去爆破。
設定為音叉模式爆破:
接下來新增token值的爆破,要將相應包裡的token值作為傳送包的值,採用遞迴搜尋,然後設定,新增規則。
重定向設定
重定向設定成:always總是 ,用於動態獲取token,下次請求的引數值,並且設定執行緒數為1
然後開始爆破,就成功得到密碼了