验证码安全问题汇总

0×00 前言



其实drops里面已经有小胖胖@小胖胖要减肥 和A牛@insight-labs 相应的文章,只是觉得应该有个入门级的“测试用例”。本文不涉及OCR,不涉及暴力四六位纯数字验证码,不涉及没有验证码的情况(神马?没有验证码?没有 验证码还讨论什么,要不人家不 care,要不人家已经胸有成竹有更牛逼的方法)。本文可能会与之前的某些文章有重合,可能与drops的“最严肃的安全原创平台”气质不符,请在家长指 导下阅读。

首先,我们来看下整个验证码实现的原理

图一

  • 1.客户端发起一个请求
  • 2.服务端响应并创建一个新的SessionID同时生成一个随机验证码。
  • 3.服务端将验证码和SessionID一并返回给客户端
  • 4.客户端提交验证码连同SessionID给服务端
  • 5.服务端验证验证码同时销毁当前会话,返回给客户端结果

0×01 安全问题及案例



根据上面的实现流程,我们大概可以从四个方面入手,客户端问题、服务端问题、验证码本身问题,还有一个验证码流程设计问题。

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: 光大证券交易系统资金账号可被穷举攻击

0×03修改建议



梳理清楚验证码实现逻辑。(包括不限于验证码会话及时销毁等) 验证码不要太简单。扭曲、粘连等。

推荐Google的ReCaptcha

0×04 参考



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

时间: 2024-11-06 07:37:51

验证码安全问题汇总的相关文章

ThInkPHP验证码不显示,解决方法汇总

出现ThInkPHP验证码不显示的情况 官方提示如下:如果无法显示验证码,请检查:① PHP是否已经安装GD库支持:② 输出之前是否有任何的输出(尤其是UTF8的BOM头信息输出):(打开验证码文件为乱码,也有可能是BOM编码,可查看下方2寻找解决方法)③ Image类库是否正确导入:④ 如果是中文验证码检查是否有拷贝字体文件到类库所在目录: ⑤URL_MODEL模式,有些服务器不支持REWRITE . 针对上面的情况,一一检查 1.可以用phpinfo 查看GD库是否开启,phpinfo打印出

手机验证码接收平台2016年大汇总

一.短信验证码接收运行原理 其实这个平台利用运营商号码池资源(通常这个号码池是没有正式使用的),用于运营商收发短信.验证码接收平台就是模拟手机实现验证码的接收过程. 二.手机验证码接收平台功能 1.可以代替手机收发短信    2.可以批量注册账号    3.可以解绑账号    4.可以绑定账号    5.可以解封账号异常问题 三.2016年可以用的平台 经过2015年我们能够深有体会的就是,这样的验证码接收平台并不如表面上我们了解的这般能够稳定.会因为这样那样的问题原因被网络限制,现在目前还能使

自动化测试--登录页面验证码问题

对于web应 用来说,大部分的系统在用户登录时都要求用户输入验证码,验证码的类型的很多,有字母数字的,有汉字的,甚至还要用户输入一条算术题的答案的,对于系统来 说使用验证码可以有效果的防止采用机器猜测方法对口令的刺探,在一定程度上增加了安全性.但对于测试人员来说,不管是进行性能测试还是自动化测试都是一个 棘手的问题. 下面来谈一下处理验证码的几种方法. 去掉验证码 这是最简单的方法,对于开发人员来说,只是把验证码的相关代码注释掉即可,如果是在测试环境,这样做可省去了测试人员不少麻烦,如果自动化脚

关于web的安全问题

最近学习web安全问题总结如下: 一.跨站脚本攻击(xss) 向web页面插入恶意代码,主要为涉及到用户输入的地方. 永远不要相信用户的输入.需要做检测(比如特殊字符显示时进行转义). 二.跨站点请求伪造(CSRF) 伪造连接请求,在用户不知道的情况下一用户的身份发送请求. 注意点:用token或者验证码检测用户提交 客户端最好用post请求,服务器端也应该用post校验请求方式.

基于python语言的tensorflow的‘端到端’的字符型验证码识别源码整理(github源码分享)

基于python语言的tensorflow的‘端到端’的字符型验证码识别 1   Abstract 验证码(CAPTCHA)的诞生本身是为了自动区分 自然人 和 机器人 的一套公开方法, 但是近几年的人工智能技术的发展,传统的字符验证已经形同虚设. 所以,大家一方面研究和学习此代码时,另外一方面也要警惕自己的互联网系统的web安全问题. Keywords: 人工智能,Python,字符验证码,CAPTCHA,识别,tensorflow,CNN,深度学习 2   Introduction 全自动区

自动化测试如何解决验证码的问题

注意:本标题的"自动化测试" 包括性能测试 与UI级的自动化测试 经常会被问到如何解决验证码的问题,在此记录一下我所知道的几种方式. 对于web应用来说,大部分的系统在用户登录时都要求用户输入验证码,验证码的类型的很多,有字母数字的,有汉字的,甚至还要用户输入一条算术题的答案的,对于系统来说使用验证码可以有效果的防止采用机器猜测方法对口令的刺探,在一定程度上增加了安全性.但对于测试人员来说,不管是进行性能测试还是自动化测试都是一个棘手的问题. 下面来谈一下处理验证码的几种方法. 去掉验

AJAX笔试面试题汇总

AJAX笔试面试题汇总 Javascript 1. 什么是ajax,为什么要使用Ajax(请谈一下你对Ajax的认识) 什么是ajax: AJAX是“Asynchronous JavaScript and XML”的缩写.他是指一种创建交互式网页应用的网页开发技术. Ajax包含下列技术: 基于web标准(standards-based presentation)XHTML+CSS的表示: 使用 DOM(Document Object Model)进行动态显示及交互: 使用 XML 和 XSLT

C#源码大汇总

C#高仿QQ2013可在广域网部署聊天系统GG叽叽 动态显示硬盘分区容量饼图 自定义ProgressBar控件高仿Win8进度条 多皮肤精美在线QQ悬浮客服插件 jQuery仿天猫首页多格焦点图片轮播 jQuery时间轴特效 自动完成菜单.代码提示.输入纠错控件 仿Google浏览器进度条 仿苹果Safari浏览器选项卡自定义TabControl控件 蜂窝大战游戏 C#开源内容管理系统DTcms v3.0正式版源码 ScreenToGif录制屏幕到gif动画 CSS3仿Google Play的垂

CodeIgniter框架——知识点汇总

NO1.学习要点: 一.CodeIgniter 框架的简介 二.CodeIgniter 框架的安装 三.CodeIgniter 框架的目录结构分析 四.CodeIgniter 框架是如何工作的? 五.CodeIgniter 框架中的控制器.视图.模型及数据库操作 六.CodeIgniter 框架中辅助函数.类库.适配器的学习 七.…… NO2. 一.CodeIgniter 是什么? 1.CodeIgniter 是一个应用程序框架 CodeIgniter 是一个为用 PHP 编写网络应用程序的人员