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

 一、暴力破解的概念php

顧名思義,暴力破解的原理就是使用攻擊者本身的用戶名和密碼字典,一個一個去枚舉,嘗試是否可以登陸。由於理論上來講,只要字典足夠龐大,枚舉老是可以成功的!瀏覽器

 

 二、暴力破解的實戰安全

在有了以前的環境準備後,還須要安裝一個新的輔助工具 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】ui

 

而後在「Intruder->Position」中設置,點擊clear,將自動設置的position【Clear】掉,而後在請求中username和password的地方點擊【Add】添加position,以下圖:這裏有attck type(四中攻擊類型,我下面介紹下四種的區別)spa

(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分鐘,這個怎麼解決呢?

相關文章
相關標籤/搜索