最新织梦cms漏洞之安全设置,有效防护木马(更新至20190920)

(此图片来源于网络,如有侵权,请联系删除! )
织梦CMS在安装完成后,新人往往会直接开始开发使用,忽视了一些安全优化的操作,这样会导致后期整个系统安全系数降低,被黑或者被注入的概率极高,毕竟这世界百分百存在着极多的无聊hacker对全网的网站进行扫描,扫到你这个菜站,尤其是使用率极高的DEDECMS,对你的站点下手的欲望更高,所以在开发前做好安全防范还是很有必要的!
安全设置前:备份网站文件及数据库
系统安全优化设置之前,做好备份工作。网站备份是网站维护必须必学基础。
安全设置一:删文件
安装完成后会有一些文件,可以说是冗余文件,完全没有作用,反而带来被黑的危险,删除即可,以下目录文件均可删除:
| 目录 | 删除原因 |
|---|---|
| /install | 安装后的余留文件,没用,整个文件夹删除 |
| /member | 会员功能文件,大数企业站没用,文件夹删除,若需要会员功能的就不能删 |
| /special | 专题功能,如果你不需要这个功能,文件夹删除,需要就别删,大部分是不需要的 |
| /tags.php | TAG标签,没有此功能可删除 |
| 网站后台目录dede要删除的文件 | 删除原因 |
|---|---|
| /dede/tpl.php | 文件上传管理系统文件,易被挂马,强烈建议删除或者不用时请改名(tpl备用.php) |
| /dede/templets_*.php | 模板管理功能,老手建议删除,使用FTP管理 |
| /dede/media_*.php | 附件数据管理功能文件,易被挂马,删除(用你的FTP管理文件就可以了,别用这个) |
| /dede/file_*.php | 文件式管理器功能控制器文件,易被挂马,删除(用你的FTP管理文件就可以了,别用这个) |
| /dede/mytag_*.php、mytag_tag_*.php | 自定义标记管理,易被上传一句话木马 |
| /dede/story_*.php | 小说功能,可删除 |
| /dede/erraddsave.php | 纠错功能,可删除 |
| /dede/feedback_*.php | 评论管理,可删除 |
| /dede/group_*.php | 圈子功能,很少用到,可删除 |
| /dede/co_*.php | 采集控制文件,可删除 |
| /dede/cards_*.php | 点卡功能功能,可删除 |
| /dede/ad_*.php | 广告管理添加/删除文件,企业站一般不用可删除 |
| /dede/spec_*.php | 专题管理,没有专题页面,可删除 |
| /dede/vote_*.php | 投票功能,可删除 |
| /dede/sys_sql_query.php | SQL命令运行器,不需要的话可以改名为(sys_sql_query安全禁用.php)也可以删除 |
| 目录/plus要删除的文件 | 删除原因(正常的企业站可以只保留list.php、view.php、count.php、search.php、diy.php(企业站经常用到的表单)五个文件以及img文件夹,其他全部删除) |
|---|---|
| /plus/guestbook | 留言簿模块,整体删除,容易SQL注入及垃圾留言, |
| /plus/task和task.php | 计划任务控制文件,文件夹和文件都删除 |
| /plus/bookfeedback.php、bookfeedback_js.php | 图书评论和评论调用文件,存在注入漏洞,不安全 |
| /plus/bshare.php | 分享插件 |
| /plus/ad_js.php | 广告插件,新闻资讯站用到的,请勿删除 |
| /plus/car.php、posttocar.php、carbuyaction.php | 购物车 |
| /plus/comments_frame.php | 调用评论,存在安全漏洞 |
| /plus/digg_ajax.php、digg_frame.php | 顶踩 |
| /plus/download.php、disdls.php | 下载和次数统计 |
| /plus/erraddsave.php | 纠错 |
| /plus/feedback.php、feedback_ajax.php、feedback_js.php | 评论 |
| /plus/stow.php | 内容收藏 |
| /plus/vote.php | 投票 |
安全设置二:后台目录及账号密码修改
①网站后台文件改名:默认后台目录是/dede,需要将这个文件夹的名称修改,比如改为WangZhan123@+,那么后台登陆地址就由www.xxx.com/dede变为www.xxx.com/WangZhan123@+,(不定期更改一下)
②后台登录密码请勿使用admin。
安全设置三:目录权限设置
①有条件的用户把中 data、templets、uploads、a(可删)、special(可删)、images、install(装后删)目录设置为不允许执行脚本,include、plus、dede目录禁止写入,系统将更安全;
②权限设置一般通过主机控制面板,比如阿里云的文件和目录权限设置、西部数码的文件保护等等。
③老版本若登录后台提示验证码错误,选中/data目录,将权限设置为完全控制(可读可写)权限

