当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2014-063051

漏洞标题:齐博CMS任意文件读取(鸡肋,需注册)

相关厂商:齐博CMS

漏洞作者: loopx9

提交时间:2014-06-03 12:06

修复时间:2014-06-08 12:06

公开时间:2014-06-08 12:06

漏洞类型:任意文件遍历/下载

危害等级:中

自评Rank:8

漏洞状态:漏洞已经通知厂商但是厂商忽略漏洞

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-06-03: 细节已通知厂商并且等待厂商处理中
2014-06-08: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

RT

详细说明:

漏洞一:鸡肋的getshell(需注册并能发布文章,需配合apache、iis6解析漏洞)
文件 /inc/artic_function.php

//采集外部图片
function get_outpic($str,$fid=0,$getpic=1){
global $webdb,$lfjuid;
if(!$getpic){
return $str;
}
preg_match_all("/http:\/\/([^ '\"<>]+)\.(gif|jpg|png)/is",$str,$array);
$filedb=$array[0];
foreach( $filedb AS $key=>$value){
if( strstr($value,$webdb[www_url]) ){
continue;
}
$listdb["$value"]=$value;
}
unset($filedb);
foreach( $listdb AS $key=>$value){
$filedb[]=$value;
$name=$lfjuid.'_'.rands(5)."__".basename($value);//拼接文件名,当文件名为1.php.jpg 、1.asp;.gif 可作为解析漏洞利用
if(!is_dir(ROOT_PATH."$webdb[updir]/article/$fid")){
makepath(ROOT_PATH."$webdb[updir]/article/$fid");
}
$ck=0;
if( @copy($value,ROOT_PATH."$webdb[updir]/article/$fid/$name") ){
$ck=1;
}elseif($filestr=file_get_contents($value)){
$ck=1;
write_file(ROOT_PATH."$webdb[updir]/article/$fid/$name",$filestr);
}


利用方法:发表文章,勾选"是否将文章中的外部图片采集回来" 文章内容直接写图片马地址.

1.jpg

2.jpg

漏洞二:任意文件读取(鸡肋,需注册并能在图片频道发布文章)
文件 /inc/check.postarticle.php

......省略......
//图片频道转移图片目录
if($mid==100){ //mid=100,对应的是图片频道
foreach($post_db[photourl][url] AS $key=>$value){ //图片url可控,为发布图片处post方式传入
$value=trim($value);
if(!$value||eregi("://",$value)){
continue;
}
if(!$postdb[picurl]){
copy(ROOT_PATH."$webdb[updir]/$value",ROOT_PATH."$webdb[updir]/{$value}.jpg");//图片文件copy,如果copy一个php呢? 文件名就会变成config.php.jpg,从而可以读到配置信息.
$postdb[picurl]="{$value}.jpg";
}
move_attachment($lfjuid,tempdir($value),"photo/$fid");
if(is_file(ROOT_PATH."$webdb[updir]/photo/$fid/".basename($value))){
$post_db[photourl][url][$key]="photo/$fid/".basename($value);
}
}
......省略......

利用方法:
注册用户,在图片频道下的栏目发布文章,图片路径处填写要读取的文件。

3.jpg

4.jpg

从/data/config.php中我们可以读到管理后台地址,加密密玥等信息.有了密钥我们可以构造cookie登录后台,也可以sql注射(无视GPC)
文件 /inc/common.inc.php

......省略.....
//同步后台登录
if($_COOKIE["adminID"]&&$detail=mymd5($_COOKIE["adminID"],'DE',$onlineip)){
unset($_uid,$_username,$_password);
list($_uid,$_username,$_password)=explode("\t",$detail);
$lfjdb=$db->get_one("SELECT * FROM {$pre}memberdata WHERE uid='$_uid' AND username='$_username'");
}
//$_password没有参与登录验证过程,只要uid与username对应就ok.
if($lfjdb[yz]){
$lfjid=$lfjdb['username'];
$lfjuid=$lfjdb['uid'];
$lfjdb[icon] && $lfjdb[icon]=tempdir($lfjdb[icon]);
if($lfjdb['groupid']==3||$lfjdb['groupid']==4){
$web_admin=$sort_admin='1';
}
......省略......

所以只要知道加密使用的密钥,就能登录后台。
测试版本:v7_utf8,其他版本也可能存在,没有测试.

漏洞证明:

..

修复方案:

.

版权声明:转载请注明来源 loopx9@乌云


漏洞回应

厂商回应:

危害等级:无影响厂商忽略

忽略时间:2014-06-08 12:06

厂商回复:

最新状态:

暂无