前段时间发现一个开发人员很容易出错的密码找回问题(当然是个已知的问题),然后在补天上根据特点随便找了几个厂商,一试确实存在(也赚了一些库币)。今天就记录一下我总结的经验。
0x00 常见的密码找回逻辑问题
- 验证码暴力破解
- 顺序步骤绕过
- 邮箱找回逻辑绕过
- 手机找回逻辑绕过
要总结起来也很多很细,前人已经总结了,我就不重复啰嗦了P牛github脑图。
0x01 异步重置
为了显得高大上,起了个高大上的名字叫异步重置。今天要记录的这种重置方式的原理其实就是开发人员靠Cookie识别找回密码者的身份的,只要将Cookie覆盖或者伪造即可达到任意用户密码重置的目的。
举个栗子(拿我补天提交的展示过程):
1.用我自己手机注册个账号,然后找回密码,输入短信验证码,跳转到重置密码页,停住不动,用我自己的手机号已经走到重置密码的页面了,如下图:
2.在同一个浏览器下新建窗口,找回要攻击的手机号的密码,输入手机号,找了该网站HR的手机号重置,输入图片验证码提交。
3.好了!Cookie信息已经覆盖了,不用再输短信验证码了。刷新一下我刚刚第一步停住的重置密码页面,看要重置的手机号变了:
0x02 黑盒如何快速判定存在此类漏洞
经过两次测试,我确定了此类漏洞一些共同点,可快速找到存在此类密码重置问题(我试了5个有3个存在):
- 以手机验证码方式找回密码
- 找回密码一般分为3步及3步以上
- 第一步是输入手机号码和图片验证码
其实很容易想清楚,由于是靠Cookie验证身份,只要通过了账号和图片验证码的这一步,Cookie就记录某个特定用户的身份信息。
0x03 如何找回权限比较大用户的密码
我们都知道权限比较大能够使测试更深入,能够获取的敏感信息也更多,也能够让厂商更重视安全问题。我一般通过以下几种方式:
admin
、system
等账号- 工商备案信息查询(一般都会留有联系方式)
- 招聘信息(一般是hr联系方式)
- 网站官网(关于我们,联系我们)
- whois信息(邮箱,手机号)
再用whois这种方式举个栗子:
whois中的关键信息(有点社工的意思)
- 联系人
- 联系方式
- Registrant Phone
- Registrant Fax
- Registrant Email
- Admin Phone
- Admin Fax
- Tech Phone
- Tech Fax
上面那个栗子我通过Tech Phone找回密码,得到的是管理员权限。