形成原因:網站沒有對登錄接口實施防暴力破解的措施,或者實施了不合理的措施,如不安全的驗證碼,或者使用token防禦暴力破解
測試方法:1.抓取登錄數據包,觀察驗證元素和response響應信息,判斷
2.字典優化
如果是管理後臺,可以嘗試管理員爲admin/administrator/root結合密碼字典進行爆破
用的靶機:pikachu
Bp intruder模塊
之前只用過sniper-_-|| 因爲基本上都知道用戶名或者只有一個變量
不過這次不知道用戶名
單字典:Sniper、Battering ram
Sniper:如果選擇多個變量,此字典會先爆破一個變量,再爆破第二個變量(一個一個來)Battering ram:無論選擇過個變量。此字典都會同時爆破(多個一起上)
多字典:Pitchfork、Cluster bomb
Pitchfork:此字典同時進行(同時出) Cluster
bomb:爆破建議選擇此字典(一對多。我出1,你逐個出完後,我再出2,你再逐個出完後,我才能再出下一個)
比較一下:
pitchfork
Cluster bomb:
所以一般爆破用戶名和密碼的話還是用第二種
驗證碼繞過
客戶端驗證碼繞過:
客戶端驗證碼就是前端採用js生成再使用js進行驗證的一種方式,這樣的驗證碼和服務器沒有關係
直接抓包attack即可~~
不安全的服務器端驗證碼繞過:就是每次沒有更新驗證碼
如何判斷:通過repeater模塊,更改一下用戶名或者密碼,看response有沒有改變,如果和原來一樣,說明用原來的驗證碼也可以,所以可以直接爆破
繞過token防禦暴力破解
關於token:
Token:在計算機身份認證中是令牌(臨時)的意思,類似於 MD5 加密之後的長字符串
特點:1.隨機性,不可預測 2.具有有限期 3.唯一
作用:1.防止重複提交 2.防止CSRF(跨站請求僞造)攻擊
Token是服務器生成的一串字符串,以作客戶端進行請求的一個令牌。
當第一次登錄後,服務器生成一個Token並返回給客戶端,以後客戶端只需帶上這個Token前來請求數據即可,無需再次帶上用戶名和密碼。
目的就是爲了驗證用戶登錄情況以及減輕服務器的壓力,減少頻繁的查詢數據庫。
它的應用:
1.當用戶首次登錄成功之後,服務器就會生成一個token值(UUID);
2.服務器會保存這個值(保存在數據庫中或者緩存中),再將這個token值返回給客戶端;
3.客戶端拿到token值之後,使用sp進行保存。
4.以後客戶端再次發送網絡請求(一般不是登錄請求)的時候,就會將這個token值附帶到參數中發送給服務器;
5.服務器接收到客戶端的請求之後,會取出token值與保存在本地(數據庫)中的token值做比較。如果兩個token值相同,說明用戶登錄成功過,當前用戶處於登錄狀態,如果沒有這個token值,沒有登錄成功。
思路:
登錄的時候客戶端token要和服務端token進行比較是否正確。
如果我們想要爆破的話,在每次請求前要把上一次請求的響應包獲取到,把其中的token值取出來
token採用遞歸payload,把上次請求的token值作爲本次請求的token值進行發送
進入options選項,打鉤
表示從響應中提取選項
fetch response,在響應包中選中token值
需要提交token,不能使用多線程,把線程數改爲1
然後開始跑即可~