安全測試8_Web安全實戰2(暴力破解)


 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 ItemMacro Editor全部點擊確定,完成宏的錄制。

完成后可以在宏列表框中看到剛才錄制的宏。

 

第二步:添加會話處理規則

會話處理規則處,點擊Add,添加一條新的規則。

填寫規則描述(使用便於區分的文字內容),添加一個動作,在請求之前運行一個宏。

動作編輯中,選擇剛才錄制的宏,選擇只更新指定的參數,輸入Token產生名稱user_token,點擊確定。

完成動作編輯后,回到會話操作規則編輯界面,選擇Scope,設置這個宏的作用域。

完成上述操作后,會話處理規則列表中有了新增的規則。

第三步:驗證規則是否生效

回到Repeater頁面(確保會話登陸有效,如超時,請重新登陸),再次發送密碼登錄的請求包,可以看到在提交請求后,user_token值自動更新,點擊Follow redirection。

可以看到登錄成功,如下圖:

 那么問題接着來咯,如果我們設置了DVWA的安全級別為impossible呢?我們發現登錄錯了三次后將會鎖定15分鍾,這個怎么解決呢?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM