漏洞概要
关注数(24)
关注此漏洞
漏洞标题:shopex 接口设计问题导致某一类用户名密码重置
提交时间:2015-02-05 17:04
修复时间:2015-05-07 17:54
公开时间:2015-05-07 17:54
漏洞类型:设计缺陷/逻辑错误
危害等级:高
自评Rank:15
漏洞状态:厂商已经确认
Tags标签:
无
漏洞详情
披露状态:
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@163.com&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@163.com&password=mmmm&sign=76753b58491c5baa4c7885780c753e6a
后台抓取的第一个sql是:
在发送一次
抓看第二个sql:
正好和猜想的逻辑一样,在分一下密码这里
$user['password'] = $this->encrypt_passwd_enhanced( $user['uname'].$Var_528.STORE_KEY );
如果get传递过来的pwd 和 uname 和regtime都不为空的话 就会计算一个密码,这个密码我们也是可以控制的
唯一遗憾的就是只能重置云登录用户和用户uname里面有下划线的用户
漏洞证明:
修复方案:
漏洞回应
厂商回应:
危害等级:低
漏洞Rank:4
确认时间:2015-02-06 17:53
厂商回复:
非常感谢您为shopex信息安全做的贡献
我们将尽快修复
非常感谢
最新状态:
暂无