关于MetInfo后台上传组件漏洞的官方说明

2009-12-23 MetInfo

最近网络上流传这一篇“米拓信息(MetInfo.cn)后台上传漏洞”,经官方测试此漏洞并不存在,请广大用户放心使用。

主要通过以下2点给予举证说明:
1、发布此贴的作者指出“具体利用办法 - 登录后台权限 - 上传页面相当多”,但没有阐述如何取得“登录后台权限”,事实上只要用户按照系统后台的“安全与效率”选择更改后台管理路径,要取得后台的登录权是不可行的。
2、如果拥有“登录后台权限”即后台管理权限,便可以通过基本设置直接允许上传PHP或ASP类型的文件,而不用使用xx.php.gif等伪装形式,但同样的问题,后台管理权限目前没有办法获取。


同时为了尽可能提供系统的安全性能,没有修改后台管理文件夹名称的用户可以下载http://bbs.metinfo.cn/thread-10501-1-1.html附件中的文件替换admin/include/文件夹中的相应文件,从而彻底阻止上传PHP,ASP,ASPX,JSP,JS执行文件。


“米拓信息(MetInfo.cn)后台上传漏洞”原发表文件如下:

发布:Bincker
发布Data:09-11-17
发布Site:T00ls.Net
米拓信息(MetInfo.cn)后台上传漏洞
官方站点 -
http://www.metinfo.cn
漏洞描述:
看后台上传页面 h t t p : / /localhost/admin/include/upload_file.php
<?php
require_once '../login/login_check.php';

$css_url="../templates/".$met_skin."/css";
$img_url="../templates/".$met_skin."/images";
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<link rel="stylesheet" type="text/css" href="<?echo $img_url;?>/metinfo.css">
<title><? echo $lang_upfileName; ?></title>
<script type='text/javascript'><? echo $js;?></script>
<script type="text/javascript" src="../include/metinfo.js"></script>
</head>
<body>

<form enctype="multipart/form-data" method="POST" name="myform" action="uploadfile_save.php?action=add" target="_self">
<input name="imgurl" type="file" class="input" size="20" maxlength="200">
<input name="returnid" type="hidden" value="<? echo $returnid; ?>" />
<input name="uploadtype" type="hidden" value="<? echo $uploadtype; ?>" />
<input type="submit" name="Submit" value="<? echo $lang_upfileName;?>" class="tj">
</form>
</body>
</html>


  

这是上传页面 - 没什么可疑点.
接着看 upload_class.php
出现问题:*/
function upload($form, $file = "") {
global $lang_upfileFail3;

if (is_array($form)) {
$filear = $form;
} else {
$filear = $_FILES[$form];
}
if (!is_writable($this->savepath)) {
$this->halt($lang_upfileFail3);
}
$this->getext($filear["name"]); //取得扩展名
$this->set_savename($file); //设置保存文件名
$this->copyfile($filear);
return "../upload/".date('Ym').'/'.$this->savename;
}

/*
* 功能:检测并复制上传文件
* $filear 上传文件资料数组
*/



取得扩展名上 直接保存文件名. 并没有过多的对文件后缀检查函数.

从而导致 xxx.php.gif 上传后 保存文件名 xxx.php

漏洞测试:
具体利用办法 - 登录后台权限 - 上传页面相当多.
随便找一个上传页面 php马加工 xxx.php.gif 上传..shell拿到。