判断是否存在 XXE 攻击漏洞:
1)有源码情况:
- 查找相关函数,如
simplexml_load_string()
,用于检测 XML 是否会被解析。
2)无源码情况:
- 抓包检查报文是否包含 XML 传参,如果是 XML 格式的 body,则发送一个类似
<xxe>数据</xxe>
的 XML 数据查看是否能回显。- 如果能回显,说明存在 XXE 漏洞,可以直接攻击。
- 如果无法回显,则参考无回显的 XXE 攻击方法进行进一步检测。
3)直接传递 XML 代码并检测服务器是否支持外部实体
<?xml version="1.8" encoding="ISO-8859-1"?>
<!DOCTYPE poc [<!ENTITY shell "xxe">]><!-- 引用实体 -->
&shell;