用友U8Cloud所有版本ServiceDispatcherServlet反序列化补丁绕过文件上传漏洞
字数 2106 2025-11-28 12:09:41

用友U8Cloud ServiceDispatcherServlet反序列化补丁绕过文件上传漏洞分析

漏洞概述

产品简介

用友U8 Cloud是用友推出的新一代云ERP系统,主要聚焦成长型、创新型企业,提供企业级云ERP整体解决方案。该系统全面支持多组织业务协同、营销创新、智能财务、人力服务,构建产业链制造平台。

漏洞性质

这是一个高危的安全漏洞,攻击者可以通过利用易受攻击的代码,绕过系统鉴权机制并实现任意文件上传,从而造成严重的系统损害。

影响版本

  • 2.0、2.1、2.3、2.5、2.6、2.65、2.7
  • 3.0、3.1、3.2、3.5、3.6
  • 5.0、5.0sp、5.1、5.1sp

技术背景

路由分发机制

在U8Cloud系统中,路由分发通过nc.bs.framework.comn.serv.ServiceDispatcher#execCall方法进行调度执行。在执行具体业务方法之前,系统会通过TokenUtil#vertifyToken方法进行鉴权验证。

原鉴权机制分析

原有的鉴权方式采用Token验证机制:

  • 系统将Token种子与用户名进行MD5哈希计算
  • 将计算结果转换为16进制格式进行比较
  • 验证通过后方可执行后续操作

补丁分析

补丁修改内容

官方补丁共修改了三处关键位置:

1. TokenUtil类构造方法修改

  • 文件:fw.jar中的nc.bs.framework.server.token.TokenUtil
  • 原行为:从${NCHOME}/ierp/bin/token/tokenSeed.conf配置文件读取Token种子
  • 修改后:改为从${NCHOME}/ierp/bin/token/Tenant.properties配置文件读取tenantId租户字段

2. 配置文件更新

  • 文件:${NCHOME}/ierp/bin/token/trustServiceList.conf
  • 内容:更新了可信服务列表配置

3. 文件上传路径限制

  • 文件:nc.impl.hr.tools.trans.FileTransImpl
  • 修改:在FileTransImpl#uploadFile方法中增加了路径检查,限制写入文件不能位于Web目录

硬编码Token漏洞

通过代码分析和线上环境确认,原系统存在硬编码Token种子的安全漏洞,固定值为:ab7d823e-03ef-39c1-9947-060a0a08b931

漏洞利用细节

反序列化过程分析

ServiceDispatcher#execCall方法在通过反序列化还原InvocationInfo对象时使用了自定义的重写方法:

  • 使用nc.bs.framework.comn.NetObjectInputStream#readInt方法读取反序列化的字节长度
  • 通过读取前四个字节进行位移运算来确定数据长度

攻击步骤

第一步:构造恶意InvocationInfo对象

  1. 创建InvocationInfo对象实例
  2. 指定要调用的服务名称和方法名称
  3. 设置相关参数为恶意内容

第二步:准备Webshell文件

  1. 生成包含Webshell的压缩包文件
  2. 特别指定文件路径为Web可访问目录

第三步:序列化攻击载荷

  1. 将构造好的InvocationInfo对象进行序列化
  2. 在序列化数据开头添加长度信息(4字节)

第四步:发送攻击请求

  1. 通过ServiceDispatcherServlet接口发送恶意序列化数据
  2. 绕过鉴权机制执行文件上传操作

第五步:访问Webshell

通过直接访问上传的Webshell文件路径获得系统控制权

漏洞验证方法

环境检测

  1. 确认目标系统为受影响版本的用友U8Cloud
  2. 检查系统补丁安装情况

安全测试

  1. 构造特定的序列化数据包
  2. 向ServiceDispatcherServlet接口发送测试请求
  3. 验证是否能够绕过鉴权机制
  4. 检查文件上传功能是否受限

防护方案

立即措施

  1. 安装官方发布的安全补丁:U8cloud所有版本ServiceDispatcherServlet反序列化补丁绕过实现文件上传漏洞的安全补丁

长期防护策略

  1. 及时更新补丁:关注用友官方安全公告,及时安装最新安全补丁
  2. 网络层防护:限制对ServiceDispatcherServlet接口的非法访问
  3. 文件系统监控:加强对Web目录的文件变更监控
  4. 权限最小化:确保应用程序以最小必要权限运行
  5. 输入验证:加强对反序列化数据的合法性验证

安全配置建议

  1. 定期检查Token生成机制的安全性
  2. 监控系统日志中的异常反序列化操作
  3. 实施文件完整性监控
  4. 建立安全更新机制

参考资源

  1. 用友官方安全公告:关于U8cloud所有版本存在ServiceDispatcherServlet反序列化补丁绕过实现文件上传漏洞的安全公告
  2. 漏洞相关技术分析和利用代码

总结

