menu arrow_back 湛蓝安全空间 |狂野湛蓝,暴躁每天 chevron_right ... chevron_right 011-web chevron_right 03-验证码安全问题汇总.md
  • home 首页
  • brightness_4 暗黑模式
  • cloud
    xLIYhHS7e34ez7Ma
    cloud
    湛蓝安全
    code
    Github
    03-验证码安全问题汇总.md
    4.75 KB / 2021-07-17 00:01:38
        # 验证码安全问题汇总
    
    0x00 前言
    =======
    
    * * *
    
    其实drops里面已经有小胖胖@小胖胖要减肥和A牛@insight-labs 相应的文章,只是觉得应该有个入门级的“测试用例”。本文不涉及OCR,不涉及暴力四六位纯数字验证码,不涉及没有验证码的情况(神马?没有验证码?没有验证码还讨论什么,要不人家不 care,要不人家已经胸有成竹有更牛逼的方法)。本文可能会与之前的某些文章有重合,可能与drops的“最严肃的安全原创平台”气质不符,请在家长指导下阅读。
    
    首先,我们来看下整个验证码实现的原理
    
    图一
    
    ![enter image description here](http://drops.javaweb.org/uploads/images/c95721c7e75f0c3f4cd0b9d727f3651ef856387a.jpg)
    
    *   1.客户端发起一个请求
    *   2.服务端响应并创建一个新的SessionID同时生成一个随机验证码。
    *   3.服务端将验证码和SessionID一并返回给客户端
    *   4.客户端提交验证码连同SessionID给服务端
    *   5.服务端验证验证码同时销毁当前会话,返回给客户端结果
    
    0x01 安全问题及案例
    ============
    
    * * *
    
    根据上面的实现流程,我们大概可以从四个方面入手,客户端问题、服务端问题、验证码本身问题,还有一个验证码流程设计问题。
    
    1. 客户端问题
    --------
    
    * * *
    
    ### 客户端生成验证码
    
    验证码由客户端js生成并且仅仅在客户端用js验证
    
    [WooYun: 南开大学信息门户网站设计不当可以爆破用户密码(利用密码猜用户)](http://www.wooyun.org/bugs/wooyun-2014-082411)
    
    ### 验证码输出客户端
    
    输出在html中(神一样的程序员)
    
    [WooYun: 索尼验证码实现缺陷](http://www.wooyun.org/bugs/wooyun-2012-06634)
    
    [WooYun: 某会考报名系统验证码绕过可暴力破解(可导致用户信息泄露)](http://www.wooyun.org/bugs/wooyun-2014-063644)
    
    ### 验证码输出在cookie中,这个在乌云中案例也是比较多的。
    
    [WooYun: 吉祥航空任意客票遍历](http://www.wooyun.org/bugs/wooyun-2014-086797)
    
    [WooYun: 5173验证码可被绕过](http://www.wooyun.org/bugs/wooyun-2012-05151)
    
    2. 服务端
    ------
    
    * * *
    
    ### 验证码不过期,没有及时销毁会话导致验证码复用
    
    这个是最常见的,乌云上面有大量的案例。
    
    [WooYun: 苏宁易购某系统后台多个超级管理员弱口令(验证码可重复利用)](http://www.wooyun.org/bugs/wooyun-2015-093065)
    
    ### 没有进行非空判断
    
    很多时候,我们会遗留掉了验证过程中验证码为空的情况
    
    比如去掉cookie中的某些值或者请求中验证码参数
    
    [WooYun: cmseasy后台暴力破解验证码绕过](http://www.wooyun.org/bugs/wooyun-2014-083050)
    
    [WooYun: ecshop后台暴力破解验证码绕过](http://www.wooyun.org/bugs/wooyun-2014-082981)
    
    [WooYun: ecshop绕过验证码暴利破解2](http://www.wooyun.org/bugs/wooyun-2013-025065)
    
    ### 产生的验证码问题集内的答案非常有限 

    
    [WooYun: 139邮箱图验证码绕过漏洞(目前图形验证码的可预测案例)](http://www.wooyun.org/bugs/wooyun-2013-025245)
    
    3. 其他类型验证码绕过
    ------------
    
    * * *
    
    ### “调试功能”还是设计缺陷?
    
    [WooYun: 阿里巴巴某员工登录接口验证码绕过可撞弱密码](http://www.wooyun.org/bugs/wooyun-2014-071289)
    
    [WooYun: 凡客某处验证码绕过漏洞](http://www.wooyun.org/bugs/wooyun-2012-014563)
    
    [WooYun: 财付通商户版登录验证码绕过](http://www.wooyun.org/bugs/wooyun-2013-026219)
    
    [WooYun: 正方教务管理系统设计错误,可绕过验证码进行暴破或扫弱口令](http://www.wooyun.org/bugs/wooyun-2013-021692)
    
    ### “逗你玩”类型
    
    有验证码,你输入什么 ,它都给你过,不验证
    
    [WooYun: 网宿某站SQL注入漏洞及验证码绕过](http://www.wooyun.org/bugs/wooyun-2013-020517)
    
    万能验证码(后门?)
    
    [WooYun: 百度空间用户登录绕过验证码验证](http://www.wooyun.org/bugs/wooyun-2012-05095)
    
    4. 验证码太简单,容易被机器识别
    -----------------
    
    * * *
    
    直接引用猪猪侠的两个金融案例
    
    [WooYun: 银行业(招商银行)设计缺陷可被穷举攻击](http://www.wooyun.org/bugs/wooyun-2015-092497)
    
    [WooYun: 光大证券交易系统资金账号可被穷举攻击](http://www.wooyun.org/bugs/wooyun-2015-092415)
    
    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
    
    最后,祝大家愚人节快乐!
    
    links
    file_download