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

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2015-0140019

漏洞标题:Haidao网店系统 最新版前台任意用户登入

相关厂商:www.haidao.la

漏洞作者: 路人甲

提交时间:2015-09-10 15:02

修复时间:2015-12-10 12:42

公开时间:2015-12-10 12:42

漏洞类型:设计缺陷/逻辑错误

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-09-10: 细节已通知厂商并且等待厂商处理中
2015-09-11: 厂商已经确认,细节仅向厂商公开
2015-09-14: 细节向第三方安全合作伙伴开放(绿盟科技唐朝安全巡航
2015-11-05: 细节向核心白帽子及相关领域专家公开
2015-11-15: 细节向普通白帽子公开
2015-11-25: 细节向实习白帽子公开
2015-12-10: 细节向公众公开

简要描述:

v1.12.3.150828
全站数据一览无余。

详细说明:

先看看 检测用户登入的函数
/appliaction/Controller/UserBaseController.class.php

public function _initialize() {
parent::_initialize();
$this->userid = (int) authcode(cookie('user_key'), 'DECODE', C('site_key'));
$this->userinfo = getUserInfo();
if (!$this->userid || !$this->userinfo) {
showmessage('您的登录信息已过期', U('Public/login', array('url_forward' => urlencode(__SELF__)) ));
}


检测是的 cookie user_key。
用authcode加密了。采用的是dz的那个经典加密算法。无法得到其key。
那么就来看看哪里 可以获取到任意字符 加密后的数据。
/appliaction/Controller/Goods/OrderController.class.php

...
public function _initialize() {
...
$this->keys = $this->getKey();
...
private function getKey() {
if(empty($_GET['keys'])) {
$keys = cookie('norder_keys');
} else {
$keys = authcode(trim($_GET['keys']), 'ENCODE');
}
$this->keys = $keys;
cookie('norder_keys', $keys);

return $keys;
}


可以看到,这里对get过来的 keys,用authcode加密后 输出到了 cookie当中。
官网测试下。随意注册个用户
http://demo.haidao.la/index.php?m=Goods&c=Order
post提交
keys=1
测试 id为1的用户
然后看到cookie 中的 norder_keys

h3.png


将 user_key替换为这个值。 成功登入。

h4.png


循环keys的值。 即可控制全站会员数据。

漏洞证明:

h4.png

修复方案:

再判断下 password。

版权声明:转载请注明来源 路人甲@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:7

确认时间:2015-09-11 12:41

厂商回复:

感谢对海盗云商的关注,我们会尽快修复!

最新状态:

暂无


漏洞评价:

评价