用户密码重置常见安全问题与测试方法汇总

重置密码功能是为了用户可以在忘记密码时重新设置账号凭证的一个有效途径,其本身并未安全问题,但是在重置密码中的验证机制不够完善也就造成了问题的出现,其最主要的原因是用户名,辅助凭证,辅助验证码没有进行统一验证。其可以导致用户账号丢失、信息丢失、财产损失等,对企业来讲,任意账号重置的漏洞将会丢失大量数据,失去用户信任,严重妨碍企业业务,带来巨大的财产损失。

密码重置流程

重置密码的过程,是证明身份并重新设置登录凭证的过程
Step 1:输入账号名以及注册账号时预留的辅助验证凭证(手机号/邮箱)
Step 2:后端服务向该用户绑定的手机号/邮箱等发送验证码,或重置连接(重置连接为了安全性一般具备时效性)
Step 3.0:用户输入验证码,证明操作者是账号所有者,后端进行重置密码
Step 3.1:用户使用重置连接,证明操作者是账号所有者,后端进行重置密码

常见问题汇总

任意验证码发送

当程序发送短信时没有将手机号/邮箱与账号进行匹配,就会导致任意验证码发送问题,攻击者可以用自己手机号码、邮箱收到的重置用验证码,用以重置其它用户的密码。或者利用此功能进行短信轰炸。

严重程度

测试方法

使用与账号不匹配的手机号/邮箱尝试接收验证码,查看是否接收成功,如果成功则存在问题。

修复建议

发送短信验证码时需要
出现阶段:Step 2:后端服务向该用户绑定的手机号/邮箱等发送验证码,或重置连接(重置连接为了安全性一般具备时效性)

任意重置连接发送

当程序发送重置连接时没有将手机号/邮箱与账号进行匹配,就会导致重置连接发送问题,攻击者可以用自己手机号码、邮箱收到的重置连接,用以重置其它用户的密码。或者利用此功能进行短信轰炸。

严重程度

测试方法

使用与账号不匹配的手机号/邮箱尝试接收重置连接,查看是否接收成功,如果成功则存在问题。

修复建议

发送重置内容需要验证重置凭证与账号匹配
出现阶段:Step 2:后端服务向该用户绑定的手机号/邮箱等发送验证码,或重置连接(重置连接为了安全性一般具备时效性)

重置连接过于简单

重置连接过于简单,则容易被攻击者猜测从而直接通过篡改的方式直接模拟其他账号的重置连接,从而达到重置其他账号的目的。

严重程度

测试方法

分析重置连接中是否有明确的用户名标识,或用户id的标识,如果有用户名标识,或id标识易于模拟则存在问题

修复建议

1、重置连接应为后端验证身份后生成的一条重置信息,重置信息保存在数据库或内存中,且具有时效性。单重置密码时先判断数据库或内存中是否存在此重置信息
2、重置连接需要进行加密处理,连接参数应为无法猜测的密文串,而非明文信息
出现阶段:Step 2:后端服务向该用户绑定的手机号/邮箱等发送验证码,或重置连接(重置连接为了安全性一般具备时效性)

最终的重置请求未验证身份(此处才是真正的任意密码重置漏洞)

最终重置请求没有验证用户身份信息。攻击者用自己的手机号码短信验证码走重置流程,最后一步重置请求抓包修改身份信息为其它用户的,从而进行其它用户密码的重置

严重程度

测试方法

1、观察最终的重置密码请求是否为用户名,辅助验证凭证(手机号/邮箱),验证码同时验证,具体关注点

  • 修改密码的请求中是否同时传递了,辅助验证凭证(手机号/邮箱),验证码
  • 辅助验证凭证(手机号/邮箱),验证码正确的情况下,将账号修改为攻击账号
修复建议

最终重置请求需要同步验证账号,凭证,凭证码的匹配情况
出现阶段:Step 3.0:用户输入验证码,证明操作者是账号所有者,后端进行重置密码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

方寸明光

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值