今天在做网站监察的时候,发现网站出了一个问题,在对网站做木马监测的时候,扫描出一个可疑文件:/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. IoCopyCurrentIrpStackLocationToNext与IoSetCompletionRoutine的深入理解

    1.IoCopyCurrentIrpStackLocationToNext是拷贝本层的IO_STACK_LOCATION 到下一层.在楚狂人的驱动教程中说:如果对irp完成之后的事情有兴趣,并打算在完 ...

  2. linq to sql之组装where条件下的'或'语句

    之前遇到过类似的需求,即前台传入几个过滤条件,后台动态组装where. 例如,前台传入name='张三',age=10, 其余的字段,类似email,QQ之类的本次查询时不做过滤. 用linq to ...

  3. 详解Github的.gitignore忽略文件+.gitignore不生效解决方案+生产配置大奉送

    详解Github的.gitignore忽略文件+.gitignore不生效解决方案+生产配置大奉送 Git中有一个非常重要的一个文件-----.gitignore 今天给大家免费送一个.gitigno ...

  4. JAVA :Jpanel 控件 无法显示问题

    http://blog.csdn.net/gcangle/article/details/8222005 ——————————————————————————————————————————————— ...

  5. combobox的值从主页面传递到子页面

    1.主页面传递参数 url: '@Url.Action("WaterLoad")' + '?year=' + year + '&fanwei=' + fanwei, 2.控 ...

  6. Android studio导入framework编译的classes.jar包

    1.在libs文件夹中加入jar包,并将其置顶 注:studio3.1的scope没有Provided选项,都默认选择implementation,studio2.3及以下版本需要将scope设置为P ...

  7. 如何使用Javascript XSLT 处理XML文件(支持Firefox)

    最近使用Firefox进行网页的调试,发现有些Javascript XSLT处理XML的语句仅仅支持IE浏览器.而网络中的一些介绍javascript XSLT 处理XML的文章基本上都是依据AJAX ...

  8. javascript小技巧[转]

    总的来说,如果你要找js 的东西,而不看这两篇的话,肯定要多花好多时间!!哈哈!! 如果你找的javascript的东西的话,建议你 ctrl+F  直接在这个页上找,因为这里80%有你要找的,但是要 ...

  9. VMWare链接克隆 和 完整克隆

    VMware Workstation 是使用最为广泛的虚拟机软件,用软件的方式模拟硬件环境.用户可以借助VMware Workstation的模拟出来的硬件,在当前的操作系统上安装N多个虚拟的操作系统 ...

  10. ASK,OOK,FSK的联系和区别

    转自:http://www.cnblogs.com/zhihongyu/archive/2012/04/12/2443617.html ASK是幅移键控调制的简写,例如二进制的,把二进制符号0和1分别 ...