漏洞概要 关注数(24) 关注此漏洞
缺陷编号:wooyun-2014-060456
漏洞标题:PHPYUN设计缺陷可批量重置全部用户密码
相关厂商:php云人才系统
漏洞作者: phith0n
提交时间:2014-05-12 18:24
修复时间:2014-08-10 18:26
公开时间:2014-08-10 18:26
漏洞类型:设计缺陷/逻辑错误
危害等级:中
自评Rank:10
漏洞状态:厂商已经确认
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]
Tags标签: 无
漏洞详情
披露状态:
2014-05-12: 细节已通知厂商并且等待厂商处理中
2014-05-12: 厂商已经确认,细节仅向厂商公开
2014-05-15: 细节向第三方安全合作伙伴开放
2014-07-06: 细节向核心白帽子及相关领域专家公开
2014-07-16: 细节向普通白帽子公开
2014-07-26: 细节向实习白帽子公开
2014-08-10: 细节向公众公开
简要描述:
不过重置成了什么我也不知道。
但如果有一天,一个网站所有用户密码全部被重置成随机字符了,所有遗失邮箱的用户就完全丢失自己的账号了。就算没有遗失邮箱,但莫名其妙地被重置密码了,谁会开心?
详细说明:
0x01.
访问链接friend/index.php?C=profile&id=1可以查看uid=1的用户的信息,其中就有用户名。
因为uid是数字,所以存在遍历的可能,我可以写一个脚本,把数据库中所有用户用户名遍历出来。
0x02.
访问index.php?M=forgetpw&sendpw,把获得的所有用户名一一POST到这里。其中需要验证验证码,但验证码因为没有删除SESSION,所以形同虚设。只要第一次输入一个即可。
0x03.
POST完后就结束了。。。所有用户的密码都重置成随机字符串了。
漏洞证明:
首先,我简单写了一个遍历phpyun网站中所有用户的脚本:
首先自己注册一个用户,然后把COOKIE复制到这个代码里。然后大概估计一下用户总数量,填到for循环里。
我为了演示,本地搭建了一个phpyun系统,注册了6个用户:
然后运行脚本,获得了用户名列表:
然后来到找回密码页面,随便输入一个用户名,正确填写验证码,然后用burpsuite抓包:
payloads就加载刚才生成好的那个文件:
开始intruder,于是,很快就跑完了。看返回包,返回的信息是“新密码已经发送到您的邮箱”:
于是,所有用户密码都变了,而且邮箱遗忘的用户,就永远登录不进来了……
对比一下数据库,可以看到密码和salt全部变了。而且salt还比较有规律,因为salt的生成与时间有关,我提交的时间很接近,所以生成的salt第一位都相等:
这是重置密码前的数据库:
修复方案:
01.修复验证码问题
02.让用户输入邮箱和用户名,二者对应才允许改密码,至少不能像我这样批量重置。
版权声明:转载请注明来源 phith0n@乌云
漏洞回应
厂商回应:
危害等级:中
漏洞Rank:10
确认时间:2014-05-12 18:54
厂商回复:
感谢您的支持,我们会尽快修复!
最新状态:
暂无