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

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

缺陷编号:wooyun-2014-047504

漏洞标题:Ecmall SQL注射之一

相关厂商:ShopEx

漏洞作者: pandas

提交时间:2014-01-04 14:53

修复时间:2014-04-04 14:54

公开时间:2014-04-04 14:54

漏洞类型:SQL注射漏洞

危害等级:低

自评Rank:1

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

之前给公司提交过ecmall的一个漏洞合集,然后公司助理特地打shopex的400电话问要不要漏洞详情,结果却被无情地告知等他们想知道的时候再来询问漏洞详情。
Shopex对待安全就是这种态度么?
在此发一个新的注射,之前提交给我司的那些漏洞这里就先不发了,shopex你知道该怎么做的。

详细说明:

缺陷文件:/app/coupon.app.php

function extend()
{
$coupon_id = isset($_GET['id']) ? trim($_GET['id']) : '';
if (empty($coupon_id))
{
echo Lang::get('no_coupon');
exit;
}
if (!IS_POST)
{
header("Content-Type:text/html;charset=" . CHARSET);
$this->assign('id', $coupon_id);
$this->assign('send_model', Lang::get('send_model'));
$this->display("coupon_extend.html");
}
else
{
if (empty($_POST['user_name']))
{
$this->pop_warning("involid_data");
exit;
}
$user_name = str_replace(array("\r","\r\n"), "\n", trim($_POST['user_name']));
$user_name = explode("\n", $user_name);
$user_mod =&m ('member');
$users = $user_mod->find(db_create_in($user_name, 'user_name'));
if (empty($users))
{
$this->pop_warning('involid_data');
exit;
}
if (count($users) > 30)
{
$this->pop_warning("amount_gt");
exit;
}
else
{
$users = $this->assign_user($coupon_id, $users);
$store = $this->_store_mod->get_info($this->_store_id);
$coupon = $this->_coupon_mod->get_info($coupon_id);
$coupon['store_name'] = $store['store_name'];
$coupon['store_id'] = $this->_store_id;
$this->_message_to_user($users, $coupon);
$this->_mail_to_user($users, $coupon);
$this->pop_warning("ok","coupon_extend");
}
}
}


首先是coupon_id只过滤了空格,随后在else语句里进入了get_info函数:

function get_info($id)
{
$goods = $this->get(array(
'conditions' => "goods_id = '$id'",
'join' => 'belongs_to_store',
'fields' => 'this.*, store.state'
));
... 省略


读过代码的就知道了,其实上面的conditions之类的都是拼接成SQL语句最终要进入数据库的。
所以注射产生

漏洞证明:

exp:
POST index.php?app=coupon&act=extend&id=1[exp]
data:user_name=test(当前已经登录的用户名)

lll.jpg

修复方案:

原来的ecmall团队人员变动就不修复漏洞了吗?shopex可是业界良心,好好修吧。

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:10

确认时间:2014-01-05 10:59

厂商回复:

非常感谢您为shopex信息安全做的贡献
我们将尽快修复
非常感谢

最新状态:

暂无


漏洞评价:

评论