任意用户密码重置的姿势
0x01:验证码不失效
验证码的有效时间没有合理的进行限制,导致一个验证码可以被枚举猜解;举例:我们重置密码需要邮件或短信接受验证码,而这个验证码没有时间限制,可以无限制的重复使用,由此带来了安全问题,攻击者通过验证码枚举获得。
0x02:验证码明文返回
系统会直接在数据包中返回验证码
0x03:验证码未绑定用户
存在A用户接受的验证码可以对B用户进行使用,这是缺少了一种匹配机制,系统没有匹配当前验证码是否匹配用户B,如果用户B不进行该机制匹配判断,就可以利用A用户的验证码来操作B用户。
0x04:可修改验证码接受的邮箱或手机
输入验证码后没有验证手机号、用户、验证码三者之间是否完全匹配,由此会导致利用该机制漏洞进行手机号的篡改。
0x05:本地验证码绕过
客户端验证进行验证码的校验是及其不安全的,本地校验会返回一个判断结果True/false,我们可以在本地修改这个判断结果即可绕过。
0x06:跳过验证步骤
不对步骤进行校验,即在1-3步骤不校验1-2步骤是否完成或通过,导致从1-1可直接跳至1-3步骤
0x07:未校验用户字段
在重置密码验证中,只对手机号/邮箱和验证的关联匹配判断,不匹配判断用户名和手机,由此导致在数据包中利用A用户执行操作,修改数据包中的A用户为B用户
0x08:缺少用户判断
重置密码处利用用户ID来修改密码,通过数据包修改用户的ID值,进行任意用户的密码修改,非常流氓的是通过ID值得枚举,可以修改全数据库得用户密码全重置,完全可以忽视用户名
0x09:Cookie值替换
重置密码处将用户标识和相关字段放入了Cookie中进行存储传递,对Cookie进行判断是否存在或者加密是否正确来重置密码
0x10:修改信息时替换字段值
修改处可以尝试修改隐藏的参数字段值,比如修改用户的ID值/用户名,由此通过A用户的信息修改处来伪造成B用户进行提交,导致B用户的信息被修改。