本文是为了防止更多织梦站长被灰色产业侵害!
最近在DEDECMS群里听到很多老铁讨论被挂马的事情,轻则是被黑进后台种马,重则整个服务器被提权,织梦安全这么差的原因主要是开发团队解散,已经一年多没有更新新版本,织梦这种老牌cms漏洞是在所难免的。
织梦最常见挂马的位置的是:/images、/include、/data/sessions、/data/tplcache、/dede/templets、/plus、/uploads
通过服务器网站日志不难看出,一般这些叼毛都是使用软件在爬各种系统的核心目录,基本应对方案是更改dede、data、plus、include这几个目录名称,修改的时候需要主要源码的目录名也要改掉,改名方法百度一大把请自行百度。
uploads绑定二级域名、资源放根目录、m目录绑定二级域名、修改放模板的上级目录 /templets/default/ 的名字,robots文件不要暴露文件位置,这几个小手段能够避免部分有心之人。
进入正题,以下地方按需要进行修改
在 .htaccess 文件中加入以下禁止代码,请注意data、templets、uploads目录名对应
RewriteCond % !^$
RewriteRule a/(.*).(php)$ – [F]
RewriteRule data/(.*).(php)$ – [F]
RewriteRule templets/(.*).(php|htm)$ – [F]
RewriteRule uploads/(.*).(php)$ – [F]
删除/install、/special、/member(member目录根据网站情况来删除)
删除dede目录中含有的漏洞文件(可选删除)
/tpl.php 文件上传管理系统文件,有FTP上传文件就够了
/mytag_*.php、/mytag_tag_*.php 自定义标记管理**
删除plus目录中所有用不上的模块(根据网站情况来删除)
/bookfeedback.php、/bookfeedback_js.php 图书评论和评论调用文件,存在注入漏洞,不安全
/bshare.php 分享插件
/ad_js.php 广告插件,新闻资讯站用到的,请勿删除
/car.php、posttocar.php、/carbuyaction.php 购物车
/comments_frame.php 调用评论,存在安全漏洞
/digg_ajax.php、/digg_frame.php 顶踩
/download.php、/disdls.php 下载和次数统计
/erraddsave.php 纠错
/feedback.php、/feedback_ajax.php、/feedback_js.php 评论
/stow.php 内容收藏
/task.php、/task/ 计划任务
/guestbook/ 这个可以删掉
已知文件上传漏洞
一、
在/include/dialog/select_soft_post.php中查找
$fullfilename = $cfg_basedir.$activepath.'/'.$filename;
它上面加入
if (preg_match('#.(php|pl|cgi|asp|aspx|jsp|php5|php4|php3|shtm|shtml)[^a-zA-Z0-9]+$#i', trim($filename))){
ShowMsg("你指定的文件名被系统禁止!","-1");
exit();
}
二、
在/include/uploadsafe.inc.php中
查找
$cfg_not_allowall = "php|pl|cgi|asp|aspx|jsp|php3|shtm|shtml";
替换成
$cfg_not_allowall = "php|pl|cgi|asp|aspx|jsp|php3|shtm|shtml|htm|html";
查找
$image_dd = @getimagesize($$_key);
它后面添加
if($image_dd == false){
continue;
}
三、
在/dede/media_add.php中查找
$fullfilename = $cfg_basedir.$filename;
它上面加入
if (preg_match('#.(php|pl|cgi|asp|aspx|jsp|php5|php4|php3|shtm|shtml)[^a-zA-Z0-9]+$#i', trim($filename))){
ShowMsg("你指定的文件名被系统禁止!","-1");
exit();
}
四、
//DedeCMS <=5.7 SP2 file_class.php 任意文件上传漏洞
在/dede/file_class.php 中查找
else if(preg_match("/\.(".$fileexp.")/i",$filename))
替换为
else if(substr($filename, -strlen($fileexp))===$fileexp)
已知其他漏洞
一、
在/include/taglib/flink.lib.php中查找
删除
else if($typeid == 999)
{
里面的内容也删除
}
二、
在/dede/module_main.php中注释
//向织梦官网发送卸载或安装插件的信息,若服务器配置不高,或不支持采集(下载),那会卡死!注释掉以下代码
SendData($hash);在321行
SendData($hash,2);在527行
三、
在/include/dedemodule.class.php中
将
//版本检测代码,30分钟一次,要扫描文件的!为什么管理模块打不开的原因就在这里,网站配置低的,卡死!
if(file_exists($cachefile) && (filemtime($cachefile) + 60 * 30) > time())
修改为
if(file_exists($cachefile) && filesize($cachefile) > 10)
四、
在/include/common.func.php中
将
$arrs1 = array(
...
0x3e);
删除
已知RemoveXSS漏洞
在/include/helpers/filter.helper.php中
搜索
$val = preg_replace('/([\x00-\x08,\x0b-\x0c,\x0e-\x19])/', '', $val);
在其上面添加
$val = dede_htmlspecialchars($val);
//注意:php5.4以下版本则没有htmlspecialchars函数可用代替dede_htmlspecialchars
已知SQL注入漏洞
一、
在/include/filter.inc.php中
搜索
return $svar;
修改为
return addslashes($svar);
搜索
${$_k} = _FilterAll($_k,$_v);
替换为
${$_k} = addslashes(_FilterAll($_k,$_v));
二、
在/include/dedesql.class.php中
搜索
//$this->safeCheck = TRUE;
$this->safeCheck = FALSE; //关闭恶意访问拦截
替换为
$this->safeCheck = TRUE; //如果搜索功能报错,请将这里关闭
//$this->safeCheck = FALSE; //关闭恶意访问拦截
搜索
if(isset($GLOBALS['arrs1']))
前面加上
$arrs1 = array(); $arrs2 = array();
细节方面
/images、/include、/data/common.inc.php、/dede、/plus这几个目录设置为只读:对应权限555
以上就是预防挂马的最新方法!
被挂马之后可以下载D盾扫描网站木马程序,并进行清理