WooYun-2014-80870:qibocms地方门户系统注入(多处类似,demo测试)

漏洞作者: ′雨。认证白帽子

来源:http://www.wooyun.org/bugs/wooyun-2014-080870

简要描述

初始化啊 初始化。

详细说明

很多类似的 随便找个地方把。

首先注册个会员。

在dianping/post.php中

if($action=="postnew")

{  

    if($webdb[ForbidPostMore]){

        if($db->get_one("SELECT * FROM {$_pre}content WHERE uid='$lfjuid' LIMIT 1")){

            showerr("系统设置每人只能发布一个商铺!");

        }

    }

    if(!check_rand_num($_POST["$webdb[rand_num_inputname]"])){

        showerr("系统随机码失效,请返回,刷新一下页面,再重新输入数据,重新提交!");

    }

    if(!$postdb[city_id]){

        showerr("请选择城市");

    }

    /*验证码处理*/

    if($webdb[Info_GroupPostYzImg]&&in_array($groupdb['gid'],explode(",",$webdb[Info_GroupPostYzImg]))){    

        if(!$web_admin&&!check_imgnum($yzimg)){        

            showerr("验证码不符合,发布失败");

        }

    }

    $postdb['list']=$timestamp;

    if($iftop){        //推荐置顶

        @extract($db->get_one("SELECT COUNT(*) AS NUM FROM `{$_pre}content$_erp` WHERE list>'$timestamp' AND fid='$fid' AND city_id='$postdb[city_id]'"));

让哥来发布个点评。

@extract($db->get_one("SELECT COUNT(*) AS NUM FROM {$_pre}content$_erp WHERE list>'$timestamp' AND fid='$fid' AND city_id='$postdb[city_id]'"))

来看看这个语句。 {$_pre}content$_erp 来看看这个文件中的$_erp哪里来的

可以看到 我们的这个语句位于 173行。

而对$_erp 赋值是在187行。 那么相当于我们173行的这个$_erp就没有初始化了。

结合qibocms 伪全局机制 那么我们就可以控制173行的这个$_erp 来达到注入的效果。

dianping/post.php?action=postnew&fid=11&postdb[address]=xx&postdb[city_id]=x&_erp=aaa&iftop=1&yzimg=a1df

构造一下

成功出数据。


测试demo。

嗯。

漏洞证明

修复方案

把 $_erp=$Fid_db[tableid][$fid]; 放在前面。