Dedecms的变量覆盖漏洞的利用

发布日期:2011-08.12发布作者:c4rp3nt3r

漏洞类型:变量覆盖漏洞描述:

1.在magic_quotes_gpc=Off时common.inc.php对原来的一维数组的$_GET原始数据没有进行addslashes,而是对一维数组的$$key进行了addslashes,导致filter.inc.php再次覆盖的时候使_RunMagicQuotes函数成了纸老虎。

2.common.inc.php//检查和注册外部提交的变量,此处只检查一维数组的key,可以被绕过从而创建不允许的系统配置变量我们可以通过下面的变量覆盖漏洞使用GET提交的方式创建出$_POST数组数据,创建是在检查之后的也就绕过了检查,创建出来之后,程序又将其注册成了变量。

3.filter.inc.php这个文件在系统配置文件之后,里面有foreach循环创建变量,所以可以覆盖系统变量。

1.在magic_quotes_gpc=off的时候可以绕过_RunMagicQuotes的过滤!xxx.php?site=c4rp3nt3r’s blog经过common.inc.php$c4rp3nt3r=c4rp3nt3r\&;s blog经过filter.inc.php$c4rp3nt3r=c4rp3nt3r’s blog

2.创建系统变量

程序不允许创建cfg_开头的变量,依靠这样来防御系统变量未初始化漏洞。common.inc.php文件的漏洞我们创建了系统变量就可以触发此类漏洞。但是有的系统变量已经初始化了,而且是在common.inc.php文件foreach循环注册变量之后,就是说我们能创建,但是没法覆盖~~~但是好玩的是filter.inc.php这个文件又进行了一次foreach循环也就是二次创建。所以如果包含了filter.inc.php文件我们就可以覆盖系统变量。

在/member目录的大部分文件都包含这么一个文件/member/config.php这个文件的前两句就是require_once(dirname(__FILE__).’/../include/common.inc.php’);require_once(DEDEINC.’/filter.inc.php’);就是说/member目录的大部分文件都受此漏洞影响可以覆盖系统变量。其他目录的文件也不一定就是安全的,可以触发系统变量未初始化漏洞。

有两种利用方法1.依赖于common.inc.php的变量创建和filter.inc.php的变量覆盖//magic_quote_gpc=Off我们提交xxx.php?_GET[cfg_xx]=c4rp3nt3r’s blog经过common.inc.php$_GET[cfg_xx]=c4rp3nt3r\&;s blog经过filter.inc.php$cfg_xx=c4rp3nt3r’s blog

2.依赖于common.inc.php的变量创建

提交xxx.php?_POST[cfg_xx]=c4rp3nt3r’s blog//检查和注册外部提交的变量foreach($_REQUEST as $_k=>$_v) //此处只检查一维数组的key,可以被绕过从而创建不允许的系统配置变量{if( strlen($_k)>0 && eregi(‘^(cfg_|GLOBALS)’,$_k) ) //$_k=’_POST[cfg_xx]‘;绕过了正则{exit(‘Request var not allow!’);}}

function _RunMagicQuotes(&$svar){if(!get_magic_quotes_gpc()){if( is_array($svar) ){foreach($svar as $_k => $_v) $svar[$_k] = _RunMagicQuotes($_v);}else{$svar = addslashes($svar);}}return $svar;}

foreach(Array(‘_GET’,’_POST’,’_COOKIE’) as $_request){

foreach($$_request as $_k => $_v) ${$_k} = _RunMagicQuotes($_v);//如果提交xxx.php?_GET[cfg_xx]=c4rp3nt3r’s blog//仅仅创建了$_GET[cfg_xx]但是第一次的循环$_GET已经执行完了,只能利用filter.inc.php的foreach循环变量覆盖来创建了//如果我们提交xxx.php?_POST[cfg_xx]=c4rp3nt3r’s blog//第一次执行$_GET循环后才创建出$_POST[cfg_xx],就不会进入上面的正则检查//但是下一次进行$_POST循环时候正好注册我们的变量$cfg_xx=c4rp3nt3r\&;s blog

}

幸福不是因为你拥有得多,而是由于你计较得少。

Dedecms的变量覆盖漏洞的利用

相关文章:

你感兴趣的文章:

标签云: