安全测试之忘记密码存在的问题

本文探讨了忘记密码功能中存在的安全漏洞,包括未加密的验证码、过度依赖MD5加密及暴力破解等问题,并提供了防御措施。

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

忘记密码这个功能相对于登录功能来说,是比较容易忽略的,因为大家可能觉得忘记密码(找回密码)比较简单,大多数的思路便是通过用户名、手机、邮件等找回密码,其实这个功能还是存在很多可以攻击的地方,也是比较容易出现安全问题的。

第一类:没有使用加密手段

场景一:直接截取手机验证码
某网站的忘记密码功能是通过手机号码找回,我输入自己的手机号码,点击发送重置密码短信之后,我查看源代码(或者通过截取post请求),发现验证码存在源代码网页上(或者截取到的post请求可以查看),而且还没有进行加密(就是因为没有进行加密,才方便于联想到它是验证码,也方便重新将验证码输入后重置密码),于是我就可以输入其他人的手机号码,这样通过截取信息就可以获取相应的验证码,进而可以重置这个用户的密码信息。

场景二:截取数据将手机号换成自己的,验证码直接发送到自己手机上
假设有这样一个网站,重置密码页面由用户名、手机号码和验证码组成,这个页面中如果输入一个已存在的用户,手机号码会自动生成,但是会把中间4位使用*号代替(这是一个漏洞,将两个校验简化成了一个校验)。

某人可以通过暴力破解的方式查找到一个存在的用户名,然后自动生成了一个带有*的手机号码,我输入验证码后点击重置密码按钮,同时进行抓包截取这个请求,然后分析结果发现,post请求中有没有加密的手机号码,11位全部可以读取(是明文的),手机明文也是一个问题。

我完全可以将手机号码换成我自己的,然后重新把这个包发出去,这样短信就会发送到我的手机上,短信中有了新密码,我可以以其他人的身份去登录啦(现在好多网站会在短信中给你一个密码,然后建议你去更改)。

第二类:过于信任MD5加密

MD5加密可以预防一些安全问题,但是不得不承认,它也是一些安全问题的源泉。

下面的两个例子都是发现重置邮件中的链接,虽然进行了MD5加密,但是具有规律性。

场景一:
某网站的重置密码是通过发送邮件的方式,可能我通过使用自己的邮件重置密码,在收到的邮件中发现邮件中的链接是使用id和id的MD5加密过后的字符串组合而成,如果发现了这个规律,就可以通过以下操作:

通过暴力破解查找到已存在的用户名,然后使用暴力破解重置密码链接(即使你没有收到这个邮件,因为邮件中唯一标识是由id组成,id一般是用户的id,用户数量是一定的,可以不断增大id值来暴力破解),这样就可以重置别人的账号信息。

场景二:
某网站的重置密码是通过发送邮件的方式,可能我通过使用自己的邮件重置密码,在收到的邮件中发现邮件中的链接是username的MD5加密后的字符串,发现了规律,我想会不会有一个叫做admin的管理员用户呢,于是试试的心态打开将admin使用MD5加密后的链接,竟然重置成功后使用admin登录进去了,

哇哦哦,这可是管理员的账号啊!!

第三类:直接暴力破解

1.暴力破解,主要使用穷举法。

2.组合破解,使用MD5加密后暴力破解或者综合技术等等。


小方案:
提问:现在有的网站有登录、访问的限制,对次数有限制要求,那怎么使用暴力破解呢?
解答:设置发送包的时间,还有就是要使用变换IP的工具,网上比较多。


注:
本篇博文主要是供学习使用,不作其他用途。

忘记密码的测试用例通常是为了验证用户找回账户权限的功能是否正常工作,下面列举了70个相关的测试案例,涵盖了常见的场景: 1. 用户输入正确的邮箱地址,系统发送验证码成功。 2. 邮箱地址不存在,系统返回错误信息并提示未注册该邮箱。 3. 验证码有效期内多次尝试重置密码,每次请求都会生成新的验证码。 4. 密码复杂度不符合规定,系统给出提示并要求修改。 5. 输入的验证码错误,系统拒绝密码重置操作。 6. 系统检测到异常登录行为,暂停密码重置功能。 7. 用户首次设置密码时,不允许使用旧密码。 8. 提交密码重置请求后,用户能收到通知邮件确认请求状态。 9. 用户短时间内多次请求重置,系统限制频率。 10. 用户找回密码后,原账号立即可用。 11. 使用手机绑定,短信验证码作为身份验证方式。 12. 没有绑定手机号或邮箱,系统提示无法通过此途径找回。 13. 手机号或邮箱已更改,系统显示新联系方式用于重置。 14. 注册邮箱或手机号存在,但关联的账号已被封禁,提示无法找回。 15. 旧账号已删除,系统返回账号不存在的提示。 16. 客户端和服务器之间的网络延迟,不影响验证码接收速度。 17. 重置密码过程中,系统保存临时密码的安全性检查。 18. 使用社交账号关联找回,验证授权过程。 19. 对于二次验证的用户,需要额外完成身份验证步骤。 20. 账户处于冻结状态,解锁后才能重置密码。 21. 测试不同浏览器和设备上重置过程的一致性。 22. 温馨提示用户重设密码后的安全提示,如建议更新其他安全设置。 23. 错误提交时,系统会记录日志便于排查问题。 24. 长期未使用的账号,验证流程可能会有所不同。 25. 网络中断导致重置失败后,重新连接能否继续流程。 26. 系统在夜间关闭重置服务,提醒用户第二天再试。 27. 电子邮件格式错误,系统应友好提示用户修正。 28. 用户未开启接收系统邮件功能,提示需要先启用。 29. 密码重置链接的有效期。 30. 用户输入的新密码长度不符合要求。 31. 新密码包含敏感词汇,系统拒绝并提供建议。 32. 两次输入新密码不一致,系统提示用户重新输入。 33. 密码强度不足,系统要求提高复杂性。 34. 系统支持多种语言版本,重置流程适应不同语言环境。 35. 系统自动过期后,用户再次请求密码重置。 36. 重置密码后,用户可以正常使用登录功能。 37. 无效的重置链接点击后,系统提示链接已过期。 38. 登录历史中频繁密码修改,系统增加额外安全措施。 39. 重置密码过程中,用户可以取消操作并保留当前信息。 40. 非注册用户的密码找回功能测试。 41. 测试在无网络连接时的离线操作。 42. 通过API接口测试系统重置密码的行为。 43. 重置密码过程中,用户的个人信息保护措施。 44. 检查系统对恶意IP和机器人攻击的防御机制。 45. 测试用户在恢复期间的心理预期。 46. 邮件发送时的抗垃圾邮件策略。 47. 测试密码重置过程中的错误处理及用户体验优化。 48. 用户界面的清晰性和易用性。 49. 系统提供帮助文档指导用户进行密码重置。 50. 跨平台兼容性测试,包括桌面、移动应用和网页版。 51. 用户遗忘辅助信息(如安全问题)的情况处理。 52. 测试用户输入验证码的速度限制。 53. 系统是否允许用户找回已弃用的账号。 54. 完成重置后,系统清理临时数据。 55. 多个用户同时请求重置,处理并发情况。 56. 允许用户在一段时间内撤销重置操作。 57. 邮件发送速度测试。 58. 通过用户反馈评估系统的响应速度和效果。 59. 检测不同地区、时区对于验证码发放的影响。 60. 账户锁定次数限制,防止恶意尝试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值