HanDs
NO.2

[7月漏洞公开] dzzoffice任意文件包含下载(需要登录) 





学习中请遵循国家相关法律法规,黑客不作恶。没有网络安全就没有国家安全

本站需要登陆后才能查看

rt...

详细说明:

任意文件包含漏洞

问题文件在dzz/system/save.php之中

code 区域
}elseif($_GET['do']=='move'){



当是move方法的时候

从115行开始看

code 区域
if($sourcetype=='icoid'){//是ico时

$data=array();
$totalsize=0;
$data['gid']=$gid;
$data['iscopy']=$iscopy;
$icos=$folderids=array();

//分4种情况:a:本地到api;b:api到api;c:api到本地;d:本地到本地;

foreach($icoids as $icoid){
//在目标位置创建
$opath=rawurldecode($icoid);

$path=rawurldecode(str_replace(array('_dock_','icosContainer_folder_','icosContainer_body_'),'',$container));


$return=IO::CopyTo($opath,$path,$iscopy);
//调用了IO类的CopyTo方法
if(!$iscopy && !$return['moved']){
$return = IO::DeleteByData($return);
}

if($return['success']===true){
$data['icoarr'][]=$return['newdata'];
if(!$tbz){
addtoconfig($return['newdata'],$ticoid);
}

if($return['newdata']['type']=='folder') $data['folderarr'][]=IO::getFolderByIcosdata($return['newdata']);
$data['successicos'][$return['icoid']]=$return['newdata']['icoid'];

}else{
$data['error'][]=$return['name'].':'.$return['success'];
}
}



那么我们继续到CopyTo方法中看一下

code 区域
function CopyTo($opath,$path,$iscopy=0){

if($io=self::initIO($opath)) return $io->CopyTo($opath,$path,$iscopy);
else return false;
}



这里$io是io_dzz调用了io_dzz的CopyTo方法

code 区域
default:

$re=IO::multiUpload($icoid,$path,$data['name']);
if($re['error']) $data['success']=$re['error'];
else{
$data['newdata']=$re;
$data['success']=true;
}
break;
}



关键的代码段在这里,直接UPload到web应用的目录中来

code 区域
public function multiUpload($opath,$path,$filename,$attach=array(),$ondup="newcopy"){



看到上传文件这里

code 区域
if($size<$partsize){
//获取文件内容
$fileContent='';

if(!$handle=fopen($filepath, 'rb')){
return array('error'=>'打开文件错误');
}
while (!feof($handle)) {
$fileContent .= fread($handle, 8192);
}
fclose($handle);

return self::upload($fileContent,$path,$filename);



直接调用了自己的上传方法。这个upload方法会将文件上传的最终目录写在返回包中

我自己在本地测试了一下

QQ20160411-3@2x.png





QQ20160411-4@2x.png





QQ20160411-5@2x.png





百度了一下,发现存在好多的dzzoffice用户呢

QQ20160411-6@2x.png





随便找了一个测试一下

QQ20160411-7@2x.png





QQ20160411-8@2x.png

漏洞证明:

任意文件包含漏洞

问题文件在dzz/system/save.php之中

code 区域
}elseif($_GET['do']=='move'){



当是move方法的时候

从115行开始看

code 区域
if($sourcetype=='icoid'){//是ico时

$data=array();
$totalsize=0;
$data['gid']=$gid;
$data['iscopy']=$iscopy;
$icos=$folderids=array();

//分4种情况:a:本地到api;b:api到api;c:api到本地;d:本地到本地;

foreach($icoids as $icoid){
//在目标位置创建
$opath=rawurldecode($icoid);

$path=rawurldecode(str_replace(array('_dock_','icosContainer_folder_','icosContainer_body_'),'',$container));


$return=IO::CopyTo($opath,$path,$iscopy);
//调用了IO类的CopyTo方法
if(!$iscopy && !$return['moved']){
$return = IO::DeleteByData($return);
}

if($return['success']===true){
$data['icoarr'][]=$return['newdata'];
if(!$tbz){
addtoconfig($return['newdata'],$ticoid);
}

if($return['newdata']['type']=='folder') $data['folderarr'][]=IO::getFolderByIcosdata($return['newdata']);
$data['successicos'][$return['icoid']]=$return['newdata']['icoid'];

}else{
$data['error'][]=$return['name'].':'.$return['success'];
}
}



那么我们继续到CopyTo方法中看一下

code 区域
function CopyTo($opath,$path,$iscopy=0){

if($io=self::initIO($opath)) return $io->CopyTo($opath,$path,$iscopy);
else return false;
}



这里$io是io_dzz调用了io_dzz的CopyTo方法

code 区域
default:

$re=IO::multiUpload($icoid,$path,$data['name']);
if($re['error']) $data['success']=$re['error'];
else{
$data['newdata']=$re;
$data['success']=true;
}
break;
}



关键的代码段在这里,直接UPload到web应用的目录中来

code 区域
public function multiUpload($opath,$path,$filename,$attach=array(),$ondup="newcopy"){



看到上传文件这里

code 区域
if($size<$partsize){
//获取文件内容
$fileContent='';

if(!$handle=fopen($filepath, 'rb')){
return array('error'=>'打开文件错误');
}
while (!feof($handle)) {
$fileContent .= fread($handle, 8192);
}
fclose($handle);

return self::upload($fileContent,$path,$filename);



直接调用了自己的上传方法。这个upload方法会将文件上传的最终目录写在返回包中

我自己在本地测试了一下

QQ20160411-3@2x.png





QQ20160411-4@2x.png





QQ20160411-5@2x.png





百度了一下,发现存在好多的dzzoffice用户呢

QQ20160411-6@2x.png





随便找了一个测试一下

QQ20160411-7@2x.png





QQ20160411-8@2x.png

修复方案:

对文件的上传做好限制就行了


学习中请遵守法律法规,本网站内容均来自于互联网,本网站不负担法律责任
dzzoffice 任意文件包含下载 ( 需要登录
#1楼
发帖时间:2016-7-14   |   查看数:0   |   回复数:0
游客组