一些常见的重置密码漏洞分析整理

来源:互联网 发布:知乎话题广场 编辑:程序博客网 时间:2024/06/05 05:10

00 前言


一般的密码重置的设计都是分为以下四步的:

1.输入账户名2.验证身份3.重置密码4.完成  

通常漏洞是会存在于2或者3步骤中,下面来看看常见的一些重置密码漏洞的方式。

01 爆破类型


1 这种重置密码是最多见最容易出现的一类,那就是手机验证码爆破从而重置密码。

http://www.wooyun.org/bugs/wooyun-2013-037829

http://www.wooyun.org/bugs/wooyun-2013-021480

http://www.wooyun.org/bugs/wooyun-2010-047169

这这种设计一般是在找回密码的时候,会给指定的手机号发送一个用于验证身份的验证码,然后只要用户输入正确的验证码,就可以进行密码重置了。

这种设计产生重置密码漏洞的情况,一般是由于验证设计过于简单,而且对校验码的校验使用次数没有进行限制,导致正确的验证码可以被枚举爆破,从而重置密码。此方法也是最常见的重置密码的方式,因为大多数厂商最开始的设置都是采取的4-6位纯数字验证码的验证方式,而且是没有防止爆破的设计。

2 也是采取的爆破,方法和#1类似,不过就是手机验证码变成了邮箱中的验证码。

http://www.wooyun.org/bugs/wooyun-2013-021722

http://www.wooyun.org/bugs/wooyun-2013-021914

http://www.wooyun.org/bugs/wooyun-2010-029132

这这种设计一般是在找回密码的时候,会给指定邮箱发送一个用于校验的url链接,链接中一般会有一个参数就是用于验证身份的验证码,然后用户点击指定url就可以进入重置密码的页面从而去重置密码了。

这种设计产生重置密码漏洞的情况,也是由于重置密码链接中的验证码参数没有设计过于简单,可以被爆破,从而可以重置密码。

02 秒改类型


3 采取的方法是偷梁换柱,一般是那种会给指定邮箱发送url重置密码链接的那种。

http://www.wooyun.org/bugs/wooyun-2013-021771

http://www.wooyun.org/bugs/wooyun-2010-024956

http://www.wooyun.org/bugs/wooyun-2010-034192

这这种设计一般是在找回密码的时候,会给指定邮箱发送一个用于校验的url链接,链接中一般肯定会存在2个比较重要的参数,一个是用户名(或者uid、qq邮箱之类的能代表用户身份的参数),另一个就是一个加密的字符串(通过服务器端的某种算法生成的用来验证用户身份的参数)。然后用户在重置密码的时候,点击邮箱中的重置密码链接,就可以重置帐号密码了。

这种设计产生重置密码漏洞的情况,一般是由于重置密码链接中的表示用户名的参数和用于校验的加密字符串参数没有进行一一对应,导致可以被黑客偷梁换柱,从而重置密码。

也就是说,那个验证身份的加密字符串是万能的。

比如生成的重置密码url为:http://www.xx.com/xxoo.php?username=wooyun1&code=asdfghjkl 然后由于这里的参数code在服务器端验证的时候,只要其自身的算法满足服务器端的验证就直接通过了,不会去验证这个code是不是和wooyun1账户对应的。

从而,黑客可以直接利用url:http://www.xx.com/xxoo.php?username=wooyun2&code=asdfghjkl 重置帐号wooyun2的密码。

4 同样是偷梁换柱,这种一般是在最后一步设置新密码的时候,程序员往往会疏忽验证用户身份,从而被偷梁换柱,重置密码。这种一般是由于前面2步骤中已经验证了身份,然后3步骤重置密码的时候没有对用户身份进行持续性的验证导致的。

http://www.wooyun.org/bugs/wooyun-2014-053515

http://www.wooyun.org/bugs/wooyun-2010-054905

http://www.wooyun.org/bugs/wooyun-2010-046713

5 有的时候虽然加密字符串的算法很复杂,但是在重置密码的过程中,要是程序员自己不小心将其泄漏了,那也可以被重置密码。这种属于程序员自己没有将开发调试时候的一些数据在正式上线前去掉导致的。

http://www.wooyun.org/bugs/wooyun-2014-058210

http://www.wooyun.org/bugs/wooyun-2010-054037

http://www.wooyun.org/bugs/wooyun-2013-018722

6 有的时候利用邮箱的url重置密码,虽然不存在#3 #4 #5的情况。但是由于加密算法过于简单而被破解,导致密码重置。这种一般都是一些简单的加密算法,将一些关键参数比如用户名、邮箱、手机号、验证字符、时间戳等,进行一定的规则的组合然后进行md5、base64加密。

http://www.wooyun.org/bugs/wooyun-2013-045739

http://www.wooyun.org/bugs/wooyun-2013-047145

http://www.wooyun.org/bugs/wooyun-2010-049560

http://www.wooyun.org/bugs/wooyun-2010-046999

7 重置密码一般需要四个步骤:1.输入账户名2.验证身份3.重置密码4.完成。有时候当你进行了1之后,直接去修改URL或者前端代码去进行3步骤从而也能成功的绕过了2的验证去重置密码。这种一般是由于没有对关键的身份验证的参数进行追踪导致的。

http://www.wooyun.org/bugs/wooyun-2010-054890

8 有时候修改密码的时候会给邮箱或者手机发送一个新密码,那么抓包将手机号或者邮箱改成我们自己的会怎么样呢?这种一般是由于没有验证手机号或者邮箱的对应身份导致的。

http://www.wooyun.org/bugs/wooyun-2010-046338

03 需要别人交互


9 有的时候CSRF利用好的话,也可以重置用户甚至是管理员的密码。这种一般是由于登录帐号后重置密码或者绑定邮箱、手机号的时候没有token也没有验证refer导致的。

http://www.wooyun.org/bugs/wooyun-2013-043061

http://www.wooyun.org/bugs/wooyun-2013-032723

http://www.wooyun.org/bugs/wooyun-2010-028893

10 有时候XSS漏洞也可以重置密码,当然这种也是因为本身重置密码这里就有其他的设计缺陷。这种一般是用XSS劫持了账户后,由于某些奇怪的设计造成的。

http://www.wooyun.org/bugs/wooyun-2013-021329

http://www.wooyun.org/bugs/wooyun-2010-042713

通过了解以上10种常见的重置密码的漏洞,你是不是也感觉收获了蛮多的额。

0 0