我试图理解XXE (XML外部实体注入)背后的概念。我通过了OWASP关于XXE的准则
而且,由于我对XML和DTD还不熟悉,所以我还阅读了关于这些主题的W3Cschools教程。现在,根据我的阅读资料,我试着创建了一个XXE演示。因此,以下是我同样的尝试:-
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE note [
<!ELEMENT note (to,from,heading,body,author)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
<!ENTITY writer "Donald Duck.">
<!ENTITY copyright "Copyright W3Schools">
<!ENTITY attack SYSTEM "file:///Users/testuser/Desktop/BB/demos/test.txt">
]>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend</body>
<author>&writer;©right;&attack;</author>
</note> 在路上
file:///Users/testuser/Desktop/BB/demos/
我有一个文件test.txt,其中包含一个字符串:-
这是秘密的东西
现在,当我在Firefox中打开我的XML文件时,它给了我XML文档的树结构,并且正如预期的那样,它用DTD中定义的实体、作者和版权扩展了它们各自的内容。但是,XML解析器没有展开实体“攻击”,正如上面给出的链接所演示的那样,这种情况应该已经发生。
现在我想知道为什么实体攻击没有扩大。其次,即使进行了扩展,(本地文件系统)的文件权限也不会在这里发挥作用吗?
发布于 2014-01-05 13:54:32
只是为了充实这一点,略过你最初对浏览器的看法。
通常XXE是对服务器端的攻击,所以查看站点的用户可以访问webroot之外的文件,他们通常无法访问这些文件。
XXE的访问和影响取决于攻击者是否可以找到有用的文件,以及运行web应用程序的用户的权限。特别有问题的是配置文件位于可预测的位置,其中包含用户名/密码,允许攻击者获得额外的访问权限(例如,为管理应用程序提供凭据的文件)。
理论上也有可能将其转换为作为规范的远程文件包含。支持远程外部实体的概念(即从远程服务器中提取文件的内容并将其处理到文档中),但我从未在实践中看到过这一点。
在缓解方面,这通常是在XML解析器级别完成的,最简单的解决方法是禁用实体扩展,除非应用程序的功能需要它(我所看到的很少是这样的要求)。如果需要,那么输入验证/编码很可能是修复它的正确方法。
https://security.stackexchange.com/questions/48117
复制相似问题