织梦dedesql.class.php文件漏洞解决方法
2018-04-02 11:56
381 查看
阿里云后台提示织梦dedesql.class.php文件变量覆盖漏洞会导致SQL注入,可被攻击者构造恶意SQL语句,重置管理员密码,写入webshell等,进而获取服务器权限。下面告诉大家怎么修复这个漏洞:
首先说一下dedecms不安全的参数处理机制,这里我们看一下/include/common.inc.php代码的第106行:
万恶之源其实就在这里,基本上目前dede被发现的漏洞全都死在这里。我们可以看到,程序从GPC数组中取出名值对后,只是对$_v做了简单的addslashes处理,就直接赋给了${$_k},实现了类似全局变量覆盖的机制,设计的初衷是为了开发方便,但却存在着严重的安全问题。PHP在经历了这么多年的更新换代终于修补了register_globals问题,但是dede的这段代码使php付出的努力全部白费。下面我们回归漏洞。首先是/include/dedesql.class.php的第595-607行,
在执行这段代码之前,程序未初始化$arrs1和$arrs2这两个数组。结合前面提到的dede不安全的参数处理机制,利用这段代码我们可以覆盖任意全局变量。例如在这个漏洞中,我们可以控制$GLOBALS['cfg_dbprefix']的值。解决方案:修改/include/dedesql.class.php页面第595行,新增代码如下$arrs1 = array();
$arrs2 = array();
首先说一下dedecms不安全的参数处理机制,这里我们看一下/include/common.inc.php代码的第106行:
万恶之源其实就在这里,基本上目前dede被发现的漏洞全都死在这里。我们可以看到,程序从GPC数组中取出名值对后,只是对$_v做了简单的addslashes处理,就直接赋给了${$_k},实现了类似全局变量覆盖的机制,设计的初衷是为了开发方便,但却存在着严重的安全问题。PHP在经历了这么多年的更新换代终于修补了register_globals问题,但是dede的这段代码使php付出的努力全部白费。下面我们回归漏洞。首先是/include/dedesql.class.php的第595-607行,
在执行这段代码之前,程序未初始化$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; }
相关文章推荐
- dedecms的dedesql.class.php on line 489错误的解决方法
- 解决织梦 \include\userlogin.class.php on line 21 报错的方法
- 解决:Fatal error: Call to undefined function parcv() in include\dedesql.class.php on line 489
- dedecms cookies泄漏导致SQL漏洞 article_add.php 的解决方法
- 织梦万能标签{dede:php}{dede:sql}调用方法
- 解决织梦 \include\userlogin.class.php on line 21(或16) 报错的方法
- 解决织梦 \include\userlogin.class.php on line 21(或16) 报错的方法
- 解决织梦 \include\userlogin.class.php on line 21 报错的方法
- dedecms织梦安装后COMMON.INC.PHP 文件权限777属性修改无效的解决方法
- 解决织梦 \\include\\userlogin.class.php on line 21 报错的方法
- dedecms在php7下的使用,织梦dedecsm后台一片空白的解决方法
- 解决织梦 \include\userlogin.class.php on line 21 报错的方法
- Eclipse开发过程中,加载类时候找不到class文件的解决方法
- SQL安装文件挂起解决方法
- MMC 不能打开文件 SQL Server Enterprise Manager.MSC的解决方法
- 模板文件不存在,无法解析文档!-dede报错解决方法
- PHP文件包含漏洞原理分析和利用方法
- PHP文件包含漏洞原理分析和利用方法
- PHP文件包含漏洞原理分析和利用方法
- PHP文件包含漏洞原理分析和利用方法