码迷,mamicode.com
首页 > 其他好文 > 详细

密码重置

时间:2016-04-20 17:49:00      阅读:246      评论:0      收藏:0      [点我收藏+]

标签:

密码重置一般需要四个步骤:

 

1、 输入重置账号

2、 输入身份验证

3、 进行密码重置

4、 完成密码重置

 

例1, 联想3c站密码重置

 

开启Firefox,输入:http://www.enjoy3c.com/home/validateCode.do?Type=1

技术分享

填写好用户名,点击下一步

技术分享

此时,这里有两种方式重置密码

 

1、 通过手机

2、 通过电子邮件

 

在此,我们选择通过手机重置密码

 

使用burpsuite抓取重置密码请求包,将请求包中的手机号直接修改为自己的手机号,从而获取到重置密码的验证码:z0ff8,然后,提交该重置密码的验证码,就可以成功重置该账号密码了。

 

POST /home/validateCode.do?type=0 HTTP/1.1

Host: www.enjoy3c.com

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3

Accept-Encoding: gzip, deflate

Referer: http://www.enjoy3c.com/getPasswordByMobile.do

Cookie: JSESSIONID=66390B971CDD8060950B21D5E4D39A8C; Hm_lvt_5cdeab8187ee7fa1343ef10877a1eabc=1453545913; Hm_lpvt_5cdeab8187ee7fa1343ef10877a1eabc=1453545982

Connection: keep-alive

Content-Type: application/x-www-form-urlencoded

Content-Length: 10

 

code=z04f8

 

安全建议:

 

对于短信验证:

 

1、 重置密码的时候,采用身份验证机制,即:只能是该用户才能修改此密码。

2、 短信验证码复杂化,且短信验证码防爆破设计(如:三次输入错误,自动锁定)。

 

对于链接验证:

 

1、 重置密码的时候,采用身份验证机制,即:只能是该用户才能修改此密码。

2、 ReferToken验证,服务端加密验证。

 

在此,单独解释一下“重置密码的时候,采用身份验证机制,即:只能是该用户才能修改此密码”这句话

 

这是dvwa渗透演练平台中users表中数据

 

user_id first_name last_name user password avatar last_login failed_login

1 admin admin admin 5f4dcc3b5aa765d61d8327deb882cf99 http://localhost/dvwa/hackable/users/admin.jpg 2015-12-10 11:48:17 0

2 Gordon Brown gordonb e99a18c428cb38d5f260853678922e03 http://localhost/dvwa/hackable/users/gordonb.jpg 2015-12-10 11:48:17 0

3 Hack Me 1337 8d3533d75ae2c3966d7e0d4fcc69216b http://localhost/dvwa/hackable/users/1337.jpg 2015-12-10 11:48:17 0

4 Pablo Picasso pablo 0d107d09f5bbe40cade3de5c71e9e9b7 http://localhost/dvwa/hackable/users/pablo.jpg 2015-12-10 11:48:17 0

5 Bob Smith smithy 5f4dcc3b5aa765d61d8327deb882cf99 http://localhost/dvwa/hackable/users/smithy.jpg 2015-12-10 11:48:17 0

 

大家可以看到,在该表中,用户的信息,其实,就是一行行的记录

 

一行的记录代表一个用户的相关信息

 

如果,在找回密码的时候,直接输入了某个属性,比如:手机号,邮箱等等,通过这个属性来修改密码,而不验证这个属性对应的真实用户(即:属性与真实用户没有准确的对应关系),那么,我们就可以任意填写手机号,邮箱等等来作为身份验证的凭据,此时,程序直接就通过我们的验证凭据了。

 

原因就是因为程序的验证逻辑存在问题。

 

大家可以仔细阅读以下功能相关的源代码,并做以下功能相关源代码的安全审计,此时,我也没有找到合适的源代码为大家演示,大家可以自己去找找,看多了,自然就明白了。

 

如图所示:

技术分享

密码重置

标签:

原文地址:http://www.cnblogs.com/windclouds/p/5413518.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!