漏洞概要 关注数(8) 关注此漏洞
缺陷编号: WooYun-2015-95673
漏洞标题: shopex 接口设计问题导致某一类用户名密码重置
相关厂商: ShopEx
漏洞作者: menmen519
提交时间: 2015-02-05 17:04
公开时间: 2015-05-07 17:54
漏洞类型: 设计缺陷/逻辑错误
危害等级: 高
自评Rank: 15
漏洞状态: 厂商已经确认
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 help@wooyun.org
Tags标签: 设计缺陷/边界绕过 php源码审核
漏洞详情
披露状态:
2015-02-05: 细节已通知厂商并且等待厂商处理中
2015-02-06: 厂商已经确认,细节仅向厂商公开
2015-02-09: 细节向第三方安全合作伙伴开放(绿盟科技、唐朝安全巡航、无声信息)
2015-04-02: 细节向核心白帽子及相关领域专家公开
2015-04-12: 细节向普通白帽子公开
2015-04-22: 细节向实习白帽子公开
2015-05-07: 细节向公众公开
简要描述:
shopex 接口设计问题导致某一类用户名密码重置
详细说明:
看到 shopex 有一个云登录机制,看代码:
跟进去看看get_ce_sign
这里默认安装时候token是个空值
所以之后md5是可以计算出来的,根据他的函数我们计算一个url
http://localhost/shopex/?passport-ecopen_login_verify.html&open_type=xxxxxxx&open_id=yyyyy&nickname=xxxxx&email=test@**.**.**.**&password=mmmm&sign=76753b58491c5baa4c7885780c753e6a
跟进去$mem = $accountMdl->createotherlogin($_GET);
这一段代码的意思就是,如果通过uname去查询的用户不存在的话,说明是个新用户
做插入操作,也就是云注册的新用户,如果这个用户存在的话就做更新资料操作
问题卡在了这里:
$user['uname'] = $row['open_type']."_".$row['open_id'];
也就是说这个用户名必须中间有下划线
通过这一番描述可见,如果是通过云注册的用户,资料可以通过单一的用户名修改这个用户的资料,如果是非云注册的用户,那么如果该用户注册的时候,用户名里面有下划线,就可以操纵修改这个用户的相关资料,包括密码
我们来测试一下
发送url:
http://localhost/shopex/?passport-ecopen_login_verify.html&open_type=xxxxxxx&open_id=yyyyy&nickname=xxxxx&email=test@**.**.**.**&password=mmmm&sign=76753b58491c5baa4c7885780c753e6a
后台抓取的第一个sql是:
在发送一次
抓看第二个sql:
正好和猜想的逻辑一样,在分一下密码这里
$user['password'] = $this->encrypt_passwd_enhanced( $user['uname'].$Var_528.STORE_KEY );
如果get传递过来的pwd 和 uname 和regtime都不为空的话 就会计算一个密码,这个密码我们也是可以控制的
唯一遗憾的就是只能重置云登录用户和用户uname里面有下划线的用户
漏洞证明:
修复方案:
版权声明:转载请注明来源 menmen519@乌云
漏洞回应
厂商回应:
危害等级:低
漏洞Rank:4
确认时间:2015-02-06 17:53
厂商回复:
非常感谢您为shopex信息安全做的贡献
我们将尽快修复
非常感谢
最新状态:
暂无
漏洞评价:
对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值