当前位置:中国反病毒小组 >> 漏洞公告 >> 漏洞危急 >> 浏览文章
Discuz!最新漏洞 6.x/7.x 全局变量防御绕过漏洞
作者:佚名 日期:2010年06月08日 来源:本站原创 浏览: 【字体:
核心提示:影响版本: Discuz! 6.x/7.x  漏洞描述: 由于php5.3.x版本里php.ini的设置里request_order默认值为GP,导致Discuz! 6.x/7.x 全局变量防御绕过漏洞  include/global.func.php代码里:  function dadd
保护您的计算机 打造洁净网络 中国反病毒小组给您安全的保障
MYSQL安装图解 PHP MYSQL MYSQL下载 iis下载 iis php IIS是什么
中国反病毒小组网2010年06月08日消息:
影响版本:
Discuz! 6.x/7.x 
漏洞描述:
由于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功能的代码,在GPC为off时会调用addslashes()函数处理变量值,但是如果直接使用_GET/_POST/_COOKIE这样的变量,这个就不起作用了,然而dz的源码里直接使用_GET/_POST/_COOKIE的地方很少,存在漏洞的地方更加少:( 

不过还有其他的绕过方法,在register_globals=on下通过提交GLOBALS变量就可以绕过上面的代码了.为了防止这种情况,dz中有如下代码: 

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

这样就没法提交GLOBALS变量了么? 

_REQUEST这个超全局变量的值受php.ini中request_order的影响,在最新的php5.3.x系列中,request_order默认值为GP,也就是说默认配置下_REQUEST只包含_GET和_POST,而不包括_COOKIE,那么我们就可以通过COOKIE来提交GLOBALS变量了:)
<*参考
Author: 80vul-B
Team: http://www.80vul.com
*>
SEBUG安全建议:
厂商补丁: 
Discuz!  
-------- 
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本: 
http://Discuz.net/ 

临时解决办法: 

更改php5.3.x里的php.ini设置: request_order为GPC
中国反病毒小组
此文章对你有帮助吗?如果未能解决你的困扰,请访问我们的论坛发帖求助吧,我要求助!
分享按钮
Tegs:
责任编辑:shaoey
上一篇文章:微软4月补丁修复92个漏洞 网民按“F1”键安全 下一篇文章:微软6月下周二发10补丁 修复34个安全漏洞
Copyright 2007-2011 AntiVirus.com, ALL Rights Reserved.
保护您的计算机 打造洁净网络 中国反病毒小组给您安全的保障
豫ICP备11016355号-1