WooYun-2014-65837:qibocms 黄页系统SQL注入一枚

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

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

简要描述

过滤不严。

详细说明

http://**.**.**.**/down2.php?v=hy1.0#down

这里下载地址 刚下载的。

在hy/choose_pic.php中

if($action=='upload'){

    if(is_uploaded_file($_FILES[postfile][tmp_name])){

        $array[name]=is_array($postfile)?$_FILES[postfile][name]:$postfile_name;

        $title=$title?$title:$array[name];

        $myname_str=explode(".",strtolower($array[name]));

        $myname=$myname_str[(count($myname_str)-1)];

        if(!in_array($myname,array('gif','jpg'))) $msg="{$array[name]}图片只能是gif或者jpg的格式";        

        $array[path]="$webdb[updir]/homepage/pic/".ceil($lfjuid/1000)."/$lfjuid";    //商家图片另存

        $array[size]=is_array($postfile)?$_FILES[postfile][size]:$postfile_size;

        $webdb[company_uploadsize_max]=$webdb[company_uploadsize_max]?$webdb[company_uploadsize_max]:100;

        //if($array[size]>$webdb[company_uploadsize_max]*1024)    $msg="{$array[name]}图片超过最大{$webdb[company_uploadsize_max]}K限制";

        if($msg==''){

            $picurl=upfile(is_array($postfile)?$_FILES[postfile][tmp_name]:$postfile,$array);

            if($picurl){

                    $Newpicpath=ROOT_PATH."$array[path]/{$picurl}.gif";

                    gdpic(ROOT_PATH."$array[path]/$picurl",$Newpicpath,120,120);

                    if(!file_exists($Newpicpath)){

                        copy(ROOT_PATH."$array[path]/{$picurl}",$Newpicpath);

                    }

                    //$msg="{$array[name]}上传成功";

                    $picurl="homepage/pic/".ceil($lfjuid/1000)."/$lfjuid/$picurl";

                    $title=get_word($title,32);

                    $db->query("INSERT INTO `{$_pre}pic` ( `pid` , `psid` , `uid` , `username` ,  `title` , `url` , `level` , `yz` , `posttime` , `isfm` , `orderlist`  ) VALUES ('', '$psid', '$lfjuid', '$lfjid', '$title', '$picurl', '0', '{$webdb[auto_userpostpic]}', '$timestamp', '0', '0');");

可以看到$title=get_word($title,32); 看看title哪里来的

$title=$title?$title:$array[name]; 如果没定义$title的话就是直接用上传时候文件的名字做的 $_FILES的 然后就无视转义了。

然后就带入到了insert当中。

漏洞证明

报错了 构造一下语句。

这里限制了后缀必须为jpg之类的 所以在文件名的后面还是需要加一个这个。

直接查看源码得到数据。

修复方案