(此图片来源于网络,如有侵权,请联系删除! )
安全设置四:主机安全防护
主机安全防护只针对独立服务器或者VPS。
WIN服务器:可以安装安全狗、『D盾_防火墙』
LINUX服务器:网站防窜改程序、宝塔系统加固;
安全设置五:任意文件上传漏洞
①、漏洞文件① /include/dialog/select_soft_post.php
1$fullfilename = $cfg_basedir.$activepath.'/'.$filename; 2修改为 3if (preg_match('#.(php|pl|cgi|asp|aspx|jsp|php5|php4|php3|shtm|shtml)[^a-zA-Z0-9]+$#i', trim($filename))) { 4 ShowMsg("你指定的文件名被系统禁止!",'javascript:;'); 5 exit(); 6} 7$fullfilename = $cfg_basedir.$activepath.'/'.$filename; |
②、漏洞文件 /dede/media_add.php
这是后台文件任意上传漏洞(上面有说删除此文件,如果不删除,需要使用这个功能,那么修改以下代码补掉漏洞)
1$fullfilename = $cfg_basedir.$filename; 2修改为 3if (preg_match('#.(php|pl|cgi|asp|aspx|jsp|php5|php4|php3|shtm|shtml)[^a-zA-Z0-9]+$#i', trim($filename))) { 4 ShowMsg("你指定的文件名被系统禁止!",'javascript:;'); 5 exit(); 6 } 7$fullfilename = $cfg_basedir.$filename; |
③、漏洞文件 /include/uploadsafe.inc.php (修改两个地方)
1$image_dd = @getimagesize($$_key); 2修改为 3$image_dd = @getimagesize($$_key); if($image_dd == false){ continue; } |
1${$_key.'_size'} = @filesize($$_key);} 2修改为 3${$_key.'_size'} = @filesize($$_key);} 4$imtypes = array("image/pjpeg", "image/jpeg", "image/gif", "image/png", "image/xpng", "image/wbmp", "image/bmp"); 5if(in_array(strtolower(trim(${$_key.'_type'})), $imtypes)) { $image_dd = @getimagesize($$_key); if($image_dd == false){ continue; } 6if (!is_array($image_dd)) { exit('Upload filetype not allow !');} } |
安全设置六、SQL注入漏洞
①、漏洞文件 /include/filter.inc.php (大概在46行)
1return $svar; 2修改为 3return addslashes($svar); |
②、漏洞文件 /plus/search.php (大概在109行)
1$keyword = addslashes(cn_substr($keyword,30)); 2修改为 3$typeid = intval($typeid); $keyword = addslashes(cn_substr($keyword,30)); |
③、漏洞文件 /member/mtypes.php (大概在71行)
1$query = "UPDATE `dede_mtypes` SET mtypename='$name' WHERE mtypeid='$id' AND mid='$cfg_ml->M_ID'"; 2修改为 3$id = intval($id); $query = "UPDATE `dede_mtypes` SET mtypename='$name' WHERE mtypeid='$id' AND mid='$cfg_ml->M_ID'"; |
④、漏洞文件 /member/pm.php文件 (大概在65行)
1$row = $dsql->GetOne("SELECT * FROM `dede_member_pms` WHERE id='$id' AND (fromid='{$cfg_ml->M_ID}' OR toid='{$cfg_ml->M_ID}')"); 2修改为 3$id = intval($id); $row = $dsql->GetOne("SELECT * FROM `dede_member_pms` WHERE id='$id' AND (fromid='{$cfg_ml->M_ID}' OR toid='{$cfg_ml->M_ID}')"); |
⑤、漏洞文件 /plus/guestbook/edit.inc.php (大概在55行)
1$dsql->ExecuteNoneQuery("UPDATE `dede_guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' "); 2修改为 3$msg = addslashes($msg); $dsql->ExecuteNoneQuery("UPDATE `dede_guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");; |
⑥、漏洞文件 /member/soft_add.php (大概在154行)
1$urls .= "{dede:link islocal='1' text='{$servermsg1}'} $softurl1 {/dede:link} 2"; 3修改为 4if (preg_match("#}(.*?){/dede:link}{dede:#sim", $servermsg1) != 1) 5{ $urls .= "{dede:link islocal='1' text='{$servermsg1}'} $softurl1 {/dede:link} 6"; } |
⑦、漏洞文件 /member/article_add.php (大概在83行,cookies泄漏导致SQL漏洞)
1if (empty($dede_fieldshash) || $dede_fieldshash != md5($dede_addonfields.$cfg_cookie_encode)) 2修改为 3if (empty($dede_fieldshash) || ( $dede_fieldshash != md5($dede_addonfields . $cfg_cookie_encode) && $dede_fieldshash != md5($dede_addonfields . 'anythingelse' . $cfg_cookie_encode))) |
⑧、漏洞文件 /member/album_add.php (大约220行,对输入参数mtypesid未进行int整型转义,导致SQL注入发生)
1$description = HtmlReplace($description, -1);//2011.06.30 增加html过滤 (by:织梦的鱼) 2修改为 3$description = HtmlReplace($description, -1);//2011.06.30 增加html过滤 (by:织梦的鱼) 4$mtypesid = intval($mtypesid); |
⑨、漏洞文件 /member/inc/inc_archives_functions.php (大概在239行,cookies泄漏导致SQL漏洞)
1echo "<input type="hidden" name="dede_fieldshash" value="".md5($dede_addonfields.$cfg_cookie_encode)."" />"; 2修改为 3echo "<input type="hidden" name="dede_fieldshash" value="". md5($dede_addonfields . 'anythingelse' .$cfg_cookie_encode) ."" />"; |
⑩、漏洞文件 /include/common.inc.php (SESSION变量覆盖导致SQL注入漏洞,最新的版本中已经修复)
1if( strlen($svar)>0 && preg_match('#^(cfg_|GLOBALS|_GET|_POST|_COOKIE)#',$svar) ) 2修改为 3if( strlen($svar)>0 && preg_match('#^(cfg_|GLOBALS|_GET|_POST|_COOKIE|_SESSION)#',$svar) ) |
⑪、漏洞文件 /include/payment/alipay.php (支付模块注入漏洞,此漏洞织梦官方在最新的版本中已经修复)
1$order_sn = trim($_GET['out_trade_no']); 2修改为 3$order_sn = trim(addslashes($_GET['out_trade_no'])); |
⑫、漏洞文件 /include/dedesql.class.php (大概在590行)
1if(isset($GLOBALS['arrs1'])) 2修改为 3$arrs1 = array(); $arrs2 = array(); if(isset($GLOBALS['arrs1'])) |
⑬、漏洞文件 /member/inc/archives_check_edit.php (大概第92行,dedecms前台任意文件删除(需要会员中心),发表文章处,对于编辑文章的时候图片参数处理不当,导致了任意文件删除)
1$litpic =$oldlitpic; 2修改为 3$litpic =$oldlitpic; 4if (strpos( $litpic, '..') !== false || strpos( $litpic, $cfg_user_dir."/{$userid}/" ) === false) exit('not allowed path!'); |
安全设置五:无用文件中的风险代码删除
① dede empletslogin_ad.htm(这是织梦默认后台登陆界面的广告代码,没用,删除以下这段代码)
1<!--<script type="text/javascript" src="<?php echo UPDATEHOST;?>/dedecms/loginad.<?php echo $cfg_soft_lang; ?>.js"></script>--> 2<div class="dede-ad"> 3 <ul> 4 <script type="text/javascript"src="//www.wzccxx.ml/usr/uploads/auto_save_image/104bcca54d346b569090275b62a1d7ea.jpg"/> (此图片来源于网络,如有侵权,请联系删除! )
|
