15.1 密码找回凭证可被暴力破解
密码找回凭证是指在密码找回过程中,服务端向用户的注册手机或者邮箱中发送的验
证码或特殊构造的 URL 等用于用户自证身份的信息。当用户凭证的验证次数未做限制或限
制不严可被绕过时,攻击者可以通过暴力枚举用户凭证的方式,冒充该用户重置其密码。
其业务流程如图 15-1 所示。
图 15-1 业务流程图
15.1.1 某社交软件任意密码修改案例
2012 年,某社交软件的官网上新增了一个忘记账号或密码的链接。
步骤一:单击忘记密码链接后,进入重设密码选择页,如图 15-2 和图 15-3 所示。
图 15-2 忘记密码链接
图 15-3 重设密码选择页
步骤二:选择使用手机号重设密码,并输入一个真实注册用户的手机号码,如图 15-4
所示。
图 15-4 重设密码页面
步骤三:单击“下一步”按钮后,系统提示将发送验证码到注册手机,如图 15-5 所示。
图 15-5 发送验证码页面
步骤四:单击“我已收到验证短信”后,系统弹出重置密码确认页,需要输入手机上收
到的验证码作为密码找回凭证。核对成功则可以成功进行密码重置,如图 15-6 所示。
图 15-6 发送验证码页面
步骤五:单击“OK”并对该请求进行抓包,获取到包文:
check=false&phone=186XXXXXXXX&……&verifycode=1234。
步骤六:根据以上包文信息可以发现该密码找回功能的验证码比较简单,只有 4 位数
字,可以尝试枚举修改包文中的 verifycode 进行暴力破解。几次尝试后收到系统提示“您的
提交请求过于频繁,请稍后再试。”说明该网站的密码找回功能是对用户凭证的验证频率
做了限制的,只能想办法绕过其限制。
步骤七:经过一系列尝试后发现,在 phone=186XXXXXXXX 的号码后面随机添加不
为数字的字符时,可以绕过此限制。于是推测其漏洞点在于判断 phone=186XXXXXXXX
的尝试次数时未对 phone 的值进行提纯,所以可以利用在号码后添加随机字符的方式绕过
限制。但在下一步操作的时候,只取了 phone 中的数字部分,然后再取出此号码的
verifycode 进行比对,比对成功则修改密码,如图 15-7 所示。
图 15-7 暴力破解示例
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论