标题:
DedeCMSV53任意变量覆盖漏洞
[打印本页]
作者:
柔肠寸断
时间:
2009-5-29 20:08
标题:
DedeCMSV53任意变量覆盖漏洞
DedeCMSV53任意变量覆盖漏洞
BY flyh4t
http://www.wolvez.org
2008-12-12
DedeCMSV53发布了,但是依旧没有将变量覆盖漏洞彻底修补。这个漏洞和ryat那个很相似 :)
看核心文件include/common.inc.php中的代码
//检查和注册外部提交的变量
foreach($_REQUEST as $_k=>$_v)
{
if( strlen($_k)>0 && eregi('^(_|cfg_|GLOBALS)',$_k) && !isset($_COOKIE[$_k]) )//程序员逻辑混乱了?
{
exit('Request var not allow!');
}
}这个地方可以通过提交_COOKIE变量绕过cfg_等关键字的过滤
接着是注册变量的代码
foreach(Array('_GET','_POST','_COOKIE') as $_request)
{
foreach($$_request as $_k => $_v) ${$_k} = _RunMagicQuotes($_v);
}然后初始化变量
//数据库配置文件
require_once(DEDEDATA.'/common.inc.php');
//系统配置参数
require_once(DEDEDATA."/config.cache.inc.php");看似不能利用了,但是幸运的是在文件最后有这样一段代码
//转换上传的文件相关的变量及安全处理、并引用前台通用的上传函数
if($_FILES)
{
require_once(DEDEINC.'/uploadsafe.inc.php');
}再看uploadsafe.inc.php给我们提供了什么
$keyarr = array('name','type','tmp_name','size');
foreach($_FILES as $_key=>$_value)
{
foreach($keyarr as $k)
{
if(!isset($_FILES[$_key][$k]))
{
exit('Request Error!');
}
}
$$_key = $_FILES[$_key]['tmp_name'] = str_replace("\\\\","\\",$_FILES[$_key]['tmp_name']);
//注意这个地方,通过common.inc.php的漏洞,我们是可以控制$_FILES[$_key]['tmp_name'] 的这里通过提交类似common.inc.php?_FILES[cfg_xxxx][tmp_name] =aaaaaa&……来覆盖cfg_xxxx
利用的时候注意给cookie赋值,同时要绕过uploadsafe.inc.php里面的一些判断
作者:
NotFree
时间:
2009-5-29 21:50
这漏洞有啥后果?
我还准备用这个CMS整个站呢。
作者:
yixi886
时间:
2009-6-9 08:13
学习一下,嘿嘿
作者:
NotFree
时间:
2009-7-27 23:28
这个怎么利用?
作者:
8591775
时间:
2009-8-3 20:14
本帖最后由 8591775 于 2009-8-3 20:20 编辑
支持下```谢谢
欢迎光临 【3.A.S.T】网络安全爱好者 (http://3ast.com/)
Powered by Discuz! 7.2