11-1

XXE 漏洞利用方式

1. 文件读取(最常见)

这是 XXE 漏洞最经典的利用方式,攻击者可以利用外部实体来读取服务器上的任意文件,例如/etc/passwd、Web 应用配置文件等

  • 利用原理:攻击者在 XML 文档中定义一个外部实体,实体的值为一个本地文件路径。当 XML 解析器解析该实体时,就会去读取并返回该文件的内容
  • 利用步骤

    1. 构造恶意 DTD:攻击者在 XML 文档的 DOCTYPE 声明中定义一个外部实体,通常使用 SYSTEM 关键字。
      • 例如:<!DOCTYPE root [<!ENTITY xxe SYSTEM "file:///etc/passwd">]>
    2. 引用实体:在 XML 文档的主体中引用该实体。
      • 例如:<data>&xxe;</data>
  • 完整示例

    <?xml version="1.0"?>
    <!DOCTYPE foo [
    <!ENTITY xxe SYSTEM "file:///etc/passwd">
    ]>
    <root>
      <data>&xxe;</data>
    </root>

    当服务器解析这个 XML 时,在 <data> 标签中就会回显 /etc/passwd 文件的内容