织梦dedesql.class.php文件漏洞解决方法
如遇下载链接蓝奏网盘打不开lanzous替换成lanzoux尝试! 广告
阿里云后台提示织梦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行:
万恶之源其实就在这里,基本上目前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行,新增代码如下
$arrs1 = array();
$arrs2 = array();
//特殊操作
$arrs1 = array(); $arrs2 = array(); if (isset($global[‘arrs1’]))
{
$v1 = $v2 = ”;
for ($i=0;isset($arrs1[$i]);$i++)
{
$v1 .= chr($arrs1[$i]);
}
$v1 = $v2 = ”;
for ($i=0;isset($arrs2[$i]);$i++)
{
$v2 .= chr($arrs2[$i]);
}
$global[$v1] . = $v2;
}
NOTICE:【咨询风格酷】客服微信:wwwxmamnet
NOTICE:【风格酷模板网②群】QQ群:288678775
☉免责声明:本站所有模板均来自用户分享和网络收集,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服,我们核实后会立即删除。
☉如果源码网盘地址失效!或有其他问题,请点我报错,谢谢合作!
☉人民币与积分汇率为1比10,即1元=10积分.有任何疑问请联系客服!
☉如有其他问题,请加网站客服QQ(1131734965)进行交流。
☉本站提供的源码、模板、软件工具等其他资源,都不包含技术服务,请大家谅解!
☉源码、模板等资源会随着技术、环境的升级而存在部分问题,还请慎重选择。