12.4 Response 状态值修改测试
12.4.1 测试原理和方法
Response 状态值修改测试,即修改请求的响应结果来达到密码重置的目的,存在这种
漏洞的网站或者手机 App 往往因为校验不严格而导致了非常危险的重置密码操作。
这种漏洞的利用方式通常是在服务端发送某个密码重置的凭证请求后,出现特定的响
应值,比如 true、1、ok、success 等,网站看到回显内容为特定值后即修改密码,通常这
种漏洞的回显值校验是在客户端进行的,所以只需要修改回显即可。
12.4.2 测试流程
Response 状态值修改测试流程主要是分析服务端校验后的结果,正确和错误分别是
什么样的返回结果,通过修改返回结果为正确来欺骗客户端,以达到密码重置的目的,如
图 12-17 所示。
图 12-17 Response 状态值修改测试流程
步骤一:某网站的找回密码功能需要发送验证码到用户手机,用户输入收到的验证码
即可重置密码。但是如果他的回显值被修改呢?我们来做个测试,输入要找回的目标手机
号,短信认证码可以随便填写,然后单击“找回密码”按钮对该请求抓包,如图 12-18 所
示。
图 12-18 找回密码页面
步骤二:可以看到这个请求包含了 validateCode 和 phone 两个参数,在 Burp Suite 中右
击 intercept 选项,选择 Do intercept→Response to this request,设置后就可以看到这个请求
的回显 Response 包了,如图 12-19 所示,接着单击“Forward”转发这个请求。
图 12-19 设置请求响应拦截
步骤三:转发后可以看到 Response 的回显包已经成功接收到了,但是包返回的值是
false,通常 false 是失败的含义,也就是说服务端校验验证码的时候发现验证码不一致然后
返回了 false 给客户端,这里我们可以尝试修改 false 值为 true,然后单击“Intercept is on”按钮
关闭拦截让数据包正常发送,如图 12-20、图 12-21 所示。
图 12-20 服务端返回 false
步骤四:接着可以看到页面直接跳转到了重置密码页面,如图 12-22 所示,于是轻松
达到了任意密码修改的目的,在这个测试过程中只需要知道目标的账号而不需要知道任何
绑定邮箱或者验证码就可以修改密码。
图 12-21 修改 false 为 true
图 12-22 进入重置密码页面
12.4.3 修复建议
注意不要在前端利用服务端返回的值判断是否可以修改密码,要把整个校验环节交给
服务端验证。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论