本文中提供的例子均來自網絡已公開測試的例子,僅供參考。
說起暴力破解,它其實就是利用大量猜測和窮舉的方式來嘗試獲取用戶口令的攻擊方式,如果身份驗證模塊設計的不好攻擊者可以利用自動化攻擊進行暴力破解,大大增加了密碼被破解的風險。所以在日常測試或者挖洞的過程中,對于登錄、注冊等功能,我們很容易會聯想到暴力破解攻擊??偨Y了身份驗證模塊常見的幾種暴力破解攻擊場景。
無任何保護機制:?
現在互聯網上還是存在挺多的站點并沒有對登錄、注冊、重置密碼之類的功能進行一定的防護,所以當碰到沒有驗證碼的,沒有對輸錯密碼次數進行限制,而且還是明文傳輸的系統,二話不說先是一頓暴力破解。?
舉個栗子:?
① 登錄的時候發現沒有任何的防護措施。?
②抓取登錄的數據包,發現用戶名密碼明文傳輸。?
③使用burp suite的intruder的功能對j_loginid字段進行爆破。?
④使用弱密碼及常見用戶名進行爆破,長度為495的,為爆破成功的。?
⑤使用用戶名密碼可成功進入系統。?
鎖定機制繞過:?
部分系統會有一些防護措施,比如超過一定的錯誤次數會將賬號進行鎖定,或者是某IP頻繁的進行登錄操作會將IP封了。這種情況下我們就可以進行撞庫攻擊。撞庫攻擊一般是是指黑客通過收集互聯網已泄露的用戶和密碼信息,生成對應的字典表,嘗試批量登陸其他網站后,得到一系列可以登錄的用戶。我們一般會使用一些常見的弱密碼去遍歷用戶名,可以得到一些用弱口令的用戶。?
舉個栗子:?
① 訪問目標站點,發現該站點無驗證碼。?
②通過抓包發現,用戶名密碼明文傳輸。?
③直接暴力破解發現,該系統在多次失敗登錄的情況下會出現驗證碼,而且會鎖定賬號。因此我們決定采用撞庫的方法,通過弱密碼去遍歷用戶名。?
④通過弱密碼遍歷出的賬號可成功登錄。?
驗證碼繞過:?
常見的兩種驗證機制是圖片驗證碼和短信驗證碼。設置驗證碼就是為了防止自動化攻擊,但是如果沒有設計好的話就形同虛設。?
圖片驗證碼繞過:?
常見的幾種圖片驗證碼被繞過的場景:圖片驗證碼輸入一次正確可重復使用;圖片驗證碼前端校驗;圖片驗證碼可被識別;驗證碼信息返回客戶端等等。?
舉個栗子:?
①訪問某站,登錄時候,發現驗證碼輸入一次之后不會失效,輸入一次正確后可重復使用。?
②使用burp suite抓包,發現用戶名密碼明文傳輸,使用intruder功能對username和password字段進行暴力破解。?
③返回353的是成功的。?
④得到賬號可成功登錄。?
短信驗證碼繞過:?
有時候登錄的時候用使用的是短信驗證碼,這個時候同樣要注意設計好邏輯,不然很容易被爆破或者繞過。?
舉個栗子:?
① 某系統在注冊的時候需要輸入驗證碼,驗證碼為四位。?
②通過burp suite進行暴力破解短信驗證碼字段,長度為303的數據為正確注冊后返回的數據包。?
③18888888888可成功注冊賬號。?
修復建議:?
以上簡單的介紹了暴力破解的場景,那么要怎么防止被暴力破解呢?簡單的和大家提幾點修復建議:?
1.鎖定機制:如限制單位時間內執行某項操作的次數(如果次數超過則對賬號或IP進行一段時間的鎖定,鎖定時間內不得使用相關功能,應對限制方式、次數和計算方法、鎖定時間等進行明確的說明。)?
2.人機識別措施:如圖片驗證碼、重力感應、短信驗證碼、語音驗證碼等,為了提升用戶體驗,對于一些低風險的操作,可以設定單位時間內執行操作次數的閥值,超過閥值后再進行人機識別措施。?
3.圖片驗證碼不應選擇簡單的數字圖片,應加入干擾線、變形、顏色、漢字或者其他機器較難識別的邏輯來提升人機識別的有效性。?
4.驗證碼的生存周期應為一次性,即無論校驗成功或失敗,驗證碼在一次校驗后就應該失效。?
5.所有的人機識別措施和校驗都應在服務端進行。?
6.驗證過程中不應返回有助于推測正確驗證答案的信息,比如返回驗證碼的內容回客戶端。