上次发的那个官方已补,再来继续看看还可以不。 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','<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。
IIS就这里 Linux 同理。 修复方案:参照你们之前的那样。 |
-
上一篇: FengCMS任意文件夹删除,可导致拒绝服务(需管理
下一篇: 开源java建站软件javapms存储型跨站结合CSRF可获取
还没有人抢沙发呢~