> 文档中心 > 深信服技术认证之找回密码漏洞

深信服技术认证之找回密码漏洞

找回密码漏洞概述

找回密码是逻辑漏洞中密码重置的一种场景,经常出现在用户找回密码页面等涉及到网站密码重置的页面。攻击者在用户登录页面,没有获取到用户的账号和密码,无法查看该用户的账户信息,想通过找回密码的位置尝试绕过安全验证,从而重置用户密码,再进行登录,查看相关的账户信息。

找回密码的步骤

1、确认用户:输入用户的账号、手机号或者邮箱等;

2、安全验证:触发服务端下发验证码到接收的手机或邮箱,安全验证用户身份;

3、密码重置:输入新密码和确认新密码;

4、登录账号:重置密码成功,利用重置的新密码登录。

密码重置的常见问题

在找回密码的过程中,可以利用密码重置过程中常见的一些问题来尝试绕过安全验证,从而实现重置密码。常见密码重置问题:

1、用户名枚举:网站反馈多余信息,可猜测用户信息

2、验码返回前端处理:可截获、修改

3、修改Request:用户名、手机号、邮箱、Cookie等信息可修改

4、修改Response:操作结果成功/失败可修改

5、暴力破解验证码:验证码长度有限,或验证码未设置可靠的失效时间

6、拼凑密码重置链接:重置密码链接有规可循

找回密码复现

找回密码的逻辑漏洞存在形式比较多,目前找回密码的方式比较常见的有邮箱验证码、手机验证码以及密码问题。本文主要介绍几种常见的找回密码的攻击方法。

第一种:修改Response

1、由于攻击者不知道用户的账号密码,在找回密码页面进行尝试

2、输入任意用户名,提示“该用户名不存在”,利用网站反馈的多余信息,不断猜测用户名,直到正确为止或者对用户名进行暴力破解,确认用户名

3、由于验证码会发送到用户的邮箱进行安全验证,而攻击者无法获取到验证码,无法进入下一步。任意填写验证码尝试抓包,修改Response,对数据包中具有明显的参数字段,如yes/no、success/failed、0/1等字段,尝试修改

4、对修改Response后的数据包放包,成功绕过安全验证

第二种:修改Request

在获取验证码的时候,由于后台只验证了验证码,并没有对接收验证码的手机号或邮箱进行验证,可以直接抓包修改Request中的手机或者邮箱参数,这时原本发送给用户的验证码就会发送到被我们篡改的手机或者邮箱上,利用接收到的验证码即可重置密码。

第三种:暴力破解验证码

在找回密码页面,任意输入验证码提交,进行抓包,将数据包发送到爆破模块,对验证码进行暴力破解,特别是当验证码为四位数字的时候。

第四种:密码重置链接

当前Web应用程序可能通过向用户邮箱发送密码重置链接来帮助用户修改密码,这种链接是随机的攻击者很难对其进行猜解。但是有些应用在设计这个逻辑时可能允许Web应用程序将用户密码修改的邮件发送至攻击者,有时邮箱地址并没有直接显示出来而是存储在隐藏的表单中,这时攻击者可以将邮箱修改为自己的邮箱。在最差的情况下攻击者可以尝试推测密码重置的URL来重置用户密码。

找回密码功能还可能通过设置一组问题来验证用户身份,比如这些问题可以是“我最喜欢的颜色”,这些问题的答案组合次数相对于密码来说小的多,并且可以通过信息收集工作来提供辅助。攻击者可以收集一组用户名,并逐个遍历然后记录相应的问题,在其中选择最简单的那个下手,可以获得更高的成功率;忘记密码处可能不会设置错误次数限制从而允许攻击者猜测上述问题的答案。

通常Web应用程序也会设置密码暗示来代替上述问题,这些密码暗示往往能够辅助攻击者猜测密码,有些用户甚至直接把密码设置为密码暗示。攻击者同样可以通过枚举收集到的用户名然后获得一组密码暗示,从而寻找出最容易获得的密码。

在密码重置漏洞的挖掘过程中,可以从上述的几个方面进行尝试,甚至可以尝试走一遍正确的流程,和测试的流程进行对比,会发现一些意想不到的惊喜。

文章作者:石岩,深信服安全服务认证专家,产业教育中心资深讲师,中国网络空间安全协会会员,曾任国内知名安全厂商安全认证负责人、安全服务工程师、信息安全咨询顾问、信息安全讲师;多次为政府、运营商、企业、本科、高职学员以及高校老师进行信息安全培训;多次组织、参与职业能力评价认证工作,擅长Web安全、渗透测试、操作系统等多个方向的课程。(转载请标明出处)