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

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

缺陷编号:wooyun-2013-027535

漏洞标题:shopex注册用户任意定义预存款余额或积分

相关厂商:ShopEx

漏洞作者: Code_Sec

提交时间:2013-07-03 01:23

修复时间:2013-10-01 01:24

公开时间:2013-10-01 01:24

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

危害等级:高

自评Rank:10

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2013-07-03: 细节已通知厂商并且等待厂商处理中
2013-07-03: 厂商已经确认,细节仅向厂商公开
2013-07-06: 细节向第三方安全合作伙伴开放
2013-08-27: 细节向核心白帽子及相关领域专家公开
2013-09-06: 细节向普通白帽子公开
2013-09-16: 细节向实习白帽子公开
2013-10-01: 细节向公众公开

简要描述:

shopex在注册用户时存在验证不严,导致注册时可以随意定义预存款余额或积分等字段的内容

详细说明:

在文件\core\shop\controller\ctl.passport.php

if( !$info = $account->create($_POST,$message) ) {
$this->splash('failed','back',$message,'','',$_POST['from_minipassport']);
}


用户注册的变量都保存在$_POST中,继续看根目录文件index.php

filterData($_POST);
require CORE_DIR.'/include_v5/shopCore.php';
return new shopCore();
//过滤字段
function filterData(&$data) {
static $black_list = array(
'order_num','advance','advance_freeze','point_freeze','point_history','member_lv_id',
'point','score_rate','state','role_type','advance_total','advance_consume',
'experience','login_count',
);
foreach($black_list as $v) {
unset($data[$v]);
}
}


显然已经意识到这些重要的字段是不允许通过客户端去赋值的,但是没注意大小写的问题。

shopex.jpg


漏洞证明:

shopex-111.jpg


注册后用户的预存款余额已经变为99999

修复方案:

注意大小写

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:10

确认时间:2013-07-03 12:46

厂商回复:

该问题以前已经发现并处理,相关字段已经做过过滤
非常感谢您为shopex信息安全做的贡献
非常感谢

最新状态:

2013-07-03:确实过滤不严谢谢@Code_Sec

2013-07-30:该问题已经处理 补丁包: 485safe20130703.zip