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

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

缺陷编号:wooyun-2014-067496

漏洞标题:qibocms 新闻系统 Getshell (需结合解析漏洞)#2

相关厂商:齐博CMS

漏洞作者: ′雨。

提交时间:2014-07-07 16:09

修复时间:2014-10-05 16:10

公开时间:2014-10-05 16:10

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-07-07: 细节已通知厂商并且等待厂商处理中
2014-07-09: 厂商已经确认,细节仅向厂商公开
2014-07-12: 细节向第三方安全合作伙伴开放
2014-09-02: 细节向核心白帽子及相关领域专家公开
2014-09-12: 细节向普通白帽子公开
2014-09-22: 细节向实习白帽子公开
2014-10-05: 细节向公众公开

简要描述:

上次发的那个官方已补,再来继续看看还可以不。
IIS6 or LINUX+APACHE

详细说明:

上回分解 请看这 WooYun: qibocms 新闻系统 Getshell (需结合解析漏洞)
http://bbs.qibosoft.com/down2.php?v=news1.0#down
下载地址 刚下的。
来看看官方是怎么修复的
在news/inc/artic_function.php中

function get_outpic($str,$fid=0,$getpic=1){
global $webdb,$lfjuid,$_pre;
if(!$getpic){
return $str;
}
preg_match_all("/http:\/\/([^ '\"<>]+)\.(gif|jpg|jpeg|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)."__".preg_replace("/(.*)\.(jpg|png|gif)$/is",".\\2",$value);


preg_replace("/(.*)\.(jpg|png|gif)$/is",".\\2",$value)
可以看到改了这里 这里就不能绕过了
来看看哪里还有没
_________________________________________________________________________
在form/form.php中

function get_out_pic($str,$getpic=1){
global $webdb,$_pre;
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=rands(5)."__".basename($value);
if(!is_dir(ROOT_PATH."$webdb[updir]/form")){
makepath(ROOT_PATH."$webdb[updir]/form");
}
$ck=0;
if( @copy($value,ROOT_PATH."$webdb[updir]/form/$name") ){
$ck=1;
}elseif($filestr=file_get_contents($value)){
$ck=1;
write_file(ROOT_PATH."$webdb[updir]/form/$name",$filestr);
}


可以看到这个是跟之前那个一样的,但是那个做了修改 这个函数却没有修改。
就在form/form.php里面调用了这个函数。

foreach( $m_config[is_html] AS $key=>$value)
{
$postdb[$key]=str_replace("<img ","<img onload=\'if(this.width>600)makesmallpic(this,600,800);\' ",$postdb[$key]);
//图片目录转移
$postdb[$key]=move_attachment($lfjdb[uid],$postdb[$key],"form");
//获取远程图片
$postdb[$key]=get_out_pic($postdb[$key],$GetOutPic);
$postdb[$key] = En_TruePath($postdb[$key]);
$postdb[$key] = preg_replace('/javascript/i','java script',$postdb[$key]);//过滤js代码
$postdb[$key] = preg_replace('/<iframe ([^<>]+)>/i','&lt;iframe \\1>',$postdb[$key]);//过滤框架代码
}


是把$postdb[content] 带入了这函数
$name=rands(5)."__".basename($value);
然后拼接一下语句。
preg_match_all("/http:\/\/([^ '\"<>]+)\.(gif|jpg|png)/is",$str,$array);
由于这里匹配的是最后必须是jpg之类的。 所以只有结合解析漏洞
IIS6解析漏洞 yu.php;1.jpg 这种是可以解析成php的 这个都是windows
apache+linux解析漏洞:由于apache如果不认识最后一个后缀的话就会向上识别。 例如yu.php.jpg 在linux下jpg格式不会被识别 然后就识别成了php 在windows下的话jpg就会被识别那就是个jpg了
所以两种环境可以 一种iis6 第二种 linux+apache。

漏洞证明:

content那里就写自己搭建的环境 然后里面就是马儿的内容

q1.jpg


IIS就这里 Linux 同理。

修复方案:

参照你们之前的那样。

版权声明:转载请注明来源 ′雨。@乌云


漏洞回应

厂商回应:

危害等级:低

漏洞Rank:1

确认时间:2014-07-09 11:49

厂商回复:

万能表单 是供二次开发使用的。默认没采集图片的功能。

最新状态:

暂无


漏洞评价:

评论

  1. 2014-07-08 13:18 | Let a person cry. ( 路人 | Rank:23 漏洞数:9 | xxoo)

    火速前排留名...来一发不需要解析漏洞的呗

  2. 2014-07-09 12:48 | ′ 雨。 ( 普通白帽子 | Rank:1231 漏洞数:190 | Only Code Never Lie To Me.)

    确定默认没开启? 直接下载下来不做任何配置都行。

  3. 2014-07-09 16:11 | HackPanda ( 普通白帽子 | Rank:113 漏洞数:15 | Talk is cheap,show me the shell.)

    @′ 雨。 这就是给你凑600呢。。。

  4. 2014-07-16 00:13 | 只发通用型 ( 实习白帽子 | Rank:93 漏洞数:14 | 刷通用型奖金小号)

    @′ 雨。 被你插队了QAQ,我测试时候改一下post包还要满足一个啥变量等于1来着(忘了)这个需要开发是自己写,默认确实不开启

  5. 2014-07-16 00:20 | ′ 雨。 ( 普通白帽子 | Rank:1231 漏洞数:190 | Only Code Never Lie To Me.)

    @只发通用型 那个变量结合伪全局可以直接控制的把。

  6. 2014-07-16 00:24 | ′ 雨。 ( 普通白帽子 | Rank:1231 漏洞数:190 | Only Code Never Lie To Me.)

    @只发通用型 你直接post那变量为1 就可以了。