密码重置那些事
来源:互联网 发布: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
- 密码重置那些事
- 密码重置
- 重置密码
- 密码重置
- 密码重置
- 【mysql 重置密码】快速重置mysql密码
- 关于手机密码那些事
- mysql密码忘记重置密码
- weblogic忘记密码,重置密码
- mysql忘记密码,密码重置
- ECshop 忘记密码,重置密码
- mysql重置密码修改密码
- MYSQL5重置root密码
- 重置 Firefox 主密码
- MYSQL5重置root密码
- ubuntu 重置root密码
- DNN重置host密码
- ucenter 密码重置
- 2014/5/22翻译
- dp-导弹拦截-未知数目数字的读入-stl
- 个人理财必须掌握的10个技巧
- android-async-http
- Wireshark基本介绍和学习TCP三次握手
- 密码重置那些事
- 《C和指针》第六章 指针
- GTK学习笔记1-简单的控件和事件响应
- 怎么解除任务管理器锁?
- Leetcode中的大整数
- Tiling_easy version
- Android项目实战--手机卫士01--启动界面
- OCP 1Z0 051 88
- Android异步Http客户端 一个基于回调的Http客户端库为Android