分享一个验证码暴力撞库漏洞的案例

本文介绍了一个利用验证码暴力破解实现密码重置的安全漏洞案例。通过详细分析攻击过程和技术手段,揭示了验证码验证机制中存在的缺陷,并提出了相应的改进措施。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

记录一个验证码暴力破解的案例,安全问题不容忽视呀。

某公司接到用户反馈,应用存在安全漏洞,通过技术手段可以在无手机情况下,获取验证码,直接修改密码成功。如果用户密码被他人修改成功,直接涉及到资产损失问题,无疑是一个非常严重的漏洞。

通过跟用户交流,他是通过暴力撞库的手段,去匹配正确验证码,由于后端服务没有做次数限制,所以可多次试错,通过程序发送请求,很容易就得到正确的验证码,从而修改用户密码。


回过头,看看正常的密码重置流程

  • 进入用户手机号登录页面
  • 点击「忘记密码」 ,输入手机号
  • 接收四位数验证码,填写验证码
  • 后端对验证码进行校验
  • 校验通过后,设置新密码
  • 使用新密码登录账号

漏洞演练

先去注册账号,如果手机号已存在,会提示当前用户已经注册,通过随机生成手机号的方式,去测试是否注册过当前应用,如果已注册,就进入忘记密码页面,通过手机号验证码方式找回账号。

忘记密码页面,输入上面的手机号,点击发送验证码后,后端会下发验证码到该手机号上,这个验证码现在只有两个人知道:

  • 手机号主本人
  • 后端服务

当然是不可能直接打电话给号主本人要验证码的,所以从后端服务下手。

随便输入四位数验证码,点击重置密码,会发送校验验证码的接口,请求内附带上客户端输入的验证码,抓包该请求,通过人为构造验证码的方式,进行撞库,直到成功。

由于验证码是四位数字,所以范围锁定在 0000~9999 内,不断请求,消耗数字就可以了,直到响应内返回成功的状态及 token 字符串。

image-20211102200450457

将 token 字符串、新密码、手机号作为参数传递给更改密码的接口,请求成功后,密码修改成功。

问题分析

1、接口验证码参数为什么没有加密?

这个验证码参数其实是做了加密处理,但是由于在非常老的历史版本上,使用明文传输,为了兼容,所以在低版本的请求上,通过明文传参后端是正常接收并处理的。

2、验证码校验接口,次数没有限制?

这才是根本原因,用户账号是非常重要和基础的业务,后端在更改密码的接口上没有次数限制和风控,应该在试错 N 次后,直接取消本次验证码校验,直接认为失败。


该问题属于安全范畴,日常工作根本不会去注意。这也反映出测试同学在日常工作中,需要通过各种复杂的业务问题,来提高预知风险的能力,丰富项目测试的经验,这才是真正的工作经验。

我认为上述是一个比较好的案例,分享给大家,共同学习。

另外,安利一个好用的接口测试工具 – burp suite

在设计体育场馆在线售票系统时,用户登录功能的安全性至关重要,涉及到用户隐私和交易安全。推荐查阅《web课程设计报告-体育场馆在线售票管理信息系统的设计与实现.docx》,这份资料详细讲解了系统的整体设计,包括安全机制的实现。 参考资源链接:[web课程设计报告-体育场馆在线售票管理信息系统的设计与实现.docx](https://wenku.youkuaiyun.com/doc/qqr7qe3ipp?spm=1055.2569.3001.10343) 为了确保用户登录的安全性,通常需要实现以下几个关键点: 1. 使用HTTPS协议:通过SSL/TLS加密,确保用户数据在传输过程中的安全。 2. 密码加密存储:用户密码应该以明文形式存储在数据中,而应该使用强哈希函数(如bcrypt)进行加密。 3. 密码复杂度验证:要求用户设置足够复杂的密码,包括大小写字母、数字和特殊字符,并限制密码尝试次数,防止暴力破解。 4. 双因素认证:增加一层安全措施,比如短信验证码或邮箱验证码,来确保登录请求是由用户本人发起的。 5. 会话管理:使用安全的会话管理机制,比如生成安全的Session ID,通过HttpOnly和Secure属性来防止跨站脚本攻击(XSS)和跨站请求伪造(CSRF)。 6. 前端输入验证:在客户端进行输入验证,防止SQL注入等攻击。 7. 定期更新和维护:定期更新系统和依赖的,修复已知的安全漏洞。 具体实现时,可以结合这些技术细节,并参考《web课程设计报告-体育场馆在线售票管理信息系统的设计与实现.docx》中的实践案例,以确保系统的安全性。通过这些措施,可以有效地提升在线售票系统的用户登录安全性,保障用户的利益和系统数据的安全。在掌握了这些基础知识后,如果你想要进一步了解更高级的安全措施,可以继续查阅更专业的安全技术文档或参考更多的系统实现案例。 参考资源链接:[web课程设计报告-体育场馆在线售票管理信息系统的设计与实现.docx](https://wenku.youkuaiyun.com/doc/qqr7qe3ipp?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值