首先需要声明,本文纯属一个毫无远见和真才实学的小小开发人员的愚昧见解,仅供用于web系统安全方面的参考。
1、 简单说明
互联网中,有用户注册的地方,基本就会有密码找回的功能。
密码找回功能一般不太被重视,往往是一个附属功能,简直就是一个天生的大坑,而且在越来越重视用户友好体验的今天,支持各种密码重置的功能层出不穷,功能越多,被攻击面也越多。
而密码找回功能里可能存在的漏洞,很多系统的所有者、架构师、开发人员、测试都没有想到。
而这些漏洞往往可能产生非常大的危害,如用户账号被盗等。
浆糊传说:这种漏洞在非常多的大互联网公司中都出现过。
2、 常见的一些密码找回的漏洞
1、密码找回的凭证太弱,如只需要填入一个四位或者六位的纯数字就可以重置密码,导致可以暴力破解。
2、密码找回凭证可从客户端直接获取。
密码找回凭证在客户端获取,在密码找回时注意抓包查看所有url返回响应等,看是否有最终的凭证出现,这样就可以绕过手机或者安全邮箱了。
一个经典案例,找回密码的答案在网页的源代码中……
3、密码找回凭证可以比较容易的猜出。
比如找回密码的关键凭证仅仅是时间戳的md5,一旦被攻击者发现,那么就可以轻松找回任意账户密码。
4、密码找回凭证存通用
很多系统的密码找回凭证是全局通用的,虽然是一串很复杂的加密数据,但是居然是全系统通用的。这个凭证可以重置任何用户。
5、用户找回密码的邮箱地址或者手机号码被修改。
导致可以使任意用户帮上自己可控的安全手机,然后就可以重置任意人的手机号码了。
6、执行密码重置或者修改的逻辑缺陷
有的系统在设计的时候,为了尽可能的代码复用或者其他的情况,可以在后面加参数,有的系统在回传这些参数的时候。参数都是从客户端回传到服务端的,比如常见的把用户ID,用户名都给传回到服务器,在回传之间,将数据修改的话,就可以用这个来修改任何用户的密码了…
3、经典案例-携程
携程的密码重置功能相当强大,支持“用户名”、“手机号”、“邮箱帐号”、“卡号”重置;换句话说,我们只要攻击以上4种信息中的任意一种,便可使用该功能重置相应用户的密码。
2013年2月,这个漏洞被发现并被人进行攻击。
4、其他浆糊传说
Gmail爆重置任意账户密码漏洞
…
谷歌Gmail账户的严重漏洞,利用该漏洞可以重置任意用户的密码。
Oren表示该问题由于Gmail存在xss和csrf漏洞,当攻击者发送一封标题为“确认账户所有权”的钓鱼邮件,要求收件人确认账户的所有权,并要求用户更改密码。在这封伪造的电子邮件中指向一个HTTPS的google.com地址,利用CSRF漏洞定制电子邮件,会直接控制受害者的账户。
…