网站地图    收藏   

主页 > 后端 > 网站安全 >

qibocms新闻系统 Getshell (需结合解析漏洞)#2 - 网站

来源:自学PHP网    时间:2015-04-16 23:15 作者: 阅读:

[导读] 上次发的那个官方已补,再来继续看看还可以不。IIS6 or LINUX+APACHE详细说明:上回分解 请看这 WooYun: qibocms 新闻系统 Getshell (需结合解析漏洞) http: bbs qibosoft com down2 php?v=news1 0 d...

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

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 同理。

修复方案:

参照你们之前的那样。

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论