查看原文
其他

密码找回漏洞—邮箱弱token

LSCteam 北京路劲科技有限公司 2023-07-16



邮箱弱token

a. 时间戳的MD5

案例:某软件任意用户密码修改漏洞


某软件用户通行证取回密码存在逻辑问题,导致可以修改任意用户的密码。

怕影响别的用户帐号安全,所以只用了3个朋友的帐号进行测试,均成功。

360的业务线也很广了,比如360安全卫士系统云备份,云盘存储,网站宝,团购等项目,利用这个sso漏洞可以通杀,危害还是很严重的。


详细说明:


先正常流程取回一次密码,查看邮箱,邮件内容类似:


360个人中心找回密码(重要)!

重设密码地址:http://i.360.cn/findpwd/setpwdfromemail?vc=c4ce4dd3d566ef83f9[马赛克]&u=[马赛克]%40gmail.com,马上重设密码!

如果您没有进行过找回密码的操作,请不要点击上述链接,并删除此邮件。


vc可以看出是一串md5,解密一下发现是个数字,类似1339744000,第一感觉是个id,那么遍历id并且修改u变量是否可以修改任意用户密码呢,试了一下不可以,在看这个数字,感觉有点太大了,在看,在看,在看,怎么像是个unix时间戳呢?

解开一下发现真的是个时间戳!那么可以大胆的猜测一下此处的流程,用户取回密码时,产生一个精确的时间戳,与帐号绑定,记录在某个密码重置库内,那么修改这个用户密码必须得知道这个时间戳才可以,看似合理,但程序员忽略了一个细节,就是假如这个时间戳是新生成得,我在一定得时间段内进行暴力猜解,很快就可以获取到这个有效得链接!

写了个exp测试一下。

打开果然是

修改密码后跳到了登陆首页,用刚刚修改得密码登陆

Bingo~看看其他应用。

奇怪,不是sso,但是既然知道了密码,so不o的无所谓啦。

PS:另外发现了一个小小的问题,如果某个重置密码链接未使用的话,时间戳貌似不会失效,这样给预测带来了点麻烦,但这只是时间问题。


修复方案:


不可预测性没有做到位,设计之初就做错了,真是。。


b. 用户名


c. 服务器时间

案例:某网站任意用户密码重置漏洞(经典设计缺陷案例)


1.还是之前提交的那个中兴的应用之星网站


http://www.xxxxxxx.com.cn


上面有积分可以换充值卡。


某网站的积分商城充值卡等礼品任意兑换漏洞


2.上面还有一个任意用户密码重置漏洞,找回密码链接的token不够随机,貌似就是当前时间。可以任意找回用户的密码而不用去查看邮箱中的找回链接是啥,重置别人的密码后就可以用别人的积分在积分商城里面来换取礼品。


3.首先用2个账号同时找回密码来进行对比,开2个窗口,2个账号同时点击找回密码:


 

4.去邮箱里面去查看找回密码的链接:

随机token只相差4,我这里网络有点卡,如果是网络好,应该只相差1-2,token轻易被猜出来。


5.接下来就是用构造的链接,找回密码了:

6.可以在注册功能那块找到已经注册过的邮箱,已经注册过的邮箱会提示一个小红叉表示已经被注册过:

 

没被注册

 

修复方案:


增强随机token




关注路劲科技,关注网络安全!

失效的身份认证和会话管理
CVE-2020-0796检测与修复
我最近偶遇的六个很酷的Python库
招募令| 别看别看,一篇“三无”招聘文章,请慎重点击

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存