织梦dedesql.class.php文件漏洞解决方法

阿里云后台提示织梦dedesql.class.php文件变量覆盖漏洞会导致SQL注入,可被攻击者构造恶意SQL语句,重置管理员密码,写入webshell等,进而获取服务器权限。下面告诉大家怎么修复这个漏洞:

修复方法:

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

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

修改为

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

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

详细教程:

先说一下dedecms不安全的参数处理机制,这里我们看一下/include/common.inc.php代码的第106行:

织梦dedesql.class.php文件漏洞解决方法

万恶之源其实就在这里,基本上目前dede被发现的漏洞全都死在这里。我们可以看到,程序从GPC数组中取出名值对后,只是对$_v做了简单的addslashes处理,就直接赋给了${$_k},实现了类似全局变量覆盖的机制,设计的初衷是为了开发方便,但却存在着严重的安全问题。PHP在经历了这么多年的更新换代终于修补了register_globals问题,但是dede的这段代码使php付出的努力全部白费。

下面我们回归漏洞。首先是/include/dedesql.class.php的第595-607行,

织梦dedesql.class.php文件漏洞解决方法

在执行这段代码之前,程序未初始化$arrs1和$arrs2这两个数组。结合前面提到的dede不安全的参数处理机制,利用这段代码我们可以覆盖任意全局变量。例如在这个漏洞中,我们可以控制$GLOBALS[‘cfg_dbprefix’]的值。

解决方案:

修改/include/dedesql.class.php页面第595行,新增代码如下

①本站所有织梦模板资源均来自用户分享和网络收集,如果侵犯了您的权益,请联系网站客服处理
②本站的源码程序都由博主亲自评测之后上架织梦楼。无毒无后门绿色安全。
③本站提供的织梦源码,均带数据及演示地址。可以在任一源码详情页查看演示地址。
④由于博主时间紧缺,所有模板源码不提供技术支持。仅部分收费原创源码提供售后
人民币与金币汇率为1比1,即1元=1金币
织梦楼 » 织梦dedesql.class.php文件漏洞解决方法

发表评论

加入织梦楼永久VIP 海量资源免费下载

目前为止共有 322 位会员加入