Web 攻防之业务安全:密码找回流程绕过测试
业务安全是指保护业务系统免受安全威胁的措施或手段。广义的业务安全应包括业务运行的软硬件平台(操作系统、数据库,中间件等)、业务系统自身(软件或设备)、业务所提供的服务安全;狭义的业务安全指业务系统自有的软件与服务的安全。
目录:
密码找回流程绕过测试:
测试原理和方法:
测试过程:
第一步:先注册一个自己的账号,用于测试所有过程,在找回密码页面中先输入自己的账号,点击下一步按钮,进入找回密码页面的 RUL 为 GET/account/findPassword.html
第二步: 进入凭证验证流程,这里使用自己的账号,所以直接获取验证凭证,输入后点击下一步。第二步的验证凭证 URL 为 GET/forgetpwd/findPassNext.do
第三步:通过验证以后就可以进入第三步重置密码了。第三步的验证凭证 URL 为 GET/forgetpwd/cmailValidateNext.do
第四步:通过使用自己的账号所有正常顺序流程找回密码,我们也获得到了所有的URL为:
第五步:我们可以尝试在第一步输入账号后进入第二步验证身份页面,在这个页面直接修改 URL 为第三步的 URL,访问看看可不可以直接进入密码重置页面。如果可以,则存在密码找回流程绕过风险.
修复建议:
免责声明:
严禁利用本文章中所提到的技术进行非法攻击,否则后果自负,上传者不承担任何责任。
密码找回流程绕过测试:
测试原理和方法:
很多网站的密码找回功能一般有以下几个步骤:
(1)用户输入找回密码的账号.
(2)校验凭证:向用户发送短信验证码或者找回密码的链接,用户回填验证码或点击链接进入密码重置页面,以此方法证明当前操作是账号的主人.
(3)校验成功进入重置密码页面.
在找回密码逻辑中第二步校验凭证最为重要,不是账号主人是无法收到验证凭证的。试想有没有方法可以要过第二步校验凭证,直接进入第三步重置密码。用户修改密码需要向服务器发送修改密码请求,服务器通过后再修改数据库中对应的密码,所以在测试中我们首先要收集三个步骤的请求接口,重点是收集到最后一步重置密码的接口,这样我们可以直接跳过凭证校验的接口去尝试直接重置密码.
测试过程:
第一步:先注册一个自己的账号,用于测试所有过程,在找回密码页面中先输入自己的账号,点击下一步按钮,进入找回密码页面的 RUL 为 GET/account/findPassword.html
第二步: 进入凭证验证流程,这里使用自己的账号,所以直接获取验证凭证,输入后点击下一步。第二步的验证凭证 URL 为 GET/forgetpwd/findPassNext.do
第三步:通过验证以后就可以进入第三步重置密码了。第三步的验证凭证 URL 为 GET/forgetpwd/cmailValidateNext.do
第四步:通过使用自己的账号所有正常顺序流程找回密码,我们也获得到了所有的URL为:
(1)GET/account/findPassword.html //输入用户账号页面
(2)GET/forgetpwd/findPassNext.do //验证码身份页面
(3)GET/forgetpwd/cmailValidateNext.do //设置新密码页面
第五步:我们可以尝试在第一步输入账号后进入第二步验证身份页面,在这个页面直接修改 URL 为第三步的 URL,访问看看可不可以直接进入密码重置页面。如果可以,则存在密码找回流程绕过风险.
修复建议:
防止跳过验证步骤,一定要在后端逻辑校验中确定上一步流程已经完成了。
学习的书籍:Web 攻防之业务安全实战指南.