1、暴力破解的概念
顧名思義,暴力破解的原理就是使用攻擊者自己的用戶名和密碼字典,一個一個去枚舉,嘗試是否能夠登錄。因為理論上來說,只要字典足夠龐大,枚舉總是能夠成功的!
2、暴力破解的實戰
在有了之前的環境准備后,還需要安裝一個新的輔助工具 Burp Suite(這個工具很強大,慢慢講解吧,功能很多,我們今天用到抓包、截包、改包及暴力破解的功能)
下載大家網上去下載即可,百度很多安裝教程和包,這里就不說了,我的版本是1.6的。
在此之前,大家要明白我們登錄的時候實際上瀏覽器最終是發送的數據包,而這個動作呢我們完全可以用Burp Suite去代替,然后幫我們完成暴力破解
好了,我們接着來做實戰把,啟動Studyphp后,首先我們先登錄DVWA(admin/password),然后點擊左邊菜單欄的DVWA Security將安全級別調為low,然后再點擊左側的Brute Force(暴力破解)。
此時我們需要開啟我們的抓包工具 Burp Suite,打開工具后,點擊“Proxy->Options->設置好代理”(如下圖),同時我們需要設置瀏覽器代理端口也為8888,設置好代理后,點擊切換到Intercept ,設置狀態為【Intercept is on】。
點擊登錄,查看Intercept,將攔截到的請求,右鍵【Send to Intruder】
然后在“Intruder->Position”中設置,點擊clear,將自動設置的position【Clear】掉,然后在請求中username和password的地方點擊【Add】添加position,如下圖:這里有attck type(四中攻擊類型,我下面介紹下四種的區別)
(1)Sniper(狙擊手模式) 這個四種模式主要是參考這個博客進行學習:http://blog.csdn.net/huilan_same/article/details/64440284
狙擊手模式使用一組payload集合,它一次只使用一個payload位置,假設你標記了兩個位置“A”和“B”,payload值為“1”和“2”,那么它攻擊會形成以下組合(除原始數據外):
(2)Battering ram(攻城錘模式)
攻城錘模式與狙擊手模式類似的地方是,同樣只使用一個payload集合,不同的地方在於每次攻擊都是替換所有payload標記位置,而狙擊手模式每次只能替換一個payload標記位置。
(3)Pitchfork(草叉模式)
草叉模式允許使用多組payload組合,在每個標記位置上遍歷所有payload組合,假設有兩個位置“A”和“B”,payload組合1的值為“1”和“2”,payload組合2的值為“3”和“4”,則攻擊模式如下:
(4)Cluster bomb(集束炸彈模式)
集束炸彈模式跟草叉模式不同的地方在於,集束炸彈模式會對payload組進行笛卡爾積,還是上面的例子,如果用集束炸彈模式進行攻擊,則除baseline請求外,會有四次請求:
看完上面四種不同的介紹,我想大家應該知道用哪種好一些了吧,我們是賬號名和密碼兩個變量,我們選擇第四種Cluster bomb模式,這也是采用笛卡爾積最大程度的實現爆破。
在“Intruder->Payloads”中設置,分別選擇payload set 1/2,添加username和password的變量,可以load文件將變量加進來。
在Options下我們還可以線程數,這個根據電腦性能自行選擇(性能越好可以設置多一些,這樣跑的快一點)
最后點擊menu中的【Intruder->Start attack】開始攻擊。
在結果列表中,通過Length排序,選出長度與其他不同的一個,查看Response,可以看到“Welcome to the password protected area admin”的字段,證明這對載荷是正確的,爆破成功。(這里看成功可以通過Length長度來判斷,正確的長度為5325,錯誤的為5262)
還記得我們剛開始設置了DVWA的安全級別為low,那么如果是其它級別會咋樣呢?先來說一下中等級別的等級,我們可以發現破解時間變長了,但依舊能成功。
那么如果是high級別呢?
這里再接着來說下怎么破解如果high級別,high級別的話每次登陸就會攜帶多一個user_token值,這個值是服務器每次動態給的,我們每次打開登錄頁面,服務器就會返回一個token值給我們
在Burp代理的HTTP history中找到修改密碼的請求包,發送到Repeater測試,由於user_token
已失效,登錄失敗,HTTP狀態碼為302,我們點擊Follow redirection(跟隨重定向)跳轉到index頁面,點擊response->Render發現依舊是在登錄界面。下面我來說下怎么獲取每次服務器返回的user_token,然后成功登錄。
第一步:錄制宏
宏的管理界面位於Options → Sessions
,點擊Add
,新建一個宏。
進入到宏的記錄界面,從HTTP請求記錄中選擇獲取user_token的請求,這里我們知道肯定是登陸界面,選擇后確定。
注意:如果歷史記錄中沒有該請求,可以點擊右上角的Intercept
開關按鈕,關閉代理截斷,然后在瀏覽器中執行一次登錄操作。
之后進入宏編輯界面,輸入宏的名字,名字可隨便寫。我這里命名為get_user_token
,填寫宏名字后點擊右邊的Configure item
進入下一步設置。
宏設置頁面,指定參數的位置。點擊右下角Add
進行參數添加。
輸入參數名稱(這個需和密碼登錄請求中的參數名一致),使用指定開始和結束位置的方式,在請求響應內容中找到token,鼠標雙擊選擇保持高亮,點擊OK。然后在Configure Macro Item
、Macro Editor
全部點擊確定,完成宏的錄制。
完成后可以在宏列表框中看到剛才錄制的宏。
第二步:添加會話處理規則
會話處理規則處,點擊Add,添加一條新的規則。
填寫規則描述(使用便於區分的文字內容),添加一個動作,在請求之前運行一個宏。
動作編輯中,選擇剛才錄制的宏,選擇只更新指定的參數,輸入Token產生名稱user_token
,點擊確定。
完成動作編輯后,回到會話操作規則編輯界面,選擇Scope
,設置這個宏的作用域。
完成上述操作后,會話處理規則列表中有了新增的規則。
第三步:驗證規則是否生效
回到Repeater頁面(確保會話登陸有效,如超時,請重新登陸),再次發送密碼登錄的請求包,可以看到在提交請求后,user_token值自動更新,點擊Follow redirection。
可以看到登錄成功,如下圖:
那么問題接着來咯,如果我們設置了DVWA的安全級別為impossible呢?我們發現登錄錯了三次后將會鎖定15分鍾,這個怎么解決呢?