业务逻辑漏洞——浅谈验证码漏洞

在这里插入图片描述
几个月前写的。。。居然一直待在草稿箱
已经忘了之前想用一些cms来复现常见的业务逻辑漏洞这回事了
最近有时间就继续慢慢弄吧~~

一、验证码漏洞

验证码机制主要用于用户身份识别,常见可分为图片验证码、数字验证码、滑动验证码、短信验证码、邮箱验证码等

根据形成原因可分为:

1.验证码暴力破解

1.1 漏洞成因
服务端未对验证时间、次数作出限制,存在爆破的可能性。验证码常用在批量注册,任意用户登录场景。

1.2 测试
1.2.1 测试流程
输入信息–>抓包爆破验证码–>查看爆破是否成功
1.2.2 PHPYunCMS漏洞演示
PHPYun后台验证码可爆破
(1)测试环境
系统:Win10
环境:PHPStudy集成环境
CMS版本:PHPYunv3.1
(2)测试过程
输入正确用户信息
在这里插入图片描述
爆破成功
在这里插入图片描述
1.3 漏洞修复建议
(1)提高验证码的长度、复杂度
(2)可限制错误登录次数、有效时间

2.验证码重复使用

2.1原因
在验证码首次认证成功后没有删除session中的验证码,使得该验证码可被多次成功验证,造成危害

2.2测试:
2.2.1 测试流程
填写正确登录信息和验证码–>抓取提交数据包–>重复提交该数据包–>查看是否登录成功–>登录成功则存在验证码重复使用问题
2.2.2 帝国CMS漏洞演示
帝国CMS后台验证码显示重复
(1)测试环境
系统:Windows10
PHPStudy集成环境:PHPv5.3.29+MYSQLv5.5.53
CMS版本:EmpireCMS_6.0
(2)安装CMS
访问http://yoursite/e/install/index.php
安装好后先登录后台页面修改后台验证码显示设置,步骤如图
在这里插入图片描述
同时将后台登录限制增大(eg:100),然后拉到最下方保存设置,退出登录
(3)测试过程
第一步,输入正确信息点击登录时抓包
第二步,通过修改imageField参数的大小来实现暴力提交,自设一个两位数数字字典作为payload
在这里插入图片描述
第三步,查看任意响应包是否登录成功
在这里插入图片描述
从结果来看,暴力重复提交的数据包均登录成功,说明存在验证码重复使用的问题。
经过暴力重复提交后,客户端显示登陆成功
在这里插入图片描述
PHP5.2.17下测试结果同5.3.29
在这里插入图片描述
2.2.3 CMS漏洞分析
(1)原因
自 PHP 4.2.0 起,不再需要用mt_srand() 给随机数发生器播种 ,因为现在是由系统自动完成的,导致帝国cms的验证码会显示一样的字符。
(2)解决方法
在每个文件中找到该行将其删除或注释即可。
Seay源码审计系统中全局搜索mt_srand函数,含有mt_srand的文件为:
在这里插入图片描述

2.3 漏洞修复建议
在一次认证成功后服务器端清空认证成功的ssesion

3.验证码回显

3.1 验证码直接由客户端生成,在回显中显示,可通过浏览器工具直接查看

3.2 分类
3.2.1 在源码中显示
F12审计大法,搜索源码中有无验证码
3.2.2 在COOKIE中显示
抓包时分析COOKIE中是否含有验证码

3.3 测试
3.3.1 测试流程
(1)在源码中显示
(2)在COOKIE中显示
3.3.2 在源码中显示

3.2.3 在COOKIE中显示
以某网站找回密码模块为例
第一步,填写好相关信息并确认提交
在这里插入图片描述
步骤二:确认提交时抓取数据包
在这里插入图片描述
可以看到str_code回显在请求包中
步骤三:forward发送请求包,跳转到输入验证码和新密码页面
步骤四:填写从请求包得到的验证码,成功修改用户密码
在这里插入图片描述
防范:验证码由服务端生成且保存在服务端,不能通过任何API获取

4.验证码绕过

4.1 漏洞成因
由于逻辑设计缺陷,可绕过验证,比如直接删除COOKIE或验证码参数可绕过、当验证不通过清空session时,验证码参数值为空时绕过等。
4.2 分类
4.2.1删除COOKIE绕过
4.3 测试
4.3.1 测试流程
4.3.2 测试环境
4.3.3 CmsEasy演示
CmsEasyv5.5删除COOKIE绕过验证
第一步,输入正确账户信息和错误验证码,登录时抓包
在这里插入图片描述
第二步,删除COOKIE
在这里插入图片描述
客户端登陆成功
在这里插入图片描述
74cms 设计缺陷导致全版本验证码绕过
https://www.secpulse.com/archives/26839.html
修复:在检测用户验证码时,先判断是否存在,是否为空,再判断是否正确

5.验证码自动识别

这类漏洞主要是指图片验证码,可以通过PKAV工具以及bp插件来识别,也可以用python

二、密码找回
1.敏感信息泄露

2.邮箱弱token
3.验证的有效性
4.注册覆盖

三、接口盗用
1.重放

四、账户越权
1、未授权访问
2、越权

五、支付漏洞

六、SSRF

posted @ 2019-12-18 20:28  吃不胖的ruanruan  阅读(4305)  评论(0编辑  收藏  举报