什么是盲XXE?
当应用程序容易受到XXE 注入但不返回其响应中任何定义的外部实体的值时,就会出现盲 XXE 漏洞。这意味着直接检索服务器端文件是不可能的,因此盲 XXE 通常比常规 XXE 漏洞更难被利用。
有两种广泛的方法可以找到和利用盲 XXE 漏洞:
您可以触发带外网络交互,有时会在交互数据中泄露敏感数据。
您可以通过错误消息包含敏感数据的方式触发 XML 解析错误。
使用带外 ( OAST ) 技术检测盲 XXE
您通常可以使用与XXE SSRF 攻击相同的技术检测盲 XXE,但会触发与您控制的系统的带外网络交互。例如,您可以按如下方式定义外部实体:
]>然后,您将在 XML 内的数据值中使用定义的实体。
此 XXE 攻击会导致服务器向指定的 URL 发出后端 HTTP 请求。攻击者可以监控由此产生的 DNS 查找和 HTTP 请求,从而检测到 XXE 攻击是否成功。
有时,由于应用程序的某些输入验证或正在使用的 XML 解析器的某些强化,使用常规实体的 XXE 攻击会被阻止。在这种情况下,您或许可以改用 XML 参数实体。XML 参数实体是一种特殊的 XML 实体,只能在 DTD 中的其他地方引用。就目前而言,您只需要知道两件事。首先,XML 参数实体的声明包括实体名称前的百分比字符:
其次,使用百分比字符而不是通常的与号来引用参数实体:
%myparameterentity;
这意味