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

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

缺陷编号:wooyun-2013-036191

漏洞标题:ecshop2.73 api.php 两处鸡肋注入

相关厂商:ShopEx

漏洞作者: Chora

提交时间:2013-09-05 16:13

修复时间:2013-10-20 16:14

公开时间:2013-10-20 16:14

漏洞类型:SQL注射漏洞

危害等级:中

自评Rank:5

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2013-09-05: 细节已通知厂商并且等待厂商处理中
2013-09-06: 厂商已经确认,细节仅向厂商公开
2013-09-16: 细节向核心白帽子及相关领域专家公开
2013-09-26: 细节向普通白帽子公开
2013-10-06: 细节向实习白帽子公开
2013-10-20: 细节向公众公开

简要描述:

null

详细说明:

switch ($_POST['act'])
{
case 'search_goods_list': search_goods_list(); break;
case 'search_products_list': search_products_list(); break;
......
}
function search_products_list()
{
check_auth();
......
if (!empty($_POST['goods_id']) && is_numeric($_POST['goods_id']) || !empty($_POST['bn'])) //goods_id不为数字,bn不为空.假假得假,假真得真.
{
$sql = 'SELECT goods_id, last_update AS last_modify, shop_price AS price, goods_sn AS bn, goods_name AS name, goods_weight AS weight, goods_number AS store, add_time AS uptime' .
' FROM ' . $GLOBALS['ecs']->table('goods') .
' WHERE ' . empty($_POST['bn']) ? "goods_id = $_POST[goods_id]" : "goods_sn = $_POST[bn]"; //bn带入查询.
$goods_data = $GLOBALS['db']->getRow($sql);
......
}
function search_goods_list()
{
......
$page = empty($_POST['pages']) ? 1 : $_POST['pages']; //没过滤
$counts = empty($_POST['counts']) ? 100 : $_POST['counts']; //没过滤. 1 union select 1,user()
$sql = 'SELECT goods_id, last_update AS last_modify' .
' FROM ' . $GLOBALS['ecs']->table('goods') .
" WHERE is_delete = 0 AND is_on_sale = 1 AND (last_update > '" . $_POST['last_modify_st_time'] . "' OR last_update = 0)".
" LIMIT ".($page - 1) * $counts . ', ' . $counts;//联合查询select...limit 1,1 union select 1,user()
$date_arr = $GLOBALS['db']->getAll($sql);
)
function check_auth()
{
$license = get_shop_license(); // 取出网店 license信息
if (empty($license['certificate_id']) || empty($license['token']) || empty($license['certi']))
{
api_err('0x006', 'no certificate'); //没有证书数据,输出系统级错误:用户权限不够
}
if (!check_shopex_ac($_POST, $license['token'])) //带入token,需要知道数据库里token的值.
{
api_err('0x009'); //输出系统级错误:签名无效
}
/* 对应用申请的session进行验证 */
$certi['certificate_id'] = $license['certificate_id']; // 网店证书ID
$certi['app_id'] = 'ecshop_b2c'; // 说明客户端来源
$certi['app_instance_id'] = 'webcollect'; // 应用服务ID
$certi['version'] = VERSION . '#' . RELEASE; // 网店软件版本号
$certi['format'] = 'json'; // 官方返回数据格式
$certi['certi_app'] = 'sess.valid_session'; // 证书方法
$certi['certi_session'] = $_POST['app_session']; //应用服务器申请的session值
$certi['certi_ac'] = make_shopex_ac($certi, $license['token']); // 网店验证字符串
$request_arr = exchange_shop_license($certi, $license);
if ($request_arr['res'] != 'succ')
{
api_err('0x001', 'session is invalid'); //输出系统级错误:身份验证失败
}
}
function check_shopex_ac($post_params,$token)
{
ksort($post_params);
$str = '';
foreach($post_params as $key=>$value)
{
if ($key!='ac')
{
$str.=$value;
}
}
if ($post_params['ac'] == md5($str.$token))//ac的值要等于提交的参数加上$license['token']的值的md5码.
{
return true;
}
else
{
return true;
}
}

漏洞证明:

QQ图片20130905155707.jpg


2.jpg

修复方案:

...

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


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:7

确认时间:2013-09-06 08:51

厂商回复:

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

最新状态:

暂无