安全性測試入門(一):Brute Force暴力破解攻擊和防御


寫在篇頭:

隨着國內的互聯網產業日臻成熟,軟件質量的要求越來越高,對測試團隊和測試工程師提出了種種新的挑戰。

傳統的行業現象是90%的測試工程師被堆積在基本的功能、系統、黑盒測試,但是隨着軟件測試整體行業的技術積累和大環境,市場對於測試工程師的要求越來越全棧化,技術的突破是測試工程師的必修課。

安全測試就是測試工程師的高階技能之一,不過安全性測試領域水非常深,對於普通測試工程師而言可能並不容易上手。

所以筆者准備寫這個系列文章,做一個安全性測試入門級攻略。文章會采用DVWA項目,就其提供的幾大模塊,來進行安全性測試的初探和對安全性防御措施的簡析。

 

1. DVWA - 非常脆弱的一個網頁應用

DVWA- Damn voulnerable web application(直譯就是:非常脆弱的網頁應用-_-!!!),是UK的一家安全性研究機構發布的一套網站系統,專門用來展示網站安全性問題和防御機制。對於我們學習web安全性相關知識是一個很好的工具。

這套web項目可以在http://www.dvwa.co.uk/官網由github下載。

DVWA的安裝很簡單,只要架設起本地的Tomcat+MySql服務器,將DVWA部署到相應目錄即可。

部署完畢后,登錄應用,可以在左側的菜單中看到如下模塊:

他們分別是Brute Force(暴力(破解))、Command Injection(命令行注入)、CSRF(跨站請求偽造)、File Inclusion(文件包含)、File Upload(文件上傳)、Insecure CAPTCHA(不安全的驗證碼)、SQL Injection(SQL注入)、SQL Injection(Blind)(SQL盲注)、Weak Session IDs(弱會話標識)、XSS(DOM)(文檔對象模型跨站腳本)、XSS(Reflected)(反射型跨站腳本)、XSS(Stored)(存儲型跨站腳本)、JavaScript。

DVWA設置有4種安全級別:Low,Medium,High,Impossible,分別對應着這個應用對於安全性攻擊的防御級別。並且給出示例代碼讓我們了解相應攻擊方式的防御機制。

 

今天我們來研習其中的第一種攻擊方式:Brute Force暴力破解

 

2. Brute Force暴力破解

Brute Force,即暴力破解,是指黑客利用密碼字典,使用窮舉法猜解出用戶口令,是現在最為廣泛使用的攻擊手法之一。

現實場景中,窮舉法的范圍太廣,通常會基於一定的策略和規則來進行窮舉,比如12306曾經遭受的“撞庫”攻擊。

撞庫是黑客通過收集互聯網已泄露的用戶和密碼信息,生成對應的字典表,嘗試批量登陸其他網站后,得到一系列可以登錄的用戶。由於很多用戶習慣在各大網站和應用上使用同一套用戶名和密碼,這就意味着一旦其中某一個站點的用戶隱私泄漏后,就有可能被黑客收集並用作撞庫的數據。

下圖是DVWA的暴力破解界面,將DVWA安全級別設為最低:

 

下面我們通過窮舉的方式來破解這個應用的用戶密碼。手工輸入用戶名密碼顯然是不現實的,猶如大海撈針,所以考慮使用工具來實現。

我們使用OWASP ZAP來實現,ZAP的安裝和初始設置參考:OWASP ZAP使用入門指南

設置好ZAP代理后,訪問DVWA的Brute Force模塊,用任意用戶名密碼嘗試登錄,即可抓到相關請求:

下面使用Fuzz功能來實現對用戶名密碼窮舉破解:

1. 右鍵點擊登錄請求,選擇Attack->Fuzz

2. 在Fuzzer界面中,選中用戶名字段,點擊Add進行字典添加:

 3. 在添加字典界面,逐行添加(也可采用外部文件等形式)用於破解的用戶名。如前文所說,用戶名的窮舉肯定要基於一定的規則猜測,比如曾經獲取的一些用戶名。

4. 對於密碼字段重復上述2-3步操作,完成后點擊Start Fuzzer:

5. 任務執行完畢后,對結果按返回信息大小排序,可以明顯看到幾條不一樣的結果:

 

 6. 手動登錄發現以上賬號可以登錄成功,本次暴力破解完畢:

 

3. 防御機制

前文提到,DVWA的優點在於它提供了基於PHP的安全防御機制以供參考。

分別對比其4各安全級別的后台核心代碼:

Low:

基本沒有做任何防御。

 

Medium:

加入了SQL字符轉義邏輯,避免了SQL注入攻擊,但是不能防御暴力破解。

 

 

High:

加入了Token機制,每次登錄頁面都會隨機生成Token字串,那么無腦爆破就不可能了,因為Token是完全隨機的。

但是如果用更復雜的方法,每次先抓取當前頁面Token值再隨即進行字典式爆破,仍可以實現破解。

 

Impossible:

加入了賬號鎖定機制,數次登錄失敗后,賬號會鎖定,那么暴力破解就行不通了。可以說這是比較完善的防御機制。

 

 

4. 暴力破解測試

結合着上述討論,我們可以總結一下安全測試的思路。

比如對於Brute Force暴力破解攻擊:

滲透性測試:

第一種思路就是扮演攻擊者的角色,利用已知的攻擊手段嘗試暴力破解。

這是一種滲透性測試的策略,需要一些專業測試工具比如文中的OWASP ZAP來支持。

代碼審計:

既然我們知道了暴力破解的幾個級別的防御機制,那么就可以通過代碼審計的方式來確定被測應用的后台邏輯有無相應防御機制了。


免責聲明!

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



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