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

    xiaoxiao2025-09-24  44

    几个月前写的。。。居然一直待在草稿箱 已经忘了之前想用一些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

    最新回复(0)