关于验证码的那些漏洞
字数 1694 2025-08-12 11:34:39

验证码安全漏洞全面解析与防御指南

一、短信轰炸漏洞

漏洞原理

短信轰炸漏洞是由于系统未对短信验证码的发送频率、用户及其IP进行合理限制导致的攻击方式。

攻击手法

  1. 基础短信轰炸

    • 使用Burp Suite等工具持续发送验证码请求
    • 无任何限制时可直接重复发送
  2. 并发绕过限制

    • 当系统做了单次请求限制时,可使用并发技术绕过
    • 使用Turbo Intruder等插件进行并发请求
    • 并发次数越大,轰炸效果越显著
  3. Cookie删除绕过

    • 尝试删除Cookie,部分系统仅依赖Cookie判断验证码是否已获取
    • 删除后系统可能认为这是新请求而允许再次发送
  4. 特殊格式绕过

    • 手机号码变形方式:
      • 前后加空格:1388888888813888888888
      • 添加国家代码:861388888888808613888888888008613888888888+8613888888888
      • 添加前缀:0138888888880013888888888
      • 特殊符号:/r/n
    • 修改Cookie或变量值为12位号码(如138888888889),部分短信网关会截取前11位
    • 使用特殊编码格式(如URL编码、Unicode编码等)

防御措施

  • 实施严格的发送频率限制(如1条/分钟,5条/小时)
  • IP和用户维度双重限制
  • 手机号格式严格校验(去除空格、统一格式)
  • 验证码发送前增加图形验证码
  • 相同内容短时间内不重复发送

二、验证码暴力破解漏洞

漏洞原理

服务端未对验证码的有效时间和尝试次数作出限制,导致攻击者可枚举所有可能组合。

攻击手法

  1. 直接暴力破解

    • 4位数字验证码:0000-9999共10000种可能
      • 多线程可在5分钟内完成爆破
    • 6位数字验证码:000000-999999共1000000种可能
      • 爆破时间约为4位验证码的100倍
  2. 绕过防护措施

    • 修改请求参数绕过前端限制
    • 使用IP轮换规避IP封锁
    • 结合其他漏洞(如验证码回显)提高效率

防御措施

  • 设置合理的验证码有效期(通常2-5分钟)
  • 限制单个验证码尝试次数(如5次错误后失效)
  • 增加错误尝试锁定机制
  • 使用复杂验证码(字母数字混合、干扰元素)
  • 重要操作使用多因素认证

三、验证码回显漏洞

漏洞原理

验证码直接显示在HTTP响应包中,攻击者无需破解即可直接获取。

攻击手法

  • 分析HTTP请求响应,查找验证码字段
  • 可能出现在:响应体、Header、Cookie等位置

防御措施

  • 验证码仅在服务端校验,不返回客户端
  • 敏感信息脱敏处理
  • 使用HTTPS防止中间人截获

四、验证码绕过漏洞

漏洞原理

系统未正确验证用户与手机号的绑定关系,导致可修改接收验证码的手机号。

攻击手法

  1. 修改绑定手机号

    • 正常流程:向绑定手机发送验证码
    • 攻击方法:拦截请求,修改手机号为攻击者控制的号码
  2. 参数篡改

    • 修改请求中的手机号参数
    • 修改用户ID等关联参数

防御措施

  • 严格校验用户与手机号的绑定关系
  • 重要操作增加二次确认
  • 使用签名机制防止参数篡改
  • 关键参数服务端校验

五、验证码转发漏洞

漏洞原理

系统处理多个手机号时存在缺陷,导致验证码可同时发送给非预期号码。

攻击手法

  • 添加额外手机号参数:
    • 使用逗号分隔:13888888888,13999999999
    • 系统可能解析为数组同时发送
  • 修改参数为数组格式

防御措施

  • 严格校验手机号参数格式
  • 限制单次请求只能发送到一个号码
  • 验证手机号归属与用户关系
  • 重要操作增加确认流程

综合防御建议

  1. 输入验证

    • 严格校验手机号格式(正则表达式)
    • 去除前后空格等特殊字符
    • 统一转换为标准格式
  2. 频率控制

    • IP维度限制:如每个IP每小时最多发送10次
    • 用户维度限制:如每个手机号每天最多发送5次
    • 全局阈值报警
  3. 安全设计

    • 验证码生命周期管理(时效性、单次性)
    • 不返回客户端,仅服务端校验
    • 重要操作结合多种验证方式
  4. 监控审计

    • 异常发送行为监控
    • 日志完整记录
    • 实时报警机制
  5. 业务安全

    • 不同业务场景设置不同安全等级
    • 资金类操作增加多重验证
    • 定期安全审计与渗透测试

