一、外部实体注入漏洞定义
外部实体注入漏洞(XML External Entity Injection,XXE)是针对应用程序解析 XML 输入类型的一种攻击。
攻击者利用未经严格安全控制的服务端 XML 解析过程,向其注入恶意 XML 数据。通过加载恶意外部实体,攻击者可以导致服务器执行恶意配置,从而造成安全问题
二、漏洞产生原因
漏洞产生的核心原因是应用程序在解析 XML 时允许加载外部实体。这使得恶意实体可以被加载并执行,进而导致文件读取等安全问题的发生。
三、漏洞危害:
任意文件读取:
- 利用file协议等进行辅助读取源代码/配置文件。
执行系统命令。
服务器端请求伪造:
- 暴露内部服务。
- 通过端口扫描枚举内部服务。
- 通过元数据实例窃取云凭证。
DOS拒绝服务。
解析器细节可能的影响:
- 目录列表(仅适用于Java SAX解析器)。
- 远程代码执行(仅适用于PHP/expects或ASP)。
四、漏洞防范:
1)过滤和验证用户提交的 XML 数据:
确保过滤关键词如 <!DOCTYPE、<!ENTITY SYSTEM、PUBLIC 等,以确保用户提交的数据符合预期。
2)禁用外部实体方法:
防止加载外部实体,以防止恶意实体被加载和执