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

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

缺陷编号: WooYun-2014-50679

漏洞标题: Cmseasy sql注入一枚

相关厂商: cmseasy

漏洞作者: ′雨。认证白帽子

提交时间: 2014-02-11 19:23

公开时间: 2014-05-09 19:24

漏洞类型: SQL注射漏洞

危害等级: 高

自评Rank: 20

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

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

Tags标签: 无

1人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

无视gpc 无需登录。

详细说明:

昨天下的。

\lib\plugins\pay\alipay.php



因为是调用的respond 类



code 区域
function respond() {


if (!empty($_POST)) {
foreach($_POST as $key =>$data) {
$_GET[$key] = $data;
}
}
$payment = pay::get_payment($_GET['code']);
$seller_email = rawurldecode($_GET['seller_email']);
$order_sn = str_replace($_GET['subject'],'',$_GET['out_trade_no']);
$order_sn = trim($order_sn);
if (!pay::check_money($order_sn,$_GET['total_fee'])) {
return false;
}

if($_GET['trade_status'] == "WAIT_SELLER_SEND_GOODS"||$_GET['trade_status'] == "TRADE_FINISHED" || $_GET['trade_status'] == "TRADE_SUCCESS") {
pay::changeorders($order_sn,$_GET);
return true;
}else {
return false;
}
}
}





挺多可控的



code 区域
public static function changeorders($id,$orderlog) {
//file_put_contents('logs.txt', $id);
$where=array();
$where['id']=$id;
$where['status']=4;
//$where['orderlog']=serialize($orderlog);
$update=orders::getInstance()->rec_update($where,$id);
if($update<1) {
exit('改变订单状态出错,请联系管理员');
}
}





$orderlog 基本没怎么用到 - -





code 区域
public  function rec_update($row , $where){
if(empty($this->tablename)) return;
if(!empty($row) && !empty($where)){

$sqlud='';
foreach ($row as $key=>$value) {
$key = $this->simpledb->escape_string($key);
$value = $this->simpledb->escape_string($value);
$sqlud .= "`$key`"."= '".$value."',";
}
$sqlud=rtrim($sqlud);
$sqlud=rtrim($sqlud,',');
$where = $this->webscandb_condtion($where);
$sql="UPDATE `".$this->tablename."` SET ".$sqlud." WHERE ".$where;
return $this->simpledb->execute($sql);
}





可以看到 where 是没有单引号的 开始利用把。



$order_sn = str_replace($_GET['subject'],'',$_GET['out_trade_no']);



UPDATE `cmseasy_p_orders` SET `id`= '123',`status`= '4' WHERE 123



然后让他延时 需要id=123 sleep(10) 这样



但是发现$_GET 过滤了 = 对<> urlencode。。



不知道怎么办了。 想了很久。 后面才看到。



code 区域
if (!empty($_POST)) {
foreach($_POST as $key =>$data) {
$_GET[$key] = $data;
}
}



就那用post来提交把 post未过滤= <>之类的。



漏洞证明:

2.jpg



1.jpg



3.jpg



IMG_20140308_111824.jpg



111.jpg



222.jpg





OK咯。

修复方案:

求过滤



求20分。

版权声明:转载请注明来源 ′雨。@乌云


漏洞回应

厂商回应:

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

忽略时间:2014-05-09 19:24

厂商回复:

漏洞Rank:10 (WooYun评价)

最新状态:

2014-02-28:感谢提交漏洞,官方已经修正,望尽快下载更新。


漏洞评价:

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

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

评价

  1. 2014-02-11 19:33 | xsser 认证白帽子 ( 普通白帽子 | Rank:297 漏洞数:22 | 当我又回首一切,这个世界会好吗?)
    0

    有全局过滤和处理吧

  2. 2014-02-11 23:04 | mramydnei ( 普通白帽子 | Rank:400 漏洞数:87 )
    0

    看来很有意思

  3. 2014-02-11 23:05 | xsser 认证白帽子 ( 普通白帽子 | Rank:297 漏洞数:22 | 当我又回首一切,这个世界会好吗?)
    0

    @mramydnei 不觉得很有希望

  4. 2014-02-12 00:00 | zcy ( 实习白帽子 | Rank:93 漏洞数:15 )
    0

    cmseasy不是用了那个防护脚本

  5. 2014-02-12 10:47 | ′ 雨。 认证白帽子 ( 普通白帽子 | Rank:1332 漏洞数:198 | Only Code Never Lie To Me.)
    0

    @xsser 全局360 有过滤撒。 360 被发布绕过啦。 我测试了 是可以的。

  6. 2014-02-12 10:50 | ′ 雨。 认证白帽子 ( 普通白帽子 | Rank:1332 漏洞数:198 | Only Code Never Lie To Me.)
    0

    @xsser 用了360的脚本. 然后自己的过滤 对get多点 post少点。

  7. 2014-02-12 11:02 | xsser 认证白帽子 ( 普通白帽子 | Rank:297 漏洞数:22 | 当我又回首一切,这个世界会好吗?)
    0

    @′ 雨。 show me the shell~

  8. 2014-02-12 11:50 | phith0n 认证白帽子 ( 普通白帽子 | Rank:804 漏洞数:126 | 一个想当文人的黑客~)
    0

    360开始坑厂商了,看来装了cmseasy还得装360安全卫士才行啊~

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