账户逻辑漏洞
注册场景
批量注册
- 手机墙真人操作;
- 脚本批量注册;
- 模拟器注册;
任意账号注册
- 用户信息与校验凭证未绑定;
- 不校验用户信息(只需要收入手机号或邮箱即可注册成功);
洗号
- 通过判断用户是否已注册接口来从海量用户中筛选出有效用户;
注册覆盖
低版本的MySQL可以复现
账户A:zhangsan
账户B:zhangsan (张三后面有N个空格)
登录场景
暴力破解
- 不存在任何安全防护措施的情况下任意爆破;
- 存在验证码:验证码逻辑漏洞;
恶意锁定
- 当账户登录错误次数达到限制后,锁定账户N小时不允许登录;
session安全问题
- session会话固定:每次登录都是相同的session;
- session会话注销:用户退出时不注销用户的session;
- session会话超时:session存活时间过长;
cookie仿冒
- cookie结构太过简单,容易被猜测从而导致用户恶意构造,此攻击需要后端不记录用户cookie有效;
登录提示问题
- 洗号:通过判断账号是否存在接口或通过提示信息来从海量用户中筛选出有效用户;
未加密登录传输请求
- 网络监听与劫持
找回密码场景
正常找回密码的4步:
a.输入用户信息
b.用户凭证校验
c.重置密码
d.重置成功
认证凭证暴力破解
在第二步用户凭证校验的过程中,由于凭证过于简单(4位数字)或者失效时间较长、不失效等问题导致攻击者可以进行暴力破解凭证。
常用工具:Burpsuite-Intruder
凭证返回错误
凭证返回在response的header、body中导致可以直接获取凭证。
凭证与用户信息不绑定
在第二步凭证校验中,由于凭证没有与用户的手机或邮箱进行绑定,导致可以用B用户的凭证来校验A用户,导致密码被恶意重置。
邮箱弱Token
常常出现在邮箱找回密码中,Token生成的方式常见有如下几种:
- Unix时间戳
- 用户名、用户名+其他信息
- 常见编码或加密:md5、base64等等
Cookie覆盖
用A用户的账号重置到第三步,不要关闭页面;
在同一个浏览器中新开一个页面,用B用户的账号重置到第二步,不要关闭页面;
刷新第一个页面(也就是A用户的重置页面),这个时候就可以重置B用户的密码了;
前端校验
- 在第二步凭证校验代码由前端JS或其他语言编写,校验结果可控。
找回步骤上下文越权
- 上下文越权这里指,从第一步直接跳到第三步,从而绕过了用户凭证校验的过程。
万能校验码
- 万能验证码:000000/666666/888888
越权访问
水平越权
- 相同角色间用自己的身份访问他人信息或资源;
垂直越权
- 不同角色间访问自身不能访问的信息或资源;
炸弹攻击
通常出现炸弹攻击的位置如下:(欢迎补充)
- 注册用户
- 激活用户
- 密码找回发送凭证
- 支付类验证身份等二次验证的地方