0

我正在尝试在 html 页面中使用 XXE 攻击运行一些测试,但我无法提出一个可行的示例。在网上看了很久,我想出了这个:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script id="embeddedXML" type="text/xml">
        <!DOCTYPE foo [
            <!ELEMENT foo ANY>
            <!ENTITY xxe SYSTEM "file:///etc/passwd">
        ]>
        <foo>&xxe;</foo>
    </script>
</head>
<body>
    <script type="application/javascript">
        alert(document.getElementById('embeddedXML').innerHTML);
    </script>
</body>
</html>

但是,它不起作用。script 标签内的 XML 本身并没有“运行”,这意味着当警报弹出时,它只是将 xml 显示为纯文本。它不解释 DOCTYPE 标头并从列出的文件中获取信息。

因为显然 XML 没有“运行”,所以很难用谷歌搜索,但是在解释这个文本而不是仅仅写出的地方需要发生一些事情。我不知道那是什么,也不知道如何让它在 HTML 页面中工作,如此处所写。

非常感谢任何提示。谢谢!

4

1 回答 1

2

OWASP

风险因素包括:

应用程序解析 XML 文档。

现在,脚本元素被定义为(用 HTML 4 术语)包含 CDATA,因此它们中的标记(除了</script>)没有特殊含义。所以那里没有进行 XML 解析。

同时alert()处理字符串,而不是标记,因此仍然没有进行 XML 解析。

由于您没有 XML 解析器,因此没有漏洞。

一般来说,如果您想在网页中间进行 XML 解析,那么您需要使用 JavaScript(例如,使用DOM Parser,但如果它不知道 DTD 并且因此不易受攻击(即使它是易受攻击的),我也不会感到惊讶那么它很可能会阻止对本地外部实体的访问)。

于 2020-01-27T18:12:21.577 回答