新闻中心
360提示织梦DedeCms全局变量覆盖漏洞,无忧小编指导站长们如何解决
站长朋友们都知道织梦dedecms系统是目前国内最受欢迎的一款开源企业系统,它的特点是代码开源,功能强大,所以越来越多的网站建设人员选择dedecms来搭建网站,但是有利就有敝的,往往黑客也看到了这个系统存在的bug,各种各样的攻击方法层出不穷,排名好的,权重高的,流量大的网站都难逃被攻击的危险。最近织梦dedecms又曝出了很多高危漏洞。一般情况下客户以防被攻击都是采用以下几种常见的防患措施。第一种:修改后台目录:安装好网站之后第一步就应该修改后台目录,把默认的dede随意改成其他名字。第二种:一般建议安装的时候数据库的表前缀最好改一下,不用dedecms默认的前缀dede_,可以改成其他的名称如bdw_第三种:安装后应立即把install文件删除;第四种:如果不需要SQL命令运行器的可以把管理目录下的sys_sql_query.php删除;第五种:不用会员系统,就把member整个文件夹全部;第六种:不用下载发布功能可以把管理目录下soft__xxx_xxx.php删除;一般以上很多站长都可以百度了解下。但是今天小编说的是dedecms存在的全局变量导致的大范围漏洞。通过以上方法是无法修补的。360也是做出了明显的提示。小编也是跟踪了一个礼拜的时间去研究,思考,分析才找到了临时的解决方案。一般织梦dedecms中存在的全局变量有以下小编在这里一一列举下: $GLOBALS, 所有全局变量数组 $_SERVER, 服务器环境变量数组 $_GET,通过GET方法传递给脚本的变量数组 $_POST, 通过POST方法传递给脚本的变量数组 $_COOKIE,cookie变量数组 $_REQUEST,所有用户输入的变量数组,包括$_GET, $_POST和$_COOKIE所包含的输入内容 $_FILES,与文件上传相关得变量数组 $_ENV,环境变量数组 $_SESSION,会话变量数组 一般这些全局变量在程序中起到的作用很大,可以直接传参通过webshell来修改网站后台的用户名密码,也就是通过这个漏洞直接重新定义数据库连接。小编研究出的解决方案是: 首先找到:include/common.inc.php这个文件 找到以下代码: foreach(Array('_GET','_POST','_COOKIE') as $_request) { foreach($$_request as $_k => $_v) ${$_k} = _RunMagicQuotes($_v); } 修改为: foreach(Array('_GET','_POST','_COOKIE') as $_request) { foreach($$_request as $_k => $_v) { if( strlen($_k)>0 && eregi('^(cfg_|GLOBALS)',$_k) ){ exit('Request var not allow!'); } ${$_k} = _RunMagicQuotes($_v); } } 通过以上修改后全局变量就不会在被覆盖,这样黑客传参数进数据库也会失败。的确dedecms存在的漏洞太多了,我们只有一点点的发现,发现后及时作出升级,打补丁,才能不被黑客有机可乘。小编最好是建议站长朋友们定期的对站点进行备份,这样就算被攻击瘫痪了也是可以恢复备份的。
本文地址:https://www.51php.com/dedecms/14938.html