密码重置那些事

来源:互联网 发布:ubuntu终端显示中文 编辑:程序博客网 时间:2024/05/16 13:54

正常的密码重置一般分为以下几步:

1.输入用户名(客户端提交)

2.验证身份(服务器检测)

3.重置密码(客户端提交)

通常情况下,服务器是很难控制的,于是我们只好在浏览器端做文章。

下面分析几种重置密码的设计缺陷

一、重置密码的url与用户没有对应

比如生成的重置密码url为:http://www.xx.com/xxoo.php?username=test&code=aaaaaaaaa

 然后由于这里的参数code在服务器端验证的时候,只要其自身的算法满足服务器端的验证就直接通过了,不会去验证这个code是不是和test账户对应的,从而,我们可以直接利用url:http://www.xx.com/xxoo.php?username=admin&code=aaaaaaaaa 重置帐号admin的密码。这种设计显然是比较二的逻辑,但的确有真实案例 http://www.wooyun.org/bugs/wooyun-2013-024956


二、已通过验证,但是可以通过抓取重置密码的POST包,更改邮箱或者用户名

这种情况通常是在用户提交新密码后,通过一个字段(邮箱号,手机号或用户名)与数据库对应的字段关联,从而去修改数据库中的密码,但是,永远不要相信用户的输入!


示例:http://www.wooyun.org/bugs/wooyun-2014-054905


三、加密算法过于简单而被破解,导致密码重置。这种一般都是一些简单的加密算法,将一些关键参数比如用户名、邮箱、手机号、验证字符、时间戳等,进行一定的规则的组合然后进行md5、base64加密。

1.邮箱+sid组合md5  http://www.wooyun.org/bugs/wooyun-2013-045739

2. 手机号|用户名|邮箱|unix时间戳|找回密码连接的md5 (base64编码) http://www.wooyun.org/bugs/wooyun-2013-047145

3.多次重置,寻找规律 http://www.wooyun.org/bugs/wooyun-2014-049560

4. 手机号+验证码 md5  http://www.wooyun.org/bugs/wooyun-2013-046999


四、给邮箱或者手机发送一个新密码

这种情况下只要抓包,然后更改手机号或邮箱,就可以获取到密码

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


五、爆破类型(burpsuite)。

这种设计一般是在找回密码的时候,会给指定的手机号发送一个用于验证身份的验证码,然后只要用户输入正确的验证码,就可以进行密码重置了。一般是由于验证设计过于简单,而且对校验码的校验使用次数没有进行限制,导致正确的验证码可以被枚举爆破,从而重置密码。

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

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

发送至邮箱的连接也存在爆破的可能

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

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


六、其他一些神奇的验证方式

1.重置url的字段值和输入新密码标签的id相同

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

2.加密验证字符串和之前返回数据中的字符串相同

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


七、XSS和CSRF攻击重置密码

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

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

0 0
原创粉丝点击