• 点击这里给我发消息
  • 当前位置:首页 > 网站建设 >

    织梦(dedecms)5.7版本漏洞修复方法大全

    织梦(dedecms)5.7版本漏洞修复方法大全
    来源 重庆seo
    2018-07-17 16:46:07 阅读: 653

      织梦漏洞修复

          这几天因为dedecms织梦漏洞太多苦不堪言,网站三天两头被黑。所以,博主在网上收集整理了一份织梦(dedecms)5.7版本漏洞修复方法大全!张勇seo友情提醒:修补漏洞之前请把网站整站备份一下,以防改错一点东西导致程序出问题!

      任意文件上传漏洞修复!

      一、/include/dialog/select_soft_post.php文件,搜索(大概在72行的样子)

      $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("你指定的文件名被系统禁止!",'javascript:;'); exit(); } $fullfilename = $cfg_basedir.$activepath.'/'.$filename;;

      二、后台文件任意上传漏洞

      /dede/media_add.php或者/你的后台名字/media_add.php

      搜索$fullfilename = $cfg_basedir.$filename;(大概在69行左右)

      替换成

      if (preg_match('#.(php|pl|cgi|asp|aspx|jsp|php5|php4|php3|shtm|shtml)[^a-zA-Z0-9]+$#i', trim($filename))) { ShowMsg("你指定的文件名被系统禁止!",'javascript:;'); exit(); } $fullfilename = $cfg_basedir.$filename;

      三、 /include/uploadsafe.inc.php (有2个地方:)

      1、搜索 ${$_key.'_size'} = @filesize($$_key);

      }

      (大概在42,43行左右)

      替换成

      ${$_key.'_size'} = @filesize($$_key);

      } $imtypes = array("image/pjpeg", "image/jpeg", "image/gif", "image/png", "image/xpng", "image/wbmp", "image/bmp"); if(in_array(strtolower(trim(${$_key.'_type'})), $imtypes)) { $image_dd = @getimagesize($$_key); if($image_dd == false){ continue; } if (!is_array($image_dd)) { exit('Upload filetype not allow !'); } }

      如果修改后出现文章页面空白页,请仔细查看代码是否多了或者少了大括号},本文件44行是空的,没有代码,请注意。

      2、搜索 $image_dd = @getimagesize($$_key);(大概在53行左右)

      替换成

      $image_dd = @getimagesize($$_key); if($image_dd == false){ continue; }

      老规矩大红色地方标记了修改的地方,然后保存,接着备份原文件,比如文件名变为uploadsafe.inc.php.16.08.09.bak。然后上传修改好的文件即可。

      (SQL)注入漏洞修复

      一、 /include/filter.inc.php文件,搜索(大概在46行的样子)

      return $svar;

      修改为

      return addslashes($svar);

      二、/member/mtypes.php文件,搜索(大概在71行的样子)

      $query = "UPDATE `dede_mtypes` SET mtypename='$name' WHERE mtypeid='$id' AND mid='$cfg_ml->M_ID'";

      修改为

      $id = intval($id); $query = "UPDATE `dede_mtypes` SET mtypename='$name' WHERE mtypeid='$id' AND mid='$cfg_ml->M_ID'";

      三、 /member/pm.php文件,搜索(大概在65行的样子)

      $row = $dsql->GetOne("SELECT * FROM `dede_member_pms` WHERE id='$id' AND (fromid='{$cfg_ml->M_ID}' OR toid='{$cfg_ml->M_ID}')");

      修改为

      $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行的样子)

      $dsql->ExecuteNoneQuery("UPDATE `dede_guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");

      修改为

      $msg = addslashes($msg); $dsql->ExecuteNoneQuery("UPDATE `dede_guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");;

      五、 /plus/search.php文件,搜索(大概在109行的样子)

      $keyword = addslashes(cn_substr($keyword,30));

      修改为

      $typeid = intval($typeid); $keyword = addslashes(cn_substr($keyword,30));

      六、/member/soft_add.php   搜索(大概在154行左右)

      搜索$urls .= "{dede:link islocal='1' text='{$servermsg1}'} $softurl1 {/dede:link} ";

      替换成

      if (preg_match("#}(.*?){/dede:link}{dede:#sim", $servermsg1) != 1) { $urls .= "{dede:link islocal='1' text='{$servermsg1}'} $softurl1 {/dede:link} "; }

      七、cookies泄漏导致SQL漏洞修复

      1、/member/article_add.php文件,搜索(大概在83行的样子)

      if (empty($dede_fieldshash) || $dede_fieldshash != md5($dede_addonfields.$cfg_cookie_encode))

      修改为

      if (empty($dede_fieldshash) || ( $dede_fieldshash != md5($dede_addonfields . $cfg_cookie_encode) && $dede_fieldshash != md5($dede_addonfields . 'anythingelse' . $cfg_cookie_encode)))

      2、/member/inc/inc_archives_functions.php文件,搜索(大概在239行的样子)

      echo "<input type="hidden" name="dede_fieldshash" value="".md5($dede_addonfields.$cfg_cookie_encode)."" />";

      修改为

      echo "<input type="hidden" name="dede_fieldshash" value="". md5($dede_addonfields . 'anythingelse' .$cfg_cookie_encode) ."" />";

           这一步把member文件夹删除的小伙伴可以跳过。

      SESSION变量覆盖导致SQL注入漏洞

      include/common.inc.php文件,搜索(大概在68行的样子)

      if( strlen($svar)>0 && preg_match('#^(cfg_|GLOBALS|_GET|_POST|_COOKIE)#',$svar) )

      修改为

      if( strlen($svar)>0 && preg_match('#^(cfg_|GLOBALS|_GET|_POST|_COOKIE|_SESSION)#',$svar) )

      支付模块注入漏洞

      include/payment/alipay.php文件,搜索(大概在137行的样子)

      $order_sn = trim($_GET['out_trade_no']);

      修改为

      $order_sn = trim(addslashes($_GET['out_trade_no']));;

      变量为初始化导致本地变量注入

      /include/dedesql.class.php文件,搜索(大概在590行的样子)

      if(isset($GLOBALS['arrs1']))

      修改为

      $arrs1 = array(); $arrs2 = array(); if(isset($GLOBALS['arrs1']))

      如果之前定义过$arrs1或$arrs2的,请调整比对代码。

      为了方便不会修改代码的站长朋友,重庆seo张勇分享一份我修改好的dedecms后台程序文件。链接: https://pan.baidu.com/s/1jOIGR0k1tlvwLkpNPi6HzA 密码: iq4e

            附:dedecms网站安全设置教程

             一:尽量不要使用香港、国外等虚拟空间。

      这类虚拟空间,安全性非常低,几百甚至几千个用户的网站都放在一台服务器上,一旦其中的某个网站被攻击,正好他也是织梦系统,那么你的完整就很容易被连带攻击。大家想一下,为什么你的网站才刚做,网站都没收录,百度都搜不到你,为什么黑客会知道你,并且攻击你,就是应该你被别人连带攻击了。

      所以,极力推荐大家使用阿里云、腾讯云等国内知名名牌的空间。像腾讯云、阿里云的服务器都是可以免费试用的。

      购买阿里云

      购买腾讯云

      (为了安全起见,建议先保存备份,以下教程是AB模板网的总结经验,本人也是这样设置,并且没有任何问题)

      二:网站本身做好防范:

      1、修改默认后台名。

      打开网站根目录,找到[dede],这个文件夹就是后台的路径,可以随意修改,比如修改为[adminbuy],此时后台登陆的路径为:http://www.*****.com/adminbuy/

      2、删除member文件夹(如果你没有会员功能)

      Member文件夹就是会员系统,织梦本身是自带里会员系统的,大家也可以在后台找到,但是很多用户都是做了企业站,并不需要会员功能,就像AB模板网发布的基本都是企业站,所以并不需要会员系统,这时,大家就可以删除这个文件夹,删除他,不但可以防止攻击,还可减省了空间容量。

      3、删除special文件夹

      Special文件夹是专题的意思,AB模板网上下载的源码都没有用到这个专题页面,所以大家放心删掉好了。

      4、打开plus文件夹

      留下这么几个文件,其他全部删除,参考下图;

      

    织梦安全设置

     

      下面我们对这几个文件做下解释,

      Img 文件夹,这个是主要是CSS样式在里面,所以保留,如果删除了,会造成发布文章时界面有点乱,所以要保留

      ad_js.php 这个文件时广告位,因为有些模板用到了后台调用广告位,如果你不确定,建议保留

      Diy.php 这个是留言系统,有些模板上有用户在线留言功能,用到的就是这个,如果你不确定,建议保留

      Search.php 这个是搜索功能,也就是网站上的搜索,如果你不确定,建议保留

      List.php 这动态栏目,AB模板网上下载的都是生成静态栏目了,但是有些用户喜欢动态栏目,即使你使用的是静态栏目,这个保留也没影响,所以建议保留

      View.php 这个是动态文章,道理和list.php一样,建议保留。

      count.php 这个是文章浏览次数,建议保留。

      如果实在看不懂,就按照截图保留,其他的都删除,删除前建议备份一份。

      DEDE 管理目录下的这些文件是后台文件管理器,属于多余功能,而且最影响安全

      file_manage_control.php

      file_manage_main.php

      file_manage_view.php

      media_add.php

      media_edit.php

      media_main.php

      再有:

      不需要SQL命令运行器的将dede/sys_sql_query.php 文件删除。

      不需要tag功能请将根目录下的tag.php删除。

      多关注dedecms官方发布的安全补丁,及时打上补丁;下载发布功能(管理目录下soft__xxx_xxx.php),不用的话可以删掉,这个也比较容易上传木马的;DedeCms官网出的万能安全防护代码,我发在文章后面,官网的要会员才能看;最安全的方式:本地发布html,然后上传到空间。不包含任何动态内容,理论上最安全,不过维护相对来说比较麻烦;还是得经常检查自己的网站,被挂黑链是小事,被挂木马或删程序就很惨了,运气不好的话,排名也会跟着掉。所以还得记得时常备份数据.

      三、删除根目录下的install 文件夹,这是安装目录,因为我们都安装好了,所以这个没用了,删除即可。

      这里要提醒一下大家,由于我们修改了内容,所以当你网站要搬家换服务器时,这时,你把网站传到了新的空间,这时你需要再次安装,发现安装文件[install]上次删除了,不用担心,直接去官方下载一个网站的系统,复制的他的install 传到你的空间,进行安装即可,但是你要知道自己网站的编码(gbk、utf)。不然安装界面会乱码。

      另外,由于我们修改后台名等其他内容,所以安装时候会出现这样的情况,这个不用担心,只是系统没找到我们这个文件夹,因为我们修改了,大家直接下一步即可,但是如果你发现全部都是红色叉叉,那就是你空间权限问题了。

      

    织梦安全设置

     

      四、修改用户名和密码,修改密码很简单,后台-系统-系统用户管理,点更改,然后修改即可,但是用户名默认的是admin,大家发现不能修改用户名,其实是可以的,大家按下图操作:

      

    织梦安全设置

     

      找到功能地图,

      (如果你是VIP,AB模板网隐藏了这一链接,大家只要直接输入链接即可:sys_data_replace.php 如:http://www.adminbuy.cn/dede/sys_data_replace.php)

      

    织梦安全设置

    .

     

      找到数据库内容替换,

      

    织梦安全设置

     

      新的用户名小心填错,以免不知道用户名,进不去后台。修改后,在后台退出,然后重新进后台,用新的用户名登录。

      五、网站做好定期的备份工作,不要闲麻烦

            参考文章:

            http://www.adminbuy.cn/dedecmsjc/1368.html  

            https://www.cnblogs.com/harlanzhang/p/6236838.html


            

            本文《织梦(dedecms)5.7版本漏洞修复方法大全》作者:重庆张勇SEO,转载请注明!

    0
    添加微信:zyzqzyzq 免费解答网站优化问题

    重庆张勇seo简介
    张勇博主
    2年seo网站优化经验,喜欢研究搜索引擎算法,擅长dedecms仿站、企业网站seo优化推广,略懂主机防护『不忘初心,方得始终』
    重庆seo博客(www.cqzyseo.com)定期更新一些网站建设、网站seo优化之类的文章,期待大家持续关注或加博客微信共同交流技术经验!