Web安全

逻辑类漏洞——任意密码重置测试

2019-06-10  本文已影响1人  宁澈1111

1、验证码不失效

原因:找回密码时,获取的验证码缺少时间限制,仅判断验证码是否正确,未判断是否过期,测试方法:可通过遍历(暴力破解)找到真正的验证码,完成验证。

2、验证码直接返回

原因:输入手机号点击获取验证码,验证码在客户端生成,并直接返回在Response中。

测试方法:直接输入目标手机号,点击获取验证码,观察Response数据包中是否有验证码即可。

3、缺少身份判断

原因:重置密码时,未对用户身份进行有效验证。

测试方法:

1A用户输入自己收到的验证码,输入B用户的手机号,达到重置B用户密码的目的:在找回密码页面输入A用户的手机号,点击获取验证码,A用户收到了服务器发送的验证码;在输入验证码页面输入接收到的验证码,点击下一步,拦截数据包,在数据包中包含手机号字段、验证码字段,其中手机号字段中填充了A用户的手机号,验证码字段中填充了A用户刚刚接收到的验证码,将手机号字段修改为B用户的手机号,转发数据包,进入修改B用户密码的界面。

2、进入重置密码页面,输入新密码,拦截请求包,在请求包中包含用户名字段、新密码字段,篡改用户名字段达到修改其它用户密码的目的

3、进入重置密码页面,输入新密码,拦截请求包,在请求包中包含ID字段、用户名字段、新密码字段,篡改ID字段达到修改其它用户密码的目的

4、cookie值替换

原因:重置密码最后阶段仅判断cookie是否存在,未判断该cookie有没有通过之前重置密码阶段的验证,可替换cookie重置他人密码。

测试方法:利用目标用户进行重置密码操作,获取目标用户Cookie;利用自己用户进行重置密码操作,在最后一步替换成目标用户的cookie,重置目标用户密码。

5、修改接收验证码的手机或邮箱

原因:仅判断了手机号和验证码是否匹配,未验证手机号和用户名是否匹配

测试方法:输入用户名获取验证码,修改接收验证码的手机号为自己手机号码,接收到验证码,进入重置流程。

6、本地验证绕过

原因:客户端在本地进行用户输入信息是否正确的判断,因此可以修改判断结果,欺骗客户端。

测试方法:重置目标用户名,输入错误验证码(或其他验证信息),修改返回包,把错误改为正确,即可进入重置密码页面。

7、跳过验证步骤

原因:修改密码的步骤没有做校验,可以直接输入最终修改密码的页面,进行修改密码操作。

测试方法:例如进入最终修改密码页面需要3步,最终修改密码链接为,http://AA.BB.CC.com?username=FF&email=EE,可绕过前面的步骤,直接访问最后一步,即以上链接进入重置密码页面。

8、替换字段值

原因:用户在执行修改用户信息的SQL语句时,执行了所有参数的修改。

测试方法:修改用户信息时,抓取数据包,修改数据包的参数(如用户名、密码)和对应的值,达到修改目标用户密码的目的。

测试过程:修改用户信息,拦截数据包,替换数据包中的字段,如将用户别名字段替换成隐藏的用户名字段,修改用户密码字段,达到修改用户名、密码的目的

上一篇下一篇

猜你喜欢

热点阅读