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

0x00 前言

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

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

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

0x01 爆破类型


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

WooYun: 爱周游任意用户密码重置及 XSS漏洞

WooYun: 麦包包 任意用户密码重置漏洞

WooYun: 换个姿势第三次重置拉手网任意用户密码

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

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

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

WooYun: 有利网 也可以任意用户密码重置额~

WooYun: 驱动之家 任意用户密码重置

WooYun: 咕咚网设计缺陷导致任意用户密码可重置

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

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

0x02 秒改类型


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

WooYun: 麦包包 任意用户密码重置漏洞(二)

WooYun: 经纬网可重置任意用户密码

WooYun: 飞马网系列之四任意用户密码重置漏洞(秒改非爆破)

这这种设计一般是在找回密码的时候,会给指定邮箱发送一个用于校验的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步骤重置密码的时候没有对用户身份进行持续性的验证导致的。

WooYun: like团任意用户密码重置(秒改)

WooYun: 科大讯飞某系统任意账号重置密码漏洞

WooYun: 某同志手机交友应用200W用户密码任意重置(可拐走别人男友)

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

WooYun: 天天网任意账户密码重置(二)

WooYun: APP终结者11#大连万达电影任意用户账户登录

WooYun: 优酷网任意用户密码修改漏洞(验证可以秒改)

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

WooYun: djcc舞曲网任意用户密码重置漏洞(已证明)

WooYun: 猥琐方式再次重置拉手网用户密码

WooYun: 金蝶云之家博客任意用户密码重置

WooYun: 当当网任意用户密码修改漏洞第三次

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

WooYun: 世峰户外商城设计缺陷任意重置密码

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

WooYun: 万达某重要平台任意用户密码重置

0x03 需要别人交互


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

WooYun: 糗事百科另类方式重置用户密码

WooYun: 看我如重置暴风影音账户密码(需要与用户互交)

WooYun: 土豆网邮箱绑定csrf(可导致劫持账号)

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

WooYun: pptv视频上传审核通过后储存型xss(百余条用户信息可利用有vip可改密码劫持)

WooYun: 宜搜存储型XSS+重置密码利用

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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
密码重置漏洞是一种常见的Web安全问题,攻击者可以利用该漏洞重置用户密码并进入用户账户,从而进行恶意操作。 其原理大致如下: 1. 用户注册时,系统会为该用户生成一个唯一的token,并将该token与用户的邮箱地址绑定。 2. 用户在忘记密码时,可以通过邮箱地址获取重置密码链接,该链接中包含了之前生成的token。 3. 用户点击该链接后,系统会根据链接中包含的token找到对应的用户账户,并允许用户进行密码重置操作。 攻击者可以利用以下几种方式来利用该漏洞: 1. 盗取用户邮箱:攻击者可以通过各种手段(如钓鱼邮件、恶意软件等)获取用户的邮箱账户及密码,从而获取到重置密码链接。 2. 猜测token:攻击者可以通过枚举或爆破的方式猜测出有效的token,然后使用该token来进行密码重置操作。 3. 窃取token:攻击者可以通过各种手段(如XSS攻击、MITM攻击等)窃取用户在访问重置密码链接时发送的请求,从而获取到token并进行密码重置操作。 以下是一段示例代码,演示了密码重置过程中可能存在的漏洞: ```python import smtplib from email.mime.text import MIMEText def reset_password(email): # 生成一个唯一的token,并将该token与用户的邮箱地址绑定 token = generate_token() save_token(email, token) # 发送重置密码链接到用户邮箱 reset_link = f'http://example.com/reset_password?token={token}' send_reset_email(email, reset_link) def send_reset_email(email, reset_link): # 发送重置密码链接到用户邮箱 msg = MIMEText(f'请点击以下链接重置密码:{reset_link}') msg['Subject'] = '重置密码' msg['From'] = '[email protected]' msg['To'] = email s = smtplib.SMTP('localhost') s.send_message(msg) s.quit() def reset_password_handler(request): email = request.get('email') new_password = request.get('new_password') token = request.get('token') # 根据token找到对应的用户账户,并进行密码重置操作 if validate_token(email, token): reset_password(email, new_password) return '密码重置成功' else: return '无效的重置链接' ``` 在上述代码中,存在以下几个潜在的漏洞: 1. 重置密码链接的安全性不足:重置密码链接中包含了token信息,如果该链接被恶意获取,攻击者就可以利用该链接进行密码重置操作。为了增强链接的安全性,可以考虑使用一些加密算法或者添加一些额外的验证信息。 2. token的可预测性:在该示例中,token的生成方式可能不够随机,攻击者可以通过猜测或爆破的方式获取有效的token。为了增强token的随机性和不可预测性,可以考虑使用更加复杂的生成算法或者添加一些额外的随机因素。 3. token的安全传输:在发送重置密码链接的过程中,token可能会被窃取或篡改,从而导致安全性问题。为了增强token的安全性,可以考虑使用HTTPS协议来传输链接或者添加一些签名信息来验证链接的有效性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值