XML外部实体注入(XML External Entity,XXE)漏洞详解
1. 什么是XXE漏洞?
XML外部实体注入(XXE)是一种安全漏洞,攻击者通过利用XML解析器对外部实体的处理机制,读取本地文件、探测内网资源、执行远程请求,甚至触发拒绝服务攻击(DoS)。XXE漏洞通常出现在应用程序解析用户提供的XML输入且未禁用外部实体加载时。
2. XML基础与外部实体
- XML(可扩展标记语言):用于结构化存储和传输数据。
- 实体(Entity):类似变量,用于定义XML文档中的片段引用。
- 外部实体(External Entity):允许从外部资源(如文件、URL)加载数据。
上述XML中,实体<!DOCTYPE root [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]> <root>&xxe;</root>
xxe
引用了本地文件/etc/passwd
,解析时会替换为文件内容。
3. XXE漏洞的危害
攻击类型 | 说明 |
---|---|
本地文件读取 | 读取服务器敏感文件(如/etc/passwd 、C:\Windows\win.ini )。 |
内网探测(SSRF) | 通过加载内网URL(如http://192.168.1.1:8080 )探测或攻击内网服务。 |
远程代码执行 | 结合某些协 |