0

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

进行此跟进似乎比尝试将我的进度硬塞到上一个问题中更容易。我认为最好让该查询的正确答案看起来正确简单。

我现在已经将我的示例演变为以下内容:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <p id="xmlOut"></p>
    <script type="application/javascript">
        var xml = `
            <!DOCTYPE foo [
                <!ELEMENT foo ANY>
                <!ENTITY xxe SYSTEM "file:///etc/passwd">
                <!ENTITY bar "test that entity substitution works in general">
            ]>
            <foo>
                display some text | &bar; | &xxe;
            </foo>
        `;

        parser = new DOMParser();
        xmlDoc = parser.parseFromString(xml, "text/xml");
        document.getElementById("xmlOut").innerHTML = xmlDoc.getElementsByTagName("foo")[0].childNodes[0].nodeValue;
    </script>
</body>
</html>

在这里,我将 XML 作为字符串写入并使用 DOM 解析器对其进行解析。一切都按预期工作,除了 xxe 实体没有被任何东西填充。正如最后一个问题的回答者所说,firefox 似乎有可能阻止外部实体......东西。我还尝试在我的主目录中替换一个文本文件,但这也不起作用。我也尝试给出不带file://前缀的路径。到目前为止没有任何效果。

我可以确认 DTD 正在被解析和使用,所以这是向前迈出的一大步。

任何提示表示赞赏~!

4

1 回答 1

0

似乎大多数浏览器不加载外部 DTD,这使得这种类型的 xxe 攻击很难测试:正确使用 XML 的外部 DTD

如果有人有任何其他见解,请随时留下答案或评论!

于 2020-01-27T18:47:17.180 回答