Discuz! 7.x/6.x论坛绕过全局变量防御漏洞

影响版本:Discuz! 7.x / 6.x

漏洞描述:Discuz!是一款华人地区非常流行的Web论坛程序。

由于php5.3.x版本php.ini的设置中request_order默认值为GP,导致Discuz! 6.x/7.x中可以绕过全局变量防御。

在include/global.func.php代码中:

function daddslashes($string, $force = 0) { !defined(MAGIC_QUOTES_GPC) && define(MAGIC_QUOTES_GPC, get_magic_quotes_gpc()); if(!MAGIC_QUOTES_GPC || $force) { if(is_array($string)) { foreach($string as $key => $val) { $string[$key] = daddslashes($val, $force); } } else { $string = addslashes($string); } } return $string;}

include/common.inc.php中:

foreach(array(_COOKIE, _POST, _GET) as $_request) { foreach($$_request as $_key => $_value) { $_key{0} != _ && $$_key = daddslashes($_value); }}

在register_globals=on时通过提交GLOBALS变量就可以绕过上面的代码。为了防范这种情况,Discuz!中有如下代码:

if (isset($_REQUEST[GLOBALS]) OR isset($_FILES[GLOBALS])) { exit(Request tainting attempted.);}

$_REQUEST这个超全局变量的值受php.ini中request_order的影响,在最新的php5.3.x系列中,request_order默认值为GP,也就是说默认配置下$_REQUEST只包含$_GET和$_POST而不包括$_COOKIE。通过 COOKIE就可以提交GLOBALS变量。<*参考 http://www.80vul.com/dzvul/sodb/19/sodb-2010-01.txt*>安全建议:临时解决方法:

* 更改php 5.3.x里的php.ini设置,设置request_order为GPC。

厂商补丁:

Discuz!——-目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:

http://www.discuz.net/

并且为之实践了关怀和付出的善举。对于我性情中的易感和怨薄,

Discuz! 7.x/6.x论坛绕过全局变量防御漏洞

相关文章:

你感兴趣的文章:

标签云: