1. 背景
最近參加了2020騰訊安全平臺部極客技術挑戰賽,獲得了一次騰訊綠色通道面試的機會,因此我想要藉此機會補充一下網絡安全方面的知識,於是就從基礎的靶場 DVWA (Damn Vulnerable Web Application) 開始刷起,這一篇是關於暴力破解安全等級爲 Low
的賬號密碼的內容。
2. 準備工作
2.1. 靶場環境
首先配置靶場環境,如果想要在本地配置靶場環境,可以參考github上的教程,這裏推薦大家直接使用vulnspy
提供的在線的靶場環境。
如圖1所示,點擊右上角的 Start To Hack
使用GitHub賬號登陸,即可創建靶場環境。
創建環境以後,在 LABS
標籤下,點擊 Target Address
下的鏈接即可進入環境,一次創建有效期爲 2
個小時,結束後可以再次創建,最多能夠同時創建5
個實驗環境。
進入頁面以後,賬號密碼都是默認的,點擊登陸。
拉到頁面底部,點擊創建數據庫。
創建完成後,會回到登陸頁面要求重新登陸,再次登陸即可。
默認的難度是 impossible
,基本沒有安全漏洞,我們要點擊左邊的 DVWA Security
設置難度。
頁面上也有相應的難度說明,我們先從 Low
的難度開始訓練。
點擊左邊的Brute Force
標籤,我們就進入到密碼破解的訓練頁面了。
2.2. 安裝破解工具
下載 Burp Suite Community 免費版本 ,圖形界面安裝。下載有點慢,Mac
系統的同學可以從百度網盤下載。
鏈接:https://pan.baidu.com/s/1fXM7uKv2lE5KoEDgCVnazQ 密碼:x7sj
安裝完成以後,就可以開始我們的破解了。
3. 破解過程
3.1. 代理請求
首先設置瀏覽器的代理,在Safari
中操作路徑爲爲偏好設置 - 高級 - 代理 - 更改設置
,設置HTTP代理,將代理服務器地址設置爲127.0.0.1:8000
。
與Proxy - Option
中的設置保持一致。
我們再對 Burp Proxy
進行一些瞭解。內容參考自《Web安全攻防:滲透測試實戰指南》中對Burp Proxy
的介紹。
Burp Proxy
是利用 Burp
開展測試流程的核心,通過代理模式,可以讓我們攔截、查看、修改所有在客戶端與服務端之間傳輸的數據。
Burp Proxy
的攔截功能主要由 Intercept
選項卡中的 Forward、Drop、Interception is on/off和Action
構成,它們的功能如下所示。
Forward
表示將攔截的數據包或修改後的數據包發送至服務器端。Drop
表示丟棄當前攔截的數據包。Interception is on
表示開啓攔截功能,單擊後變爲Interception is off
,表示關閉攔截功能。- 單擊
Action
按鈕,可以將數據包進一步發送到Spider、Scanner、Repeater、Intruder
等功能組件做進一步的測試,同時也包含改變數據包請求方式及其body的編碼等功能。
打開瀏覽器,輸入需要訪問的URL
並按回車鍵,這時將看到數據流量經過Burp Proxy
並暫停,直到單擊 Forward
按鈕,纔會繼續傳輸下去。如果單擊了 Drop
按鈕,這次通過的數據將丟失,不再繼續處理。
當 Burp Suite
攔截的客戶端和服務器交互之後,我們可以在Burp Suite
的消息分析選項中查看這次請求的實體內容、消息頭、請求參數等信息。Burp
有四種消息類型顯示數據包:Raw、Params、Headers
和Hex
。
Raw
主要顯示Web
請求的raw
格式,以純文本的形式顯示數據包,包含請求地址、HTTP
協議版本、主機頭、瀏覽器信息、Accept
可接受的內容類型、字符集、編碼方式、cookie
等,可以通過手動修改這些信息,對服務器端進行滲透測試。Params
主要顯示客戶端請求的參數信息,包括GET或者POST請求的參數、cookie
參數。可以通過修改這些請求參數完成對服務器端的滲透測試。Headers
中顯示的是數據包中的頭信息,以名稱、值的形式顯示數據包。Hex
對應的是Raw中信息的二進制內容,可以通過Hex編輯器對請求的內容進行修改,在進行00截斷時非常好用。1
3.2. 攔截請求
接下來我們要開始攔截請求,在 Burp Suite
點擊Intercept is off
中打開請求攔截。
在靶場的Brute Force
頁面中輸入任意的賬號密碼,點擊登陸。在 Burp Suite
的 Proxy - Intecept
界面中顯示攔截成功,點擊 Intercept is on
關閉攔截。
在Http History中找到帶賬號密碼的請求。
全選後,右鍵選擇 Send To Intruder
。
在 Intruder - 2 - Position
界面中,將用戶名和密碼以外的變量去除,選擇 Attack type
爲 Pitchfork
。
各種模式的區別可以參考《Web安全攻防:滲透測試實戰指南》中的內容,具體如下。
Sniper
模式使用單一的Payload
組。它會針對每個位置設置Payload
。這種攻擊類型適用於對常見漏洞中的請求參數單獨進行Fuzzing
測試的情景。攻擊中的請求總數應該是position
數量和Payload
數量的乘積。Battering ram
模式使用單一的Payload
組。它會重複Payload
並一次性把所有相同的Payload
放入指定的位置中。這種攻擊適用於需要在請求中把相同的輸入放到多個位置的情景。請求的總數是Payload
組中Payload
的總數。Pitchfork
模式使用多個Payload
組。攻擊會同步迭代所有的Payload
組,把Payload
放入每個定義的位置中。這種攻擊類型非常適合在不同位置中需要插入不同但相似輸入的情況。請求的數量應該是最小的Payload
組中的Payload
數量。Cluster bomb
模式會使用多個Payload
組。每個定義的位置中有不同的Payload
組。攻擊會迭代每個Payload
組,每種Payload
組合都會被測試一遍。這種攻擊適用於在位置中需要不同且不相關或者未知輸入攻擊的情景。攻擊請求的總數是各Payload
組中Payload
數量的乘積。1
3.3. 填裝彈藥
要通過暴力來破解DVWA Brute Force Low
,遍歷所有符號的排列組合是比較低效的,因爲每種情況並非等可能地出現,人們爲了要記憶自己的密碼,一般都會遵循某些規律,比如在密碼中包含姓名、生日等等字段。所以我們就需要一份包含高頻用戶名和密碼的詞典作爲彈藥,從而對系統進行轟炸。
我選擇的是Github上的SecLists項目,上面有許多用戶名和密碼,有些按照頻率進行了排序,更加方便我們使用。
我也選了一些放在了百度網盤上。
鏈接:https://pan.baidu.com/s/1NbOkmIbhBXOvejwSyoCF2A 密碼:74gz
在這裏我使用的是 xato-net-10-million-passwords-dup.txt
和 xato-net-10-million-usernames-dup.txt
兩份基於頻率排序的詞典。
在 Payload
界面通過Load
按鈕將詞典引入,Payload set 爲 1 時
引入的是賬號,Payload set 爲 2 時
引入的是密碼。
3.4. 設置崗哨
填裝好彈藥以後,我們還需要知道在什麼情況下破解算成功了。我們先隨意填寫一次賬號密碼,發現當用戶名或密碼錯誤時,頁面會顯示Username and/or password incorrect.
那麼當頁面沒有顯示這條信息時,說明我們破解成功了。
所以我們要在Intruder - 2 - Option - Grep Match
中添加 incorrect
關鍵詞,並且勾選Flag
。
3.5. 開始攻擊
接下來,在 Payload
界面點擊 Start Attack
開始攻擊。點擊後會有一個提示說免費版的攻擊時長受限,點 OK
即可。
很快,我們就發現了有一條攻擊請求的 Response
中沒有incorrect
關鍵詞。
查看該次攻擊的賬號密碼,發現其賬號爲 admin
,密碼爲password
。到此,我們就成功地通過暴力方式破解了DVWA Brute Force
安全等級爲 Low
的密碼。
4. 參考文獻
[1] 徐焱, 李文軒, 王東亞. Web 安全攻防:滲透測試實戰指南 [M]. 北京: 電子工業出版社, 2018.
聯繫郵箱:[email protected]
CSDN:https://me.csdn.net/qq_41729780
知乎:https://zhuanlan.zhihu.com/c_1225417532351741952
公衆號:複雜網絡與機器學習
歡迎關注/轉載,有問題歡迎通過郵箱交流。