隨著國(guó)內(nèi)的互聯(lián)網(wǎng)產(chǎn)業(yè)日臻成熟,軟件質(zhì)量的要求越來越高,對(duì)測(cè)試團(tuán)隊(duì)和測(cè)試工程師提出了種種新的挑戰(zhàn)。
傳統(tǒng)的行業(yè)現(xiàn)象是90%的測(cè)試工程師被堆積在基本的功能、系統(tǒng)、黑盒測(cè)試,但是隨著軟件測(cè)試整體行業(yè)的技術(shù)積累和大環(huán)境,市場(chǎng)對(duì)于測(cè)試工程師的要求越來越全?;?,技術(shù)的突破是測(cè)試工程師的必修課。
安全測(cè)試就是測(cè)試工程師的高階技能之一,不過安全性測(cè)試領(lǐng)域水非常深,對(duì)于普通測(cè)試工程師而言可能并不容易上手。
所以筆者準(zhǔn)備寫這個(gè)系列文章,做一個(gè)安全性測(cè)試入門級(jí)攻略。文章會(huì)采用DVWA項(xiàng)目,就其提供的幾大模塊,來進(jìn)行安全性測(cè)試的初探和對(duì)安全性防御措施的簡(jiǎn)析。
DVWA- Damn voulnerable web application(直譯就是:非常脆弱的網(wǎng)頁應(yīng)用-_-!!!),是UK的一家安全性研究機(jī)構(gòu)發(fā)布的一套網(wǎng)站系統(tǒng),專門用來展示網(wǎng)站安全性問題和防御機(jī)制。對(duì)于我們學(xué)習(xí)web安全性相關(guān)知識(shí)是一個(gè)很好的工具。
這套web項(xiàng)目可以在http://www.dvwa.co.uk/官網(wǎng)由github下載。
DVWA的安裝很簡(jiǎn)單,只要架設(shè)起本地的Tomcat+MySql服務(wù)器,將DVWA部署到相應(yīng)目錄即可。
部署完畢后,登錄應(yīng)用,可以在左側(cè)的菜單中看到如下模塊:
他們分別是Brute Force(暴力(破解))、Command Injection(命令行注入)、CSRF(跨站請(qǐng)求偽造)、File Inclusion(文件包含)、File Upload(文件上傳)、Insecure CAPTCHA(不安全的驗(yàn)證碼)、SQL Injection(SQL注入)、SQL Injection(Blind)(SQL盲注)、Weak Session IDs(弱會(huì)話標(biāo)識(shí))、XSS(DOM)(文檔對(duì)象模型跨站腳本)、XSS(Reflected)(反射型跨站腳本)、XSS(Stored)(存儲(chǔ)型跨站腳本)、JavaScript。
DVWA設(shè)置有4種安全級(jí)別:Low,Medium,High,Impossible,分別對(duì)應(yīng)著這個(gè)應(yīng)用對(duì)于安全性攻擊的防御級(jí)別。并且給出示例代碼讓我們了解相應(yīng)攻擊方式的防御機(jī)制。
今天我們來研習(xí)其中的第一種攻擊方式:Brute Force暴力破解。
Brute Force,即暴力破解,是指黑客利用密碼字典,使用窮舉法猜解出用戶口令,是現(xiàn)在最為廣泛使用的攻擊手法之一。
現(xiàn)實(shí)場(chǎng)景中,窮舉法的范圍太廣,通常會(huì)基于一定的策略和規(guī)則來進(jìn)行窮舉,比如12306曾經(jīng)遭受的“撞庫”攻擊。
撞庫是黑客通過收集互聯(lián)網(wǎng)已泄露的用戶和密碼信息,生成對(duì)應(yīng)的字典表,嘗試批量登陸其他網(wǎng)站后,得到一系列可以登錄的用戶。由于很多用戶習(xí)慣在各大網(wǎng)站和應(yīng)用上使用同一套用戶名和密碼,這就意味著一旦其中某一個(gè)站點(diǎn)的用戶隱私泄漏后,就有可能被黑客收集并用作撞庫的數(shù)據(jù)。
下圖是DVWA的暴力破解界面,將DVWA安全級(jí)別設(shè)為最低:
下面我們通過窮舉的方式來破解這個(gè)應(yīng)用的用戶密碼。手工輸入用戶名密碼顯然是不現(xiàn)實(shí)的,猶如大海撈針,所以考慮使用工具來實(shí)現(xiàn)。
我們使用OWASP ZAP來實(shí)現(xiàn),ZAP的安裝和初始設(shè)置參考:OWASP ZAP使用入門指南
設(shè)置好ZAP代理后,訪問DVWA的Brute Force模塊,用任意用戶名密碼嘗試登錄,即可抓到相關(guān)請(qǐng)求:
下面使用Fuzz功能來實(shí)現(xiàn)對(duì)用戶名密碼窮舉破解:
前文提到,DVWA的優(yōu)點(diǎn)在于它提供了基于PHP的安全防御機(jī)制以供參考。
分別對(duì)比其4各安全級(jí)別的后臺(tái)核心代碼:
基本沒有做任何防御。
加入了SQL字符轉(zhuǎn)義邏輯,避免了SQL注入攻擊,但是不能防御暴力破解。
加入了Token機(jī)制,每次登錄頁面都會(huì)隨機(jī)生成Token字串,那么無腦爆破就不可能了,因?yàn)門oken是完全隨機(jī)的。
但是如果用更復(fù)雜的方法,每次先抓取當(dāng)前頁面Token值再隨即進(jìn)行字典式爆破,仍可以實(shí)現(xiàn)破解。
加入了賬號(hào)鎖定機(jī)制,數(shù)次登錄失敗后,賬號(hào)會(huì)鎖定,那么暴力破解就行不通了??梢哉f這是比較完善的防御機(jī)制。
結(jié)合著上述討論,我們可以總結(jié)一下安全測(cè)試的思路。
比如對(duì)于Brute Force暴力破解攻擊:
第一種思路就是扮演攻擊者的角色,利用已知的攻擊手段嘗試暴力破解。
這是一種滲透性測(cè)試的策略,需要一些專業(yè)測(cè)試工具比如文中的OWASP ZAP來支持。
既然我們知道了暴力破解的幾個(gè)級(jí)別的防御機(jī)制,那么就可以通過代碼審計(jì)的方式來確定被測(cè)應(yīng)用的后臺(tái)邏輯有無相應(yīng)防御機(jī)制了。
聯(lián)系客服