驗證碼安全問題彙總

wyzsk發表於2020-08-19
作者: 易水寒 · 2015/04/02 9:52

0x00 前言


[email protected] [email protected] 相應的文章,只是覺得應該有個入門級的“測試用例”。本文不涉及OCR,不涉及暴力四六位純數字驗證碼,不涉及沒有驗證碼的情況(神馬?沒有驗證碼?沒有驗證碼還討論什麼,要不人家不 care,要不人家已經胸有成竹有更牛逼的方法)。本文可能會與之前的某些文章有重合,可能與drops的“最嚴肅的安全原創平臺”氣質不符,請在家長指導下閱讀。

首先,我們來看下整個驗證碼實現的原理

圖一

enter image description here

  • 1.客戶端發起一個請求
  • 2.服務端響應並建立一個新的SessionID同時生成一個隨機驗證碼。
  • 3.服務端將驗證碼和SessionID一併返回給客戶端
  • 4.客戶端提交驗證碼連同SessionID給服務端
  • 5.服務端驗證驗證碼同時銷燬當前會話,返回給客戶端結果

0x01 安全問題及案例


根據上面的實現流程,我們大概可以從四個方面入手,客戶端問題、服務端問題、驗證碼本身問題,還有一個驗證碼流程設計問題。

1. 客戶端問題


客戶端生成驗證碼

驗證碼由客戶端js生成並且僅僅在客戶端用js驗證

WooYun: 南開大學資訊入口網站設計不當可以爆破使用者密碼(利用密碼猜使用者)

驗證碼輸出客戶端

輸出在html中(神一樣的程式設計師)

WooYun: 索尼驗證碼實現缺陷

WooYun: 某會考報名系統驗證碼繞過可暴力破解(可導致使用者資訊洩露)

驗證碼輸出在cookie中,這個在烏雲中案例也是比較多的。

WooYun: 吉祥航空任意客票遍歷

WooYun: 5173驗證碼可被繞過

2. 服務端


驗證碼不過期,沒有及時銷燬會話導致驗證碼複用

這個是最常見的,烏雲上面有大量的案例。

WooYun: 蘇寧易購某系統後臺多個超級管理員弱口令(驗證碼可重複利用)

沒有進行非空判斷

很多時候,我們會遺留掉了驗證過程中驗證碼為空的情況

比如去掉cookie中的某些值或者請求中驗證碼引數

WooYun: cmseasy後臺暴力破解驗證碼繞過

WooYun: ecshop後臺暴力破解驗證碼繞過

WooYun: ecshop繞過驗證碼暴利破解2

產生的驗證碼問題集內的答案非常有限 


WooYun: 139郵箱圖驗證碼繞過漏洞(目前圖形驗證碼的可預測案例)

3. 其他型別驗證碼繞過


“除錯功能”還是設計缺陷?

WooYun: 阿里巴巴某員工登入介面驗證碼繞過可撞弱密碼

WooYun: 凡客某處驗證碼繞過漏洞

WooYun: 財付通商戶版登入驗證碼繞過

WooYun: 正方教務管理系統設計錯誤,可繞過驗證碼進行暴破或掃弱口令

“逗你玩”型別

有驗證碼,你輸入什麼 ,它都給你過,不驗證

WooYun: 網宿某站SQL隱碼攻擊漏洞及驗證碼繞過

萬能驗證碼(後門?)

WooYun: 百度空間使用者登入繞過驗證碼驗證

4. 驗證碼太簡單,容易被機器識別


直接引用豬豬俠的兩個金融案例

WooYun: 銀行業(招商銀行)設計缺陷可被窮舉攻擊

WooYun: 光大證券交易系統資金賬號可被窮舉攻擊

0x03修改建議


梳理清楚驗證碼實現邏輯。(包括不限於驗證碼會話及時銷燬等) 驗證碼不要太簡單。扭曲、粘連等。

推薦Google的ReCaptcha

0x04 參考


https://www.owasp.org/index.php/Testing_for_Captcha_(OWASP-AT-008) http://www.mcafee.com/uk/resources/white-papers/foundstone/wp-attacking-captchas-for-fun-profit.pdf http://www.lijiejie.com/safe-issues-of-captcha/ http://*.wooyun.org

最後,祝大家愚人節快樂!

本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!

相關文章