HTML 中 XXE 攻击的基本工作示例

Basic Working Example of an XXE Attack in HTML

我正在尝试 运行 在 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>

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

很难 google 解决这个问题,因为显然 XML 不会 "run",但需要在解释此文本而不只是写出来的地方发生一些事情。我不知道那东西是什么,也不知道如何让它在 HTML 页面内工作,如此处所写。

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

OWASP

风险因素包括:

The application parses XML documents.

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

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

因为您没有 XML 解析器,所以没有漏洞。

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