XML外部实体注入(XXE)是一种严重的安全漏洞,攻击者利用XML解析器处理外部实体的功能来读取服务器内部文件、执行远程请求(SSRF)、扫描内网端口或发起拒绝服务攻击。以下是详细解释和修复方案:
XXE 攻击原理
-
外部实体声明
XML允许定义实体(变量),实体可引用外部资源:xml
<!DOCTYPE foo [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]>
-
实体注入
攻击者将恶意实体注入XML输入:xml
<data>&xxe;</data>
解析器会将
&xxe;替换为/etc/passwd文件内容。 -
攻击类型
-
读取本地文件(
file://) -
发起HTTP请求(
http://)→ SSRF -
拒绝服务(Billion Laughs 攻击)
-
端口扫描(结合SSRF)
-
修复方案
1. 禁用外部实体处理(根本方案)
Java (SAX/DOM)
java
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); dbf.s

最低0.47元/天 解锁文章
1321

被折叠的 条评论
为什么被折叠?