该漏洞结合了反序列化漏洞和文件上传漏洞的特点,通过绕过鉴权机制实现远程代码执行。由于用友U8Cloud系统通常承载企业核心业务数据,此漏洞的危害性极高,需要企业及时采取防护措施。

用友U8Cloud ServiceDispatcherServlet反序列化补丁绕过文件上传漏洞分析 漏洞概述 产品简介 用友U8 Cloud是用友推出的新一代云ERP系统,主要聚焦成长型、创新型企业,提供企业级云ERP整体解决方案。该系统全面支持多组织业务协同、营销创新、智能财务、人力服务,构建产业链制造平台。 漏洞性质 这是一个高危的安全漏洞,攻击者可以通过利用易受攻击的代码,绕过系统鉴权机制并实现任意文件上传,从而造成严重的系统损害。 影响版本 2.0、2.1、2.3、2.5、2.6、2.65、2.7 3.0、3.1、3.2、3.5、3.6 5.0、5.0sp、5.1、5.1sp 技术背景 路由分发机制 在U8Cloud系统中,路由分发通过 nc.bs.framework.comn.serv.ServiceDispatcher#execCall 方法进行调度执行。在执行具体业务方法之前,系统会通过 TokenUtil#vertifyToken 方法进行鉴权验证。 原鉴权机制分析 原有的鉴权方式采用Token验证机制: 系统将Token种子与用户名进行MD5哈希计算 将计算结果转换为16进制格式进行比较 验证通过后方可执行后续操作 补丁分析 补丁修改内容 官方补丁共修改了三处关键位置: 1. TokenUtil类构造方法修改 文件: fw.jar 中的 nc.bs.framework.server.token.TokenUtil 类 原行为:从 ${NCHOME}/ierp/bin/token/tokenSeed.conf 配置文件读取Token种子 修改后:改为从 ${NCHOME}/ierp/bin/token/Tenant.properties 配置文件读取 tenantId 租户字段 2. 配置文件更新 文件: ${NCHOME}/ierp/bin/token/trustServiceList.conf 内容:更新了可信服务列表配置 3. 文件上传路径限制 文件: nc.impl.hr.tools.trans.FileTransImpl 类 修改:在 FileTransImpl#uploadFile 方法中增加了路径检查,限制写入文件不能位于Web目录 硬编码Token漏洞 通过代码分析和线上环境确认,原系统存在硬编码Token种子的安全漏洞,固定值为: ab7d823e-03ef-39c1-9947-060a0a08b931 漏洞利用细节 反序列化过程分析 ServiceDispatcher#execCall 方法在通过反序列化还原InvocationInfo对象时使用了自定义的重写方法: 使用 nc.bs.framework.comn.NetObjectInputStream#readInt 方法读取反序列化的字节长度 通过读取前四个字节进行位移运算来确定数据长度 攻击步骤 第一步:构造恶意InvocationInfo对象 创建InvocationInfo对象实例 指定要调用的服务名称和方法名称 设置相关参数为恶意内容 第二步:准备Webshell文件 生成包含Webshell的压缩包文件 特别指定文件路径为Web可访问目录 第三步:序列化攻击载荷 将构造好的InvocationInfo对象进行序列化 在序列化数据开头添加长度信息(4字节) 第四步:发送攻击请求 通过ServiceDispatcherServlet接口发送恶意序列化数据 绕过鉴权机制执行文件上传操作 第五步:访问Webshell 通过直接访问上传的Webshell文件路径获得系统控制权 漏洞验证方法 环境检测 确认目标系统为受影响版本的用友U8Cloud 检查系统补丁安装情况 安全测试 构造特定的序列化数据包 向ServiceDispatcherServlet接口发送测试请求 验证是否能够绕过鉴权机制 检查文件上传功能是否受限 防护方案 立即措施 安装官方发布的安全补丁: U8cloud所有版本ServiceDispatcherServlet反序列化补丁绕过实现文件上传漏洞的安全补丁 长期防护策略 及时更新补丁 :关注用友官方安全公告,及时安装最新安全补丁 网络层防护 :限制对ServiceDispatcherServlet接口的非法访问 文件系统监控 :加强对Web目录的文件变更监控 权限最小化 :确保应用程序以最小必要权限运行 输入验证 :加强对反序列化数据的合法性验证 安全配置建议 定期检查Token生成机制的安全性 监控系统日志中的异常反序列化操作 实施文件完整性监控 建立安全更新机制 参考资源 用友官方安全公告:关于U8cloud所有版本存在ServiceDispatcherServlet反序列化补丁绕过实现文件上传漏洞的安全公告 漏洞相关技术分析和利用代码 总结 该漏洞结合了反序列化漏洞和文件上传漏洞的特点,通过绕过鉴权机制实现远程代码执行。由于用友U8Cloud系统通常承载企业核心业务数据,此漏洞的危害性极高,需要企业及时采取防护措施。