web 安全事件中,账号,通常是呈现给攻击者的第一接触点,与账号相关的功能若存在缺陷,攻击者可以此获取关键信息和重要功能,如,登录失败的报错信息可判断出是否因账号不存在所致,可被利用枚举有效账号,比如,登录试错无次数限制,可导致暴破密码,又如,注册流程各步骤未严格关联,导致批量注册任意账号,再如,密码找回功能各步骤未严格关联,导致任意账号密码重置。
账号可枚举
服务端未限制高频访问,可枚举有效账号。枚举账号可以将 mobile 参数值定为枚举变量、以常见国人姓名拼音 top500 和常见后台账号作为字典, admin、ceshi 这类后台账号等。
密码可暴破
1.服务端没有密码试错上限的机制 2. 没有对前端的设备指纹做验证 3. 没有对用户的常用设备、地址指纹要校验 4. 校验了,但是是前端校验的
任意账号注册
不验证手机号、用户名的合法性;不对未注册用户的权限做分级管控
任意账号密码找回、重置
1. 验证前端参数和token session 数据库 三方参数的一致性
2. 账号操作权限,可以是接口级、角色级 不能只认证身份
防御措施
通常来说,密码找回逻辑中含有用户标识(用户名、用户 ID、cookie)、接收端(手机、邮箱)、凭证(验证码、token)、当前步骤等四个要素,这四个要素必须完整关联,否则可能导致任意账号密码找回漏洞。另外,服务端应限制枚举等恶意请求。