WooYun-2014-80877:qibocms 地方门户系统 二次注入#5(demo测试)
漏洞作者: ′雨。
来源:http://www.wooyun.org/bugs/wooyun-2014-080877
简要描述
二次注入。
详细说明
在hy/member/homepage_ctrl/pic_fm.php中
if(count($pids)<1) showerr("请选择一张图片");
if(!$psid) showerr("请指定一个图集");
foreach($pids as $pid){
if($pid){
$rt=$db->get_one("SELECT url FROM {$_pre}pic WHERE pid='$pid'");
$db->query("UPDATE {$_pre}picsort SET faceurl='$rt[url]' WHERE psid='$psid' AND uid='$uid'");//这里把出库的带入到了update查询当中 来找找入库的
break;
}
}
入库的地方挺多 随便找一处把
在hy/member/homepage_ctrl/pic_upload.php中
foreach($photoDB[url] AS $key=>$value){
if(!eregi("\.(gif|jpg|jpeg|png|bmp)$",$value)){
delete_attachment($uid,tempdir($value));//限定结尾必须jpg啥的
continue;
}
$picpath = "homepage/pic/".ceil($uid/1000)."/";
$picurl = $picpath.basename($value);//basename不影响
move_attachment($uid,tempdir($value),$picpath); //图片转移目录与加水印
if(!is_file(ROOT_PATH."$webdb[updir]/$picurl")){
$picurl=$value;
}
$Newpicpath=ROOT_PATH."$webdb[updir]/{$picurl}.gif";
gdpic(ROOT_PATH."$webdb[updir]/$picurl",$Newpicpath,150,150);
if(!is_file($Newpicpath)){
copy(ROOT_PATH."$webdb[updir]/{$picurl}",$Newpicpath);
}
$title = filtrate($photoDB[name][$key]);
$title = get_word($title,32);
//echo "INSERT INTO `{$_pre}pic` (`psid` , `uid` , `username` , `title` , `url` , `level` , `yz` , `posttime` , `isfm` , `orderlist` ) VALUES ('$psid', '$uid', '$lfjid', '$title', '$picurl', '0', '1', '$timestamp', '0', '0')";exit;
$db->query("INSERT INTO `{$_pre}pic` (`psid` , `uid` , `username` , `title` , `url` , `level` , `yz` , `posttime` , `isfm` , `orderlist` ) VALUES ('$psid', '$uid', '$lfjid', '$title', '$picurl', '0', '1', '$timestamp', '0', '0')"); //这里把$picurl 带入到了insert当中 入库
$ck++;
首先入库一个。
转义入库。 然后
出库 导致注入。
构造一下。
转义入库 这里我把语句输出一下。
然后 出库。
/hy/member/homepage_ctrl.php?atn=pic_fm&pids[]=45&psid=3313
出数据。
demo 测试:
入库
出库
构造一下 可以看update哪个column 出数据的。
漏洞证明
修复方案
出库转义。