DVWA-暴力破解-对‘g0tmi1k’文章的学习笔记
DVWA-暴力破解-對‘g0tmi1k’文章的學習筆記
- 概要
- 事先準備(Linux命令學習)
- 思想及相關概念
- 解題過程
- Hydra
- Patator
- Burp Suite
- 自寫腳本
g0tmi1k的原文地址
博主g0tmi1k(我叫他“搞牛奶”)的這篇文章是在學習DVWA暴力破解模塊時接觸到的,一路看下來發現不僅僅只有關于DVWA的解題步驟,還有很多非常值得初學者學習的其他思路和方法,于是就對這篇文章深入學習一下,記下一些個人覺得非常不錯的要點。該博主的其他博文也非常優秀,是一位大神!
因為我還是個小白,還有很多東西都不會,所以可能記錄的內容略顯繁瑣。
概要
搞牛奶是站在“把DVWA里面的練習內容當作完全的黑盒子”的角度來進行學習的,即除了目標域名和一開始所必須的登入系統的管理員賬號密碼之外,其他地方一律當作不知道(即使可以看源碼也不看),盡可能地逼近著實際的網站漏洞測試情景。
對目標網站進行分析的方式,搞牛奶傾向于盡可能地使用命令行工具(像是ucrl配合grap、sed、awk和diff等),而不是只用瀏覽器。
對于是使用瀏覽器還是命令行,個人認為各自有其優點,例如:
- 瀏覽器:簡單直觀是其最大的優點,對于數據的發送和接收也是自動的,有助于把注意力完全放在目的上而無需在意過程
- 命令行:操縱數據直接方便,輸命令就行,而無需在瀏覽器中進行繁瑣的“點點點”;過程可高度定制,可控性強,有助于更好地理解工作過程和原理
作為研究安全地小白,個人認為在學習過程中更應該把重點放在對過程和原理上,而不是單純地為了結果而去解題。所以作為學習漏洞來說,也為了盡可能地學習搞牛奶的思路和觀點,我也盡可能地使用命令行工具進行學習。
(由于用到的工具大多數都不熟,我也是事先花了一定時間去簡單學習了一下,對于Linux小白的我來說也算是受益匪淺!)
事先準備(Linux命令學習)
下面涉及到的工具和Linux命令基礎就不進行介紹和講解使用教程了,網上其他人總結的也比我好(拒絕學習資料在互聯網上無意義地重復,人人有責)。
由于是使用curl工具,cookie和sessionid等的保存工作都需要手動進行(搞牛奶指出,這項工作僅針對DVWA,不一定所有網站都需要這個保存sessionid的過程)。
首先是使用獲取DVWA登錄的token和sessionid:
CSRF=$(curl -s -c dvwa.cookie 'http://www.dvwa.com/login.php' | awk -F 'value=' '/user_token/ {print $2}' | cut -d "'" -f2)命令解析:
保存目標網站的cookie到文件中
結果是回顯登錄的頁面的html源碼,其中有個隱藏的input標簽是user_token,保存著此次會話用戶的token(由于是隱藏的,所以即使使用瀏覽器也不能直接看出來,需要點開控制臺查看源碼,這就體現出了一個使用命令行的優勢,以及啟示我們要關注網頁源碼)。
同時保存了網站的cookie到本地。
對上一步的回顯結果進行逐行查找,查找 “user_token“所在的行,并以”value=“為分隔符對該行進行分割,輸出分割后的第二個值
對上一步的回顯結果進行字段提取
最后對上一步的結果保存到變量CSRF中。
接著利用token登錄到系統,改變該cookie在目標服務器中的登陸狀態:
curl -s -L -b dvwa.cookie --data "username=admin&password=password&user_token=${CSRF}&Login=Login" "http://www.dvwa.com/login.php"命令解析:
使用-L允許重定向,-b傳遞cookie,–data傳遞填入表單所需要的參數(用戶名、密碼、token以及點擊登錄)。
如無意外,將會回顯登陸成功后系統首頁的源碼(包括了You have logged in as 'admin’字樣),并且目標服務器中將會改變該cookie的登陸狀態為成功。
最后刪除本地cookie中的安全等級字段,為的是可以隨時切換安全等級:
sed -i '/security/d' dvwa.cookie命令解析:刪除文件中“security“字段的所在行
經過上述步驟之后就可以使用類似下面的命令訪問DVWA中的不同頁面:
curl -s -L -b 'security=low' -b dvwa.cookie -i 'www.dvwa.com/vulnerabilities/brute'其中可以修改security的參數為不同的安全等級,來便捷地訪問同一練習不同難度的頁面。
獲取到頁面源碼之后,可以使用管道符配合sed或grep等工具來控制輸出,從而只關注頁面中我們關心的部分(推薦上瀏覽器查看源碼來獲取我們關心的標簽部分)。
例如針對練習頁面我們只想看到實際練習漏洞的部分:
sed -n '/<div class="body_padded/,/<\/div/p'。
總之后面想怎么操作就怎么操作。
思想及相關概念
簡單來講暴力破解和字典攻擊還是有區別的,前者是遍歷可用字符組合,后者是遍歷事先準備好的字典文件,雖然現在一般都默認認為是后者的同一概念。
暴力破解的速度取決于整個過程中最慢的點。
從網頁源碼中可以獲取到的信息:
-
普通頁面、登陸失敗和登錄成功的回顯不同,可以使用curl分別獲取頁面并導出到文件,然后使用diff命令比較不同之處;
-
可以以上一條所講述的作為判斷破解是否成功的依據,如若失敗可能會有“failed”、“error”或“incorrect”等字樣,成功可能會有“success”等字樣;
-
在實際的滲透環境中,我們無法事先得知登陸成功所返回的相關參數,所以在這種情況下“黑名單“可能比”白名單“更為適用;
-
爆破的過程中,最好先盡可能地獲取現已存在的用戶名,有以下參考途徑:
- 尋找公共賬號
- 從“忘記密碼“入手
- “郵箱已被注冊?“
- 尋找“訪客“用戶
- 從“幫助“頁面入手
- 查找網站源碼,查找是否存在默認用戶
- SQL注入
-
爆破的線程數和等待時間要設置合理,前者并非越多越好,后者并非越短越好;(網站崩潰了就是DoS了,那還破解個啥呀);
解題過程
具體過程就不重復了,下面就記錄自己實操的結果和心得。
Hydra
使用Burp代理Hydra那里沒能成功,原因可能與命令格式有關。
而且不使用代理,Hydra也沒能完成它的破解過程,總是在結果枚舉完成的時候卡住,沒能給出正確結果。
(個人感覺Hydra還是用來破解常規服務的賬號密碼比較好,類似ssh、telnet或者是ftp之類的,破解具體的網站登陸頁面還是使用別的吧)
(類似Hydra的還有一個medusa?)
Patator
使用patator倒也是可以完成任務,也能正常使用Burp代理來debug
下面是實際執行的代碼(藍色箭頭是代理,可不要):
而且參數的傳遞也比Hydra簡單(部分參數的實際名稱可能會變,看幫助文檔)
(新軟件就是好啊)
和Hydra有區別的地方在于:
- 沒有提供“嘗試用戶名/空白/反序密碼作為密碼”的選項,需要在字典文件中實際列出;
- 而且默認不會遇到正確結果就退出,而是一直遍歷完整個字典文件,因此需要我們自行定義中間的退出點;
- 而且結果輸出也需要我們自行定義,否則默認顯示所有嘗試結果,這種輸出不會提示哪些是成功的/失敗的,需要通過返回狀態碼和頁面長度判斷。
Burp Suite
最后是直接使用Burp的爆破工具,這里主要記下一些使用技巧:
- 從返回頁面中提取特定值(判斷是否登陸成功):Option->Grep – Extract;
- 如要針對用戶名和密碼同時爆破,則需要選擇“Cluster bomb”的攻擊模式,然后添加變量,在Payloads選項卡中為每個變量設置payload。
過程上有點類似于patator,也是默認遍歷整個字典而不會中途停下。
自寫腳本
后面搞牛奶還給出了自定義的兩種腳本工具,分別用Bash和Python編寫,都非常值得學習(真好,小白我一不會bash二不熟request,學吐了)(本人優先學request)。
自寫腳本的好處不用多說,高度定制,針對性強。
最后是總結:針對實際情況選工具才是上上策。
總結
以上是生活随笔為你收集整理的DVWA-暴力破解-对‘g0tmi1k’文章的学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 常见网络命令介绍及使用
- 下一篇: [NOTE] WebGoat v8.2.