HTML中XXE攻击的基本示例

问题描述 投票:0回答:1

我正在尝试在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本身并不“运行”,这意味着当警报弹出时,它仅将XML显示为纯文本。它不解释DOCTYPE标头,也不从列出的文件中获取信息。

很难做到这一点,因为XML显然不能“运行”,但是在解释此文本而不是仅仅写出文本时需要发生一些事情。我不知道那是什么,也不知道如何在此处编写的HTML页面中使用它。

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

html security xxe
1个回答
0
投票

请参见OWASP

危险因素中有:

应用程序解析XML文档。

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

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

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

[通常,如果要在网页中间进行XML解析,则需要使用JavaScript(例如,使用DOM Parser,但如果它不具备DTD识别能力且因此不易受攻击,我也不会感到惊讶(即使它很容易受到攻击,那么很可能会阻止对本地外部实体的访问。]

© www.soinside.com 2019 - 2024. All rights reserved.