之前安全测试最爱挖的就是任意用户密码重置,今天看了carry_your师傅在ichunqiu上的视频文字总结一下任意用户密码重置的10种姿式:html
视频案例中输入手机号码、图片验证码就能够获取短信验证码,而且新密码也是在一个页面中,可是输入短信验证码以后,后端有个请求会判断短信验证码是否正确,错误的话页面会有提醒。攻击者能够用这个请求来爆破验证码,获取到正确的短信验证码以后就能够重置任意用户密码了。前端
缺陷主要是两个方面,第一,未对短信验证码的失效时间进行限制;第二,功能设计存在缺陷,若是设计成整个功能只用最后一个请求,包含注册手机号码、图片验证码、短信 验证码、新密码,对这个请求中手机号码、短信验证码的匹配以及短信验证码的正确性进行验证,攻击者就没办法进行爆破。固然前提是有正确运用图片验证码。后端
攻击者知道被攻击用户的手机号码,获取短信验证码,抓包就能够在回显中看到用户收到的重置用的短信验证码。安全
攻击者用本身手机号码收到的重置用短信验证码能够重置其它用户的密码。cookie
只验证码了手机号码、短信验证码是否匹配,最终重置密码是根据用户名来重置的。攻击者重置用户a的密码,获取短信验证码的时候将手机号码修改为本身帐号对应的,获取到对应的正确短信验证码,而后输入短信验证码,因为只验证了手机号码以及短息验证码是否匹配,从而能够成功绕太短信验证码限制来重置用户a的密码。session
经过修改请求回显来绕过,常见重置姿式之一,也能够用于绕过一些其它的前端验证,好比存储xss,参数的合法性验证若是经过前端来完成,也是能够用这种姿式绕过的。xss
这种通常发生在多个步骤重置的过程当中,未对步骤1,2进行校验,经过修改url直接绕太短信验证码的校验步骤,直接进入重置页面进行重置。测试
跟方法4差很少,最终重置请求没有验证用户身份信息。攻击者用本身的手机号码短信验证码走重置流程,最后一步重置请求抓包修改身份信息为其它用户的,从而进行其它用户密码的重置。url
用户登录成功以后可修改本身的密码,修改请求只须要输入新密码,请求中未验证当前用户的cookie、session、id等身份信息,能够经过修改id等来重置其它用户的密码。设计
重置请求参数中没有用户名、手机号码、id等身份标识,惟一的身份标识是在cookie中。攻击者用本身的帐号进行重置,最后重置请求中替换掉请求中的cookie进行其它用户密码的重置。
邮箱重置密码或者手机号码重置密码的时候,请求中没有明显的身份标识,能够尝试增长参数值来测试是否存在MVC数据对应自动绑定漏洞。好比增长email参数及对应的自用邮箱做为参数值,看看是否能收到密码重置连接。有关这个漏洞能够看看carry_your师傅视频中的案例,以及CF_HB发过的案例,也能够看看CplusHua有关模糊测试的ppt。
carry_your课程连接:
https://www.ichunqiu.com/course/59045
(图文版)任意用户密码重置的10种常见姿式: