业务逻辑漏洞探索之暴力破解
本文中提供的例子均來自網(wǎng)絡(luò)已公開測(cè)試的例子,僅供參考。
最近斗哥在整理一些業(yè)務(wù)邏輯漏洞,突然發(fā)現(xiàn)好多問題,所以決心和大家一起探討探討,今天先從暴力破解開始。
說起暴力破解,它其實(shí)就是利用大量猜測(cè)和窮舉的方式來嘗試獲取用戶口令的攻擊方式,如果身份驗(yàn)證模塊設(shè)計(jì)的不好攻擊者可以利用自動(dòng)化攻擊進(jìn)行暴力破解,大大增加了密碼被破解的風(fēng)險(xiǎn)。所以在日常測(cè)試或者挖洞的過程中,對(duì)于登錄、注冊(cè)等功能,我們很容易會(huì)聯(lián)想到暴力破解攻擊。斗哥呢也總結(jié)了身份驗(yàn)證模塊常見的幾種暴力破解攻擊場(chǎng)景。
<ignore_js_op>
無任何保護(hù)機(jī)制:
現(xiàn)在互聯(lián)網(wǎng)上還是存在挺多的站點(diǎn)并沒有對(duì)登錄、注冊(cè)、重置密碼之類的功能進(jìn)行一定的防護(hù),所以當(dāng)碰到?jīng)]有驗(yàn)證碼的,沒有對(duì)輸錯(cuò)密碼次數(shù)進(jìn)行限制,而且還是明文傳輸?shù)南到y(tǒng),二話不說先是一頓暴力破解。
舉個(gè)栗子:
① 登錄的時(shí)候發(fā)現(xiàn)沒有任何的防護(hù)措施。
<ignore_js_op>
②抓取登錄的數(shù)據(jù)包,發(fā)現(xiàn)用戶名密碼明文傳輸。
<ignore_js_op>
③使用burp suite的intruder的功能對(duì)j_loginid字段進(jìn)行爆破。
<ignore_js_op>
④使用弱密碼及常見用戶名進(jìn)行爆破,長度為495的,為爆破成功的。
<ignore_js_op>
⑤使用用戶名密碼可成功進(jìn)入系統(tǒng)。
<ignore_js_op>
鎖定機(jī)制繞過:
部分系統(tǒng)會(huì)有一些防護(hù)措施,比如超過一定的錯(cuò)誤次數(shù)會(huì)將賬號(hào)進(jìn)行鎖定,或者是某IP頻繁的進(jìn)行登錄操作會(huì)將IP封了。這種情況下我們就可以進(jìn)行撞庫攻擊。撞庫攻擊一般是是指黑客通過收集互聯(lián)網(wǎng)已泄露的用戶和密碼信息,生成對(duì)應(yīng)的字典表,嘗試批量登陸其他網(wǎng)站后,得到一系列可以登錄的用戶。我們一般會(huì)使用一些常見的弱密碼去遍歷用戶名,可以得到一些用弱口令的用戶。
舉個(gè)栗子:
① 訪問目標(biāo)站點(diǎn),發(fā)現(xiàn)該站點(diǎn)無驗(yàn)證碼。
<ignore_js_op>
②通過抓包發(fā)現(xiàn),用戶名密碼明文傳輸。
<ignore_js_op>
③直接暴力破解發(fā)現(xiàn),該系統(tǒng)在多次失敗登錄的情況下會(huì)出現(xiàn)驗(yàn)證碼,而且會(huì)鎖定賬號(hào)。因此我們決定采用撞庫的方法,通過弱密碼去遍歷用戶名。
<ignore_js_op>
④通過弱密碼遍歷出的賬號(hào)可成功登錄。
<ignore_js_op>
驗(yàn)證碼繞過:
常見的兩種驗(yàn)證機(jī)制是圖片驗(yàn)證碼和短信驗(yàn)證碼。設(shè)置驗(yàn)證碼就是為了防止自動(dòng)化攻擊,但是如果沒有設(shè)計(jì)好的話就形同虛設(shè)。
圖片驗(yàn)證碼繞過:
常見的幾種圖片驗(yàn)證碼被繞過的場(chǎng)景:圖片驗(yàn)證碼輸入一次正確可重復(fù)使用;圖片驗(yàn)證碼前端校驗(yàn);圖片驗(yàn)證碼可被識(shí)別;驗(yàn)證碼信息返回客戶端等等。
舉個(gè)栗子:
①訪問某站,登錄時(shí)候,發(fā)現(xiàn)驗(yàn)證碼輸入一次之后不會(huì)失效,輸入一次正確后可重復(fù)使用。
<ignore_js_op>
②使用burp suite抓包,發(fā)現(xiàn)用戶名密碼明文傳輸,使用intruder功能對(duì)username和password字段進(jìn)行暴力破解。
<ignore_js_op>
③返回353的是成功的。
<ignore_js_op>
④得到賬號(hào)可成功登錄。
<ignore_js_op>
短信驗(yàn)證碼繞過:
有時(shí)候登錄的時(shí)候用使用的是短信驗(yàn)證碼,這個(gè)時(shí)候同樣要注意設(shè)計(jì)好邏輯,不然很容易被爆破或者繞過。
舉個(gè)栗子:
① 某系統(tǒng)在注冊(cè)的時(shí)候需要輸入驗(yàn)證碼,驗(yàn)證碼為四位。
<ignore_js_op>
②通過burp suite進(jìn)行暴力破解短信驗(yàn)證碼字段,長度為303的數(shù)據(jù)為正確注冊(cè)后返回的數(shù)據(jù)包。
<ignore_js_op>
③18888888888可成功注冊(cè)賬號(hào)。
<ignore_js_op>
修復(fù)建議:
以上簡單的介紹了暴力破解的場(chǎng)景,那么要怎么防止被暴力破解呢?斗哥簡單的和大家提幾點(diǎn)修復(fù)建議:
1.鎖定機(jī)制:如限制單位時(shí)間內(nèi)執(zhí)行某項(xiàng)操作的次數(shù)(如果次數(shù)超過則對(duì)賬號(hào)或IP進(jìn)行一段時(shí)間的鎖定,鎖定時(shí)間內(nèi)不得使用相關(guān)功能,應(yīng)對(duì)限制方式、次數(shù)和計(jì)算方法、鎖定時(shí)間等進(jìn)行明確的說明。)
2.人機(jī)識(shí)別措施:如圖片驗(yàn)證碼、重力感應(yīng)、短信驗(yàn)證碼、語音驗(yàn)證碼等,為了提升用戶體驗(yàn),對(duì)于一些低風(fēng)險(xiǎn)的操作,可以設(shè)定單位時(shí)間內(nèi)執(zhí)行操作次數(shù)的閥值,超過閥值后再進(jìn)行人機(jī)識(shí)別措施。
3.圖片驗(yàn)證碼不應(yīng)選擇簡單的數(shù)字圖片,應(yīng)加入干擾線、變形、顏色、漢字或者其他機(jī)器較難識(shí)別的邏輯來提升人機(jī)識(shí)別的有效性。
4.驗(yàn)證碼的生存周期應(yīng)為一次性,即無論校驗(yàn)成功或失敗,驗(yàn)證碼在一次校驗(yàn)后就應(yīng)該失效。
5.所有的人機(jī)識(shí)別措施和校驗(yàn)都應(yīng)在服務(wù)端進(jìn)行。
6.驗(yàn)證過程中不應(yīng)返回有助于推測(cè)正確驗(yàn)證答案的信息,比如返回驗(yàn)證碼的內(nèi)容回客戶端。
大家有任何問題可以提問,更多文章可到i春秋論壇閱讀喲~
總結(jié)
以上是生活随笔為你收集整理的业务逻辑漏洞探索之暴力破解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 正则表达式——基础
- 下一篇: 如何准备性能测试数据
