这一次通过之前积累的数据,汇总了dedecms5.7最新版本的各种漏洞及修复方法,这里分享给大家,为了便于使用和查阅,于是全部整理放在一起。在修复dedecms漏洞时注意备份文件后再修改,避免改错了还可以还原回去。
01任意文件上传漏洞修复
关于漏洞的具体分析就不呈现,避免某些人用于不好的用途,任意文件上传就是通过一些工具,在你的网站使用非正常的方式上传一些带有木马的文件,然后通过运行获得你的管理员账号及密码等。
打开/include/dialog/select_soft_post.php文件,搜索
$fullfilename = $cfg_basedir.$activepath.'/'.$filename;替换为如下代码:
if [^a-zA-Z0-9]+$#i', trim)) { ShowMsg; exit; } $fullfilename = $cfg_basedir.$activepath.'/'.$filename;;
再次提醒,修改前备份文件,这个漏洞主要是在前台页面上,因为只有被上传了木马文件才会运行,所以尽快修复。
02后台文件任意上传漏洞
①如果有人知道你使用的dedecms系统,那么可以利用后台的一些固定路径上传文件,然后再运行,阻止上传文件的方法是打开/dede/media_add.php文件,搜索
$fullfilename = $cfg_basedir.$filename;替换成以下代码:
if [^a-zA-Z0-9]+$#i', trim)) { ShowMsg; exit; } $fullfilename = $cfg_basedir.$filename;
这个只是一个提示,具体漏洞信息不详,安全起见建议修复。
②继续打开/include/uploadsafe.inc.php,
1、搜索
${$_key.'_size'} = @filesize; }代码位置大概在42,43行左右,注意前面搜索的代码包含一个后大括号,将其替换成如下代码:
${$_key.'_size'} = @filesize;} $imtypes = array; if), $imtypes)) { $image_dd = @getimagesize; if{ continue; } if ) { exit; } }
这段代码有点不好修改,如果修改后出现文章页面空白页,请仔细查看代码是否多了或者少了大括号},本文件44行是空的,没有代码,请注意。
2、继续搜索 $image_dd = @getimagesize;,将其替换成如下代码:
$image_dd = @getimagesize; if{ continue; }这样后台任意文件上传漏洞就修复完毕了,不过经过这样的方法修复之后会存在一点小瑕疵,就是如果新安装模块,上传xml文件也会被禁止,解决方法是把漏洞文件还原回去,安装好模块之后再替换回来。
03SQL注入漏洞修复
dedecms系统存在SQL注入漏洞也不奇怪,按照方法修复即可。为了使修改方便还原回来,可以把修改前的文件重命名,加上back的字样,如filter.inc.php.back,这样如果要恢复则直接把带有back的文件代码覆盖进来就行了。
一、根目录/include/filter.inc.php文件,搜索,搜索代码return $svar;将其替换为
return addslashes;
二、打开/member/mtypes.php文件,搜索,搜索代码:
$query = "UPDATE `dede_mtypes` SET mtypename='$name' WHERE mtypeid='$id' AND mid='$cfg_ml->M_ID'";将其替换为:
$id = intval; $query = "UPDATE `dede_mtypes` SET mtypename='$name' WHERE mtypeid='$id' AND mid='$cfg_ml->M_ID'";
三、打开根目录/member/pm.php文件,搜索,搜索代码:
$row = $dsql->GetOne");
将上面的代码替换为如下代码:
$id = intval; $row = $dsql->GetOne");
与会员有关系的一处漏洞得以解决!
四、继续打开根目录/plus/guestbook/edit.inc.php文件,搜索,搜索代码:
$dsql->ExecuteNoneQuery."' WHERE id='$id' ");
将其替换成如下代码:
$msg = addslashes; $dsql->ExecuteNoneQuery."' WHERE id='$id' ");;
guestbook是留言板,如果没有使用会员系统或你已经删除了member文件夹,以上可以忽略。
五、搜索页面漏洞,打开根目录/plus/search.php文件,搜索,查找代码$keyword = addslashes);将其替换为如下代码。
$typeid = intval; $keyword = addslashes);
六、打开/member/soft_add.php,搜索,搜索
$urls .= "{dede:link islocal='1' text='{$servermsg1}'} $softurl1 {/dede:link}rn";
替换成
if {/dede:link}{dede:#sim", $servermsg1) != 1) { $urls .= "{dede:link islocal='1' text='{$servermsg1}'} $softurl1 {/dede:link}rn"; }
以上就是SQL注入相关的漏洞修复方案。
04cookies泄漏导致SQL漏洞修复
这个漏洞的修复方法是①打开/member/article_add.php文件,搜索,查找代码:
if || $dede_fieldshash != md5)
将上面的代码替换为:
if || && $dede_fieldshash != md5))
②继续打开/member/inc/inc_archives_functions.php文件,搜索,搜索代码:
echo "";
使用如下代码替换:
echo "";
05SESSION变量覆盖导致SQL注入漏洞
修复方法是打开根目录/include/common.inc.php文件,搜索,查找代码:
if>0 && preg_match#',$svar) )
替换成如下代码:
if>0 && preg_match#',$svar) )
06支付模块alipay注入漏洞
打开根目录/include/payment/alipay.php文件,搜索查找代码:
$order_sn = trim;
替换为:
$order_sn = trim);;
07变量为初始化导致本地变量注入
打开/include/dedesql.class.php文件,搜索,搜索
if),替换为:
$arrs1 = array; $arrs2 = array; if)
如果之前定义过$arrs1或$arrs2的,请调整比对代码。
08跨站攻击RemoveXSS漏洞修复
打开include/helper/filter.helper.php,搜索
$val = preg_replace/', '', $val);
在这段代码的前面一行添加:
$val = htmlspecialchars;
09友情链接xss注入漏洞修复
打开/plus/flink.php文件,搜索一下代码:
$msg = dede_htmlspecialchars;$email = dede_htmlspecialchars;$webname = dede_htmlspecialchars;$url = dede_htmlspecialchars;$logo = dede_htmlspecialchars;上面的代码替换为以下代码:
$msg = RemoveXSS);$email = RemoveXSS);$webname = RemoveXSS);$url = RemoveXSS);$logo = RemoveXSS);此为官方最新的友情链接漏洞修复方案,如果需要获得最新的漏洞修复方法,可以关注织梦在GitHub上的信息,当前网站的升级及漏洞修复都移到GitHub上去了。