[email protected] [email protected] 相應的文章,只是覺得應該有個入門級的“測試用例”。本文不涉及OCR,不涉及暴力四六位純數字驗證碼,不涉及沒有驗證碼的情況(神馬?沒有驗證碼?沒有驗證碼還討論什么,要不人家不 care,要不人家已經胸有成竹有更牛逼的方法)。本文可能會與之前的某些文章有重合,可能與drops的“最嚴肅的安全原創平臺”氣質不符,請在家長指導下閱讀。
首先,我們來看下整個驗證碼實現的原理
圖一
根據上面的實現流程,我們大概可以從四個方面入手,客戶端問題、服務端問題、驗證碼本身問題,還有一個驗證碼流程設計問題。
驗證碼由客戶端js生成并且僅僅在客戶端用js驗證
WooYun: 南開大學信息門戶網站設計不當可以爆破用戶密碼(利用密碼猜用戶)
輸出在html中(神一樣的程序員)
WooYun: 某會考報名系統驗證碼繞過可暴力破解(可導致用戶信息泄露)
這個是最常見的,烏云上面有大量的案例。
WooYun: 蘇寧易購某系統后臺多個超級管理員弱口令(驗證碼可重復利用)
很多時候,我們會遺留掉了驗證過程中驗證碼為空的情況
比如去掉cookie中的某些值或者請求中驗證碼參數
WooYun: 139郵箱圖驗證碼繞過漏洞(目前圖形驗證碼的可預測案例)
WooYun: 正方教務管理系統設計錯誤,可繞過驗證碼進行暴破或掃弱口令
有驗證碼,你輸入什么 ,它都給你過,不驗證
萬能驗證碼(后門?)
直接引用豬豬俠的兩個金融案例
梳理清楚驗證碼實現邏輯。(包括不限于驗證碼會話及時銷毀等) 驗證碼不要太簡單。扭曲、粘連等。
推薦Google的ReCaptcha
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
最后,祝大家愚人節快樂!