总览

知识点:

  • 找回密码逻辑机制
    • 回显&验证码&指向
  • 验证码验证安全机制
    • 爆破&复用&识别
  • 找回密码
    • 客户端回显&Response状态值&修改重定向
  • 验证码技术
    • 验证码爆破,验证码复用,验证码识别等

详细点:

  • 找回密码流程安全:
    • 用回显状态判断
      • res前端判断不安全
    • 用用户名重定向
      • 修改标示绕过验证
      • 跳过其它验证,最终验证时将用户对象改为B
    • 验证码回显显示
      • 验证码泄漏验证虚设
      • 尝试看验证码是否在数据包体现出来
    • 验证码简单机制
      • 验证码过于简单爆破
      • 尝试无验证码的情况下对目标进行爆破(提交次数不受限制的情况下)
  • 验证码绕过安全:
    • 验证码简单机制
      • 验证码过于简单爆破
    • 验证码重复使用
      • 验证码验证机制绕过
    • 验证码智能识别
      • 验证码图形码被识别
    • 验证码接口调用
      • 验证码触发机制枚举

安全修复方案:

  • 找回机制要进行每一步验证-防绕过重定向
  • 找回机制要进行服务端验证-防res数据修改
  • 找回机制要控制验证码安全-防验证码攻击
  • 验证码接口需验证后被调用-防接口被乱调用
  • 验证码引用智能化人工判断-防验证码被识别
  • 验证码采用时间段生效失效-防验证码被复用

实例

phpun-res值修改&验证码回显&爆破

短信验证码的正确设计:
获取:每一分钟才能触发一次发送验证码,防止接口被他人乱用
获取:每次获取短信验证码时,检测图像验证是否正确,并且在检测后更新图像验证码。
图像验证码防机器确保人工验证码。

  • res修改

    • 绑定手机号时修改 返回状态值 判定通过
    • 前端页面验证如果服务器不认,则绑定失败
    • 如果是依赖前端返回的状态码123那种的,则表示服务器依赖前端验证,前端改什么资料只要修改了状态码,都会成功。
  • 验证码回显

    • 验证码复用等于没有验证码
    • 绑定手机号时验证码前端泄漏被获取
  • 验证码爆破

    • 知道验证码规矩进行无次数限制爆破
    • 前提是不限制验证码次数,并且验证码不会被变化

某APP-res值修改&验证码接口调用&复用

res修改 - 找回密码修改返回状态值判定验证通过
验证码接口调用 - 抓当前发送验证码数据包后调用
验证码复用 - 抓第一次验证通过的验证码进行复用

seacms-验证码识别&找回机制对应值修改

  • 找回机制对应值修改:

    注册两个帐号,尝试找回密码,重置连接重定向绕过
    代码审计后分析Poc:

这个修改"最后的修改密码"指向需要知道源码,否则改不了
其中密码默认是y

member.php?mod=repsw3&repswcode=y&repswname=targetUser

这个cms因为一些特殊原因,无法使用这个cms

// 爆破,复用,识别,接口被调用

不存在复用验证码时:

  • 验证码识别:
    • BP的免费插件:xp_CAPTCHA
https://github.com/c0ny1/captcha-killer
https://github.com/smxiazi/NEW_xp_CAPTCHA

使用环境:windows 10 python3.6.5
依赖的是低于3.6的Py版本

安装完成后,py36版本运行server.py

在数据包:
1.添加字段:
xiapao: 验证码的地址
2.选定变量"密码""验证码"
"验证码"的变量爆破选择"Extension-generated"
然后在Payload Processing点击Select generator选择xp的脚本
3.开始抓包后看server生成的网站
bp会对应的使用验证码,server生成的网站会出现出现对应的验证码
  • burp安装jypython后导入py文件
  • 安装所需库后python运行server.py
  • 抓操作数据包后设置参数设置引用

参考案例:https://www.cnblogs.com/punished/p/14746970.html
应用:爆破密码时,接口调用时,测试其他时等