通过全面实施这些防御措施,可有效防范各类验证码相关安全漏洞,保障系统安全。

验证码安全漏洞全面解析与防御指南 一、短信轰炸漏洞 漏洞原理 短信轰炸漏洞是由于系统未对短信验证码的发送频率、用户及其IP进行合理限制导致的攻击方式。 攻击手法 基础短信轰炸 使用Burp Suite等工具持续发送验证码请求 无任何限制时可直接重复发送 并发绕过限制 当系统做了单次请求限制时,可使用并发技术绕过 使用Turbo Intruder等插件进行并发请求 并发次数越大,轰炸效果越显著 Cookie删除绕过 尝试删除Cookie,部分系统仅依赖Cookie判断验证码是否已获取 删除后系统可能认为这是新请求而允许再次发送 特殊格式绕过 手机号码变形方式: 前后加空格: 13888888888 、 13888888888 添加国家代码: 8613888888888 、 08613888888888 、 008613888888888 、 +8613888888888 添加前缀: 013888888888 、 0013888888888 特殊符号: /r 、 /n 等 修改Cookie或变量值为12位号码(如 138888888889 ),部分短信网关会截取前11位 使用特殊编码格式(如URL编码、Unicode编码等) 防御措施 实施严格的发送频率限制(如1条/分钟,5条/小时) IP和用户维度双重限制 手机号格式严格校验(去除空格、统一格式) 验证码发送前增加图形验证码 相同内容短时间内不重复发送 二、验证码暴力破解漏洞 漏洞原理 服务端未对验证码的有效时间和尝试次数作出限制,导致攻击者可枚举所有可能组合。 攻击手法 直接暴力破解 4位数字验证码:0000-9999共10000种可能 多线程可在5分钟内完成爆破 6位数字验证码:000000-999999共1000000种可能 爆破时间约为4位验证码的100倍 绕过防护措施 修改请求参数绕过前端限制 使用IP轮换规避IP封锁 结合其他漏洞(如验证码回显)提高效率 防御措施 设置合理的验证码有效期(通常2-5分钟) 限制单个验证码尝试次数(如5次错误后失效) 增加错误尝试锁定机制 使用复杂验证码(字母数字混合、干扰元素) 重要操作使用多因素认证 三、验证码回显漏洞 漏洞原理 验证码直接显示在HTTP响应包中,攻击者无需破解即可直接获取。 攻击手法 分析HTTP请求响应,查找验证码字段 可能出现在:响应体、Header、Cookie等位置 防御措施 验证码仅在服务端校验,不返回客户端 敏感信息脱敏处理 使用HTTPS防止中间人截获 四、验证码绕过漏洞 漏洞原理 系统未正确验证用户与手机号的绑定关系,导致可修改接收验证码的手机号。 攻击手法 修改绑定手机号 正常流程:向绑定手机发送验证码 攻击方法:拦截请求,修改手机号为攻击者控制的号码 参数篡改 修改请求中的手机号参数 修改用户ID等关联参数 防御措施 严格校验用户与手机号的绑定关系 重要操作增加二次确认 使用签名机制防止参数篡改 关键参数服务端校验 五、验证码转发漏洞 漏洞原理 系统处理多个手机号时存在缺陷,导致验证码可同时发送给非预期号码。 攻击手法 添加额外手机号参数: 使用逗号分隔: 13888888888,13999999999 系统可能解析为数组同时发送 修改参数为数组格式 防御措施 严格校验手机号参数格式 限制单次请求只能发送到一个号码 验证手机号归属与用户关系 重要操作增加确认流程 综合防御建议 输入验证 严格校验手机号格式(正则表达式) 去除前后空格等特殊字符 统一转换为标准格式 频率控制 IP维度限制:如每个IP每小时最多发送10次 用户维度限制:如每个手机号每天最多发送5次 全局阈值报警 安全设计 验证码生命周期管理(时效性、单次性) 不返回客户端,仅服务端校验 重要操作结合多种验证方式 监控审计 异常发送行为监控 日志完整记录 实时报警机制 业务安全 不同业务场景设置不同安全等级 资金类操作增加多重验证 定期安全审计与渗透测试 通过全面实施这些防御措施,可有效防范各类验证码相关安全漏洞,保障系统安全。