某友NCCloud黑名单绕过分析
字数 1407 2025-08-20 18:18:05

某友NCCloud黑名单绕过分析技术文档

1. 漏洞背景

某友NCCloud是一款广泛使用的企业级软件,其反序列化漏洞在安全研究中备受关注。在NC6.5版本中,常见的利用链是通过Commons Collections(CC)链实现任意方法调用。然而,新补丁中添加了CC黑名单,导致传统利用链失效。

2. 补丁分析

2.1 黑名单机制

新补丁中引入了反序列化黑名单,部分被拦截的类包括:

  • 传统CC链中的关键类
  • 其他已知的恶意反序列化类

2.2 安全限制增强

补丁还实施了以下安全措施:

  1. 默认禁用jdk.xml.enableTemplatesImplDeserialization系统属性
  2. 抛出明确异常阻止TemplatesImpl反序列化:
    java.lang.UnsupportedOperationException: 启用了 Java 安全时, 将禁用对反序列化 TemplatesImpl 的支持。可以通过将 jdk.xml.enableTemplatesImplDeserialization 系统属性设置为"真"来覆盖此设置。
    

3. 绕过技术分析

3.1 TemplatesImpl限制的根源

  • Apache官方在2015年声明中指出了com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl被滥用的问题
  • 解决方案是通过jdk.xml.enableTemplatesImplDeserialization系统属性控制反序列化行为
  • 该属性默认禁用,且NCCloud强制保持禁用状态

3.2 替代利用链构建

3.2.1 JNDI注入替代方案

由于TemplatesImpl被限制,转向JNDI注入实现RCE:

  • 适用环境:JDK高版本下需结合本地Factory类
  • 优势:不受enableTemplatesImplDeserialization限制

3.2.2 利用BeanShell(bsh)

在NC环境中常见的可利用组件:

  • 满足条件:
    • 具有无参构造方法
    • 包含eval(String)方法可执行bsh脚本
  • 可加载恶意字节码实现代码执行

3.2.3 JdbcRowSetImpl利用

构造恶意JdbcRowSetImpl对象:

  • 触发JNDI注入
  • 结合前半段反序列化链完成攻击

3.3 完整利用链构建

  1. 前半段:使用黑名单外的反序列化链

    • 避开补丁中的恶意类名检测
    • 实现任意getter方法调用
  2. 后半段:JNDI注入

    • 通过JdbcRowSetImpl触发
    • 或通过BeanShell执行恶意代码

4. 环境适配考量

  1. Tomcat版本适配:

    • 低于8的版本缺少javax.el.ELProcessor
    • 需选择更通用的利用方式
  2. 依赖组件分析:

    • 确认bsh等组件的存在
    • 根据实际环境调整利用链

5. 防御建议

  1. 对于NCCloud用户:

    • 及时更新至最新补丁版本
    • 监控反序列化操作日志
  2. 通用防御措施:

    • 限制不必要的反序列化操作
    • 实施严格的输入验证
    • 使用安全管理器限制敏感操作
  3. 针对JNDI攻击:

    • 升级JDK至最新版本
    • 配置com.sun.jndi.object.trustURLCodebase为false

6. 技术验证

测试效果验证:

  • 成功绕过黑名单限制
  • 实现RCE效果
  • 在多种NCCloud环境中验证可用性

7. 总结

本文详细分析了某友NCCloud反序列化黑名单的绕过技术,重点包括:

  1. 传统TemplatesImpl利用链被阻断的机制
  2. 通过JNDI注入和BeanShell的替代方案
  3. 完整利用链的构建方法
  4. 不同环境下的适配策略

该研究揭示了即使实施了严格的黑名单机制,通过组合利用不同技术点仍可能实现漏洞利用,强调了纵深防御的重要性。

某友NCCloud黑名单绕过分析技术文档 1. 漏洞背景 某友NCCloud是一款广泛使用的企业级软件,其反序列化漏洞在安全研究中备受关注。在NC6.5版本中,常见的利用链是通过Commons Collections(CC)链实现任意方法调用。然而,新补丁中添加了CC黑名单,导致传统利用链失效。 2. 补丁分析 2.1 黑名单机制 新补丁中引入了反序列化黑名单,部分被拦截的类包括: 传统CC链中的关键类 其他已知的恶意反序列化类 2.2 安全限制增强 补丁还实施了以下安全措施: 默认禁用 jdk.xml.enableTemplatesImplDeserialization 系统属性 抛出明确异常阻止TemplatesImpl反序列化: 3. 绕过技术分析 3.1 TemplatesImpl限制的根源 Apache官方在2015年声明中指出了 com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl 被滥用的问题 解决方案是通过 jdk.xml.enableTemplatesImplDeserialization 系统属性控制反序列化行为 该属性默认禁用,且NCCloud强制保持禁用状态 3.2 替代利用链构建 3.2.1 JNDI注入替代方案 由于TemplatesImpl被限制,转向JNDI注入实现RCE: 适用环境:JDK高版本下需结合本地Factory类 优势:不受 enableTemplatesImplDeserialization 限制 3.2.2 利用BeanShell(bsh) 在NC环境中常见的可利用组件: 满足条件: 具有无参构造方法 包含 eval(String) 方法可执行bsh脚本 可加载恶意字节码实现代码执行 3.2.3 JdbcRowSetImpl利用 构造恶意JdbcRowSetImpl对象: 触发JNDI注入 结合前半段反序列化链完成攻击 3.3 完整利用链构建 前半段:使用黑名单外的反序列化链 避开补丁中的恶意类名检测 实现任意getter方法调用 后半段:JNDI注入 通过JdbcRowSetImpl触发 或通过BeanShell执行恶意代码 4. 环境适配考量 Tomcat版本适配: 低于8的版本缺少 javax.el.ELProcessor 需选择更通用的利用方式 依赖组件分析: 确认bsh等组件的存在 根据实际环境调整利用链 5. 防御建议 对于NCCloud用户: 及时更新至最新补丁版本 监控反序列化操作日志 通用防御措施: 限制不必要的反序列化操作 实施严格的输入验证 使用安全管理器限制敏感操作 针对JNDI攻击: 升级JDK至最新版本 配置 com.sun.jndi.object.trustURLCodebase 为false 6. 技术验证 测试效果验证: 成功绕过黑名单限制 实现RCE效果 在多种NCCloud环境中验证可用性 7. 总结 本文详细分析了某友NCCloud反序列化黑名单的绕过技术,重点包括: 传统TemplatesImpl利用链被阻断的机制 通过JNDI注入和BeanShell的替代方案 完整利用链的构建方法 不同环境下的适配策略 该研究揭示了即使实施了严格的黑名单机制,通过组合利用不同技术点仍可能实现漏洞利用,强调了纵深防御的重要性。