以下均为靶场环境
一、任意用户漏洞介绍
1. 漏洞介绍
在登录、注册、密码重置的时候,如果没有严格的限制,可以导致如下的漏洞
1、任意用户密码重置 2、任意用户登录 3、任意用户注册
2. 测试思路
1、首先尝试正常找回密码流程,选择不同的找回方式,记录所有数据包 2、分析数据包,找到敏感部分 3、分析后台找回机制所采用的验证手段 4、修改数据包验证推测
3. 常见方法
验证码不失效 一般情况下找回密码通过手机号码或者邮箱号码找回,短信验证码一般都有过期的时间,如果验证码没有过期时间或者是过期时间太久,通过爆破、枚举的方法找到正确的验证码。
验证凭证回传 验证码一般会发送到手机或者邮箱里,但是由于开发者的失误,通过抓取返回包可以看到验证码
4. 验证码可爆破
验证码可爆破漏洞是指系统设计的验证码机制存在缺陷,允许攻击者通过自动化工具批量尝试可能的验证码组合,最终成功猜解出有效验证码,进而完成密码重置等敏感操作。 当验证码满足 "低复杂度+无限制尝试+长有效期" 三个特征时,就可能被暴力破解:
- 1、低复杂度:如4位纯数字验证码,仅存在10000种可能组合
- 2、无限制尝试:系统未设置错误次数锁定机制,允许无限次提交验证码
- 3、长有效期:验证码有效期过长(如10分钟以上),给攻击者足够的尝试时间攻击者可利用脚本工具按顺序生成所有可能的验证码组合,批量提交请求,直至猜中正确验证码。
5. 验证码为空认证
虽然系统会发送验证码到用户手机,但后端在重置逻辑中错误地接受空验证码,攻击者通过抓包删除或清空 code 字段即可绕过验证并重置密码。
发送到重放器,修改验证码为空
null 空 ,或者删除字段
6. 未绑定认证关系
手机验证码的短信一般来说只能用一次,如果手机验证码和手机号没有绑定认证关系,就会存在以下的情况【 A手机收到的验证码B手机可以使用】 方法:
用自己的手机号注册(重置、登录)--> 收到验证码短暂时间内不使用--> 抓取自己手机号注册(重置、登录)的数据包--> 将自己的手机号改成B的,发送--> 发现登录为B的账号--> 存在未绑定认证关系,即任意用户登录
7. 多账号发送验证码
一次请求可以携带多个目标手机号,后端将为这些手机号生成(或复用)相同的验证码并发送

修改数据包
phone[]=13800138000&phone[]=13800138011 phone=13800138000,13800138011 phone=13800138000&phone=13800138011 phone:13800138000, phone:13800138011,(json格式的) phone[]=13800138000, phone[]=13800138011,(json格式)
如果自己手机能收到验证码,说明存在多账号发送验证码
评论区
评论加载中...