【业务安全03】密码找回业务安全

0 前言

1 密码找回流程绕过测试概述

  1. 用户修改密码需要向服务器发送修改密码请求,服务器通过验证后再修改数据库中相应的密码。密码找回常规步骤:
    1. 用户输入找回密码的账号。
    2. 校验凭证:向用户发送短信验证码或者找回密码链接,用户回填验证码或单机链接进入密码重置页面,以此方式证明当前操作时账号主人。
    3. 校验成功进入重置密码页面。
  2. 在上述业务逻辑步骤中,第二步校验凭证尤为重要。绕过思路分析:
    1. 攻击者无法收到相关的校验凭证,那是否存在一些方式绕过第二步直接进入第三步重置密码呢?
    2. 如果无法绕过,那是否第二步存在爆破的可能呢?
    3. 服务端是通过Cookie、Session、Toekn等来判断浏览器是哪个用户,是否存在偷梁换柱的可能?

2 验证码方面

2.1 验证码客户端回显测试

  1. 业务背景:用户登录或密码找回时,需要根据一个图片输入验证码,有些网站程序会选择将验证码回显到响应中,来判断用户输入的验证码是否和响应中的验证码一致,如果一致就会通过验证。
  2. 测试方法:找回密码测试中要注意验证码是否会回显到响应(更多指的是网页代码)中,如果回显到响应中,则认为有漏洞。
  3. 危害:可能会包抓包用于爆破。

2.2 验证码重复利用

  1. 业务背景:用户登录或密码找回时,需要根据一个图片输入验证码,一般情况下,客户端在登录界面输入账号密码验证码并提交,如果成功就进入下一个页面,如果失败就刷新页面(此时验证码因刷新页面而刷新)重新输入。也就是如果服务端在接收到请求后没有自动刷新验证码,就存在客户端不刷新页面就不会刷新验证码的情况,此时就存在验证码重复利用的漏洞。
  2. 测试方法:在测试验证码是否可以被重复利用时,可以用BurpSuite抓一下登录的请求包,发送到Repeater模块中重复发送请求(在BurpSuite中发送请求不会刷新页面),看看第二次发送请求时是否会提示验证码出错,来判断是否存在验证码重复利用的逻辑漏洞。
  3. 危害:可能会包抓包用于爆破。

2.3 验证码暴力破解

  1. 业务背景:找回密码功能模块中,通常会有将用户凭证(验证码)发送到用户自己才可以看到的手机号或者邮箱中,只要用户不泄露就不会被攻击者利用,但是有些应有程序在验证码发送功能模块中验证码的位数及复杂性较弱,也没有对验证码次数限制而导致验证码可以被暴力枚举并修改任意用户密码。
  2. 测试方法:在测试验证码是否可以被暴力枚举时,可以先将验证码多次发送给自己的账号,先观察验证码是否有规律,再观察是否有对验证码的尝试次数进行限制,如果密码规律简单且没有次数限制就容易被爆破。

3 Cookie、Session、Token方面

3.1 Session 覆盖

  1. 业务背景:密码找回业务中也会遇到参数不可控的情况,比如说要修改的用户名或者绑定的手机号无法在提交参数时修改,服务端通过读取当前Session会话来判断要修改密码的账号,这种情况下能否对Session中的内容做修改以达到任意面重置的目的呢?
  2. 例子:有些网站中找回密码功能中,业务逻辑这样的:
    1. 由用户使用手机号进行注册;
    2. 然后服务端向手机发送验证码短信;
    3. 最后用户输入验证码提交后,进入密码重置页面。
  3. Session覆盖测试步骤如下:
    1. 需要准备自己的账号接受凭证(短信验证码);
    2. 获取凭证校验成功后进入密码重置页面;
    3. 在浏览器新标签中重新打开找回密码页面,输入目标手机号;(待攻击对象)
    4. 此时当前SessionID账户已经被覆盖,重新回到第二步中打开的重置密码页面即可重置目标手机号密码。
    5. 如果回到第二步州能成功修改密码则表明存在逻辑漏洞;如果弹出要求输入验证码则说明服务端会对当前Session是否已经进行验证进行校验。

3.2 弱Token设计缺陷测试

  1. 业务背景:在找回密码功能中,很多网站会向用户邮箱发送密码页面连接,用户只需要进入邮箱,打开找回密码邮件中的链接,就可以进入密码重置页面了。
  2. 找回密码的链接通常会加入校验参数来确认链接的有效性,通过校验参数的值与数据库生成的值是否一致来判断当前找回密码的链接是否有效,比如http://www.xxx.com/findpwd?uid=xx-uu-sxx&token=xxxxxx

4 Response 状态值修改测试

  1. 概述:Response状态值修改测试,即修改请求的响应结果来达到密码重置的目的,存在这种漏洞的网站或手机APP往往因为校验不严格而导致非常危险的密码重置操作。
  2. 测试方法:在服务端发送某个密码重置的凭证请求后,出现特定的响应值,比如true、1、ok、success等表示对错的值,网站看到回显内容为特定值后就会修改密码,通常这种漏洞的回显值校验是在客户端进行的,所以只要修改回显即可。

5 接口参数账号修改

  1. 业务背景:找回密码功能逻辑中常常会在用户修改密码接口提交参数中存在传递用户账号的参数,而用户账号参数作为一个可控变量是可以被篡改的,从而导致修改账号密码的凭证或修改的目标账号出现偏差,最终造成任意账号密码修改的漏洞。
  2. 接口参数账号修改测试为拦截前端请求,通过修改请求内的账号ID、名称或邮箱、手机号等参数,将修改后的数据发送给服务器进行欺骗以达到密码重置的目的。
  3. 例子:以metinfov4.0为例,参考文章《接口参数账号修改漏洞——以metinfov4.0为例

6 总结

  1. 了解密码找回相关业务安全风险点;
  2. 掌握相关风险点的测试方法。
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值