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

- AV AC AU C I A
发布: 2025-04-13
修订: 2025-04-13

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变量。 Discuz! 7.x /...

0%
暂无可用Exp或PoC
当前有0条受影响产品信息