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