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 出数据的。

漏洞证明

修复方案

出库转义。