织梦dedecms漏洞修复安全

时间:2023-03-08   访问量:0

dedecms漏洞多是出了名的,所以如果硬要使用的话,建议做一下以下的相关修复。

 修复方法都是下载目录下该文件,然后替换或添加部分代码,保存后上传覆盖(记得先备份),这样的好处是防止用懒人包上传之后因为UTF8和GBK不同产生乱码,或者修改过这几个文件,然后直接修改的部分被替换掉,那之前就白改了,找起来也非常的麻烦。如果你搜索不到,看行数,找相近的,然后将我标记红色的部分复制到对应位置。


      任意文件上传漏洞修复

      一、/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}\\r\\n";
      替换成      
      if (preg_match("#}(.*?){/dede:link}{dede:#sim", $servermsg1) != 1) { $urls .= "{dede:link islocal='1' text='{$servermsg1}'} $softurl1 {/dede:link}\\r\\n"; }

     七、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 "";
      修改为
      echo "";

    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的,请调整比对代码。

      至此,dedecms漏洞修复大全含任意文件上传漏洞与注入漏洞(5.7起)就修改完毕了。


儋州市新闻资讯
更多行业动态,技术文档,尽在黑马
免费获取最新方案及报价
期待您与我们进行交流,定制您的专属企业信息化方案

咨询热线

合作咨询 请致电:
15899750475
全国客服电话(周一至周五 9:00-21:00)

微信扫一扫

网站 建设 设计 企业 服务 推广 互联网 程序 网页 产品 微信 创意 建站 更多 优化 做网站 维护 项目 深圳市 中心 策划 内容 上市 在线 seo 排名 成立 网站 建设 设计 企业 服务 推广 制作 互联网 程序 网页 案例 产品 微信 建站 更多 优化 做网站 维护 项目 深圳市 内容 上市 seo 排名 科技 集团 电子 域名 数字  深圳 公司 品牌 客户 技术 咨询 有限 app 创新 手机 提升 市场 建立 管理 合作 	功能 商家 注册 公众 网站建设 空间 邮箱 国内 设备 销售 国际 流程 分析 价格 	公司 开发 有限 技术 客户 行业 定制 咨询 手机 高端 管理 需求 市场 外贸 app 提升 策划 成立 在线 方式 视觉 创新 网站建设 认证 企业认证 宝安 商务 在线 快速 北京 响应 福田 广告 视频 上海 工作  网站 建设 推广 深圳 服务 公司 企业 开发 电话 网络 咨询 有限 定制 客户 行业 手机 技术 app 方案 外贸 中心 打造 龙岗 龙华 保障 需求 广州 管理 推荐 南山 高端 提升 方式