Ory Segal, 安全研究主管, IBM Ory Segal 是 IBM 安全研究的主管,负责为 IBM Rational 的领先的 Web 应用程序安全产品 AppScan 的市场调查技术并推荐战略方向。通过 Watchfire(Web 应用程序安全测试及防火墙解决方案的先驱)的收购,Ory 来到了 IBM,并且带来了它超过十年的安全及渗透测试经验。 Ory 发表过许多安全安全漏洞方面的白皮书,以及许多关于通用平台,例如 Apache、ColdFusion、Microsoft IIS 的安全报告,并且还发表过许多研究论文。 Ory 在领先的安全出版物上发表过研究,例如 SC Magazine 和 IT Audit。他在关于 Web 应用程序安全最佳实践的行业工作组工作过,包括 OWASP,并且还是 WASC 的官员,最近他在那里致力于其 Web Security Threat Classification Project。 Ory 经常进行演讲,并且是应用程序和网络安全方面的公认专家,经常被问道他关于 Web 应用程序安全的意见。 Ory 在 Open University of Israel 获得计算机科学学士学位。 简介: 了解黑客如何启动跨站点脚本攻击(cross-site scripting,XSS),该攻击危害(及不危害)什么,如何检测它们,以及如何防止您的 Web 站点和站点的访问者受到这些针对隐私和安全的恶意入侵。 发布日期: 2008 年 8 月 25 日
跨站脚本攻击(cross-site scripting,简称 XSS),是黑客用来潜入 Web 应用程序的最普遍的应用程序层攻击之一。XSS 是针对特殊 Web 站点的客户隐私的攻击,当客户详细信息失窃或受控时可能引发彻底的安全威胁。大部分网站攻击只涉及两个群体:黑客和 Web 站点,或者黑客和客户端受害者。与那些攻击不同的是,XSS 攻击同时涉及三个群体:黑客、客户端和 Web 站点。 XSS 攻击的目的是盗走客户端 cookies,或者任何可以用于在 Web 站点确定客户身份的其他敏感信息。手边有了合法用户的标记,黑客可以继续扮演用户与站点交互,从而冒充用户。举例来说,在对一个大型公司的调查中表明,利用 XSS 攻击窥视用户的信用卡号码和私有信息是可能的。这是通过利用 Web 站点的访问特权,在受害者(客户端)浏览器上运行恶意的 JavaScript 代码来实现的。这些是非常有限的 JavaScript 特权,除了与站点相关的信息,一般不允许脚本访问其他任何内容。重点强调的是,虽然 Web 站点上存在安全漏洞,但是 Web 站点从未受到直接伤害。但是这已经足够让脚本收集 cookies,并且将它们发送给黑客。因此,黑客获得 cookies 并冒充受害者。 XSS 技术的深入解析 让我们调用受攻击的站点:www.。传统的 XSS 攻击的核心处位于脆弱的站点中的脆弱的脚本。这些脚本读取部分 HTTP 请求(通常是参数,但有时也有 HTTP 头域或路径),并且在首次不加密的情况下全部或部分地将其回送给响应页面(因而,不确保它不包含 JavaScript 代码或 HTML 标签)。因此,假设该脚本名为 welcome.cgi,其参数为 name。可以通过以下方式进行操作:
响应是:
这是怎样被盗用的呢?黑客设法引诱受害客户点击他们提供给用户的链接。这是一个精心设计且蓄含恶意的链接,诱使受害者的 Web 浏览器访问站点(www.),并调用入侵脚本。该脚本的数据里包含了用于非法访问客户端浏览器为 www. 站点所存储 cookies 的 JavaScript。这是允许的,因为客户端浏览器“运行过”来自 www. 的 JavaScript,并且 JavaScript 安全模型允许来自特殊站点的脚本访问属于该站点的 cookies。 这样的链接如下:
受害者点击链接之后将生成对 www. 的请求,如下所示:
脆弱的站点的响应是:
受害者客户端的浏览器将把该响应解释为包含一段 JavaScript 代码的 HTML 页面。当执行时,该代码被允许访问所有属于 www. 的 cookies。因此,它将在客户端浏览器中弹出一个窗口,显示属于 www. 的所有客户端 cookies。 当然,真正的恶意攻击包含了将这些 cookies 发送给黑客的操作。对此,黑客可能建立 Web 站点(www.)并使用脚本来接收 cookies。替代弹出窗口,黑客会书写访问 www. 的 URL 的代码,从而调用接收 cookie 的脚本,其参数设置为被窃取的 cookies。这样,黑客可以从 www. 服务器上获得 cookies。 恶意的链接会是:
响应页面看起来像这样:
加载该页面的浏览器会立即执行内嵌的 JavaScript,并向 www. 中的 collect.cgi 脚本发送请求,并附带着浏览器已经拥有的 www. 的 cookies 的值。这样就泄漏了客户端所拥有的 www. 的 cookies。这将允许黑客冒充受害者。客户的隐私就完全被破坏了。 注意: 攻击只会在受害者用于访问站点(www.)的同一个浏览器中发生。黑客需要强迫客户端访问恶意链接。这会以以下这些方式进行:
恶意的 JavaScript 可以访问任何下列信息:
身份识别、验证和授权标志通常以 cookies 形式维护。如果这些 cookies 是永久的,那么即使不在访问 www. 的时候使用浏览器,受害者也是易受攻击的。然而,如果 cookies 是临时的,例如 RAM cookies,那么客户端必须处于访问 www. 的会话中。 身份识别标志的另一种可能的实现是通过 URL 参数。在这种情况下,可以用这种方式使用 JavaScript 访问其他窗口(假设带有必要的 URL 参数的页面的名称为 foobar):
除了 <SCRIPT>,使用其他 HTML 标签来运行 JavaScript 也是可能的。事实上,同样可能的是,恶意的 JavaScript 代码存储在另一个服务器上,并强迫客户端下载该脚本并执行它,如果要运行许多代码,或者代码中包含特殊字符时,这是很有用。 关于这些可能性的一些情形:
有时候,响应页面中内嵌的数据处于非自由的 HTML 环境中。在这种情况下,首先必要的是“逃”到自由的环境中,然后附加 XSS 攻击。举例来说,如果以 HTML 表单字段的默认值注入数据:
那么在数据的开头必需包含 "> ,从而逃到自由的 HTML 环境中。数据可能是:
结果得到的 HTML 是:
执行传统的 XSS 攻击的其他方式 到此为止,我们已经看到 XSS 攻击可以出现在用脚本回送响应的 GET 请求的参数中。但是也可以用 POST 请求实现攻击,或者利用 HTTP 请求的路径组件 —— 甚至使用一些 HTTP 头(例如 Referer)。 特别是,当错误页面返回错误的路径时,路径组件就有用了。在这种情况下,包含在该路径中的恶意脚本经常都会执行。已发现许多 Web 服务器都容易受到这种攻击。 很重要的是要知道,虽然 Web 站点不直接受到这种攻击的影响(站点继续正常工作,恶意代码不在站点上执行,不会出现 DoS 情况,并且数据不直接受控,或从站点上读取),但是它仍旧是站点向其访问者或客户端提供的隐私保护机制中的缺陷。这就像站点使用薄弱的安全标志(security token)部署应用程序,借此,黑客可以猜出客户的安全标志并冒充客户。 应用程序中的脆弱点是不管参数值是什么都回送参数的脚本。好的脚本确保参数的格式是适当的,包含合理的字符,等等。有效的参数通常没有合理的理由包含 HTML 标签或 JavaScript 代码,可靠起见,应该在这些内容嵌入响应之前,或者在应用程序中处理这些内容之前,将它们从参数中去掉。 如何保护站点不受 XSS 攻击 用这三种方式可以保护站点不受 XSS 攻击:
检查您的站点是否处于 XSS 攻击保护的方法 检查站点免于遭受 XSS 攻击是加强站点安全保护的必然结论。正如保护站点免于遭受 XSS 攻击一样,检查站点的确安全也可以通过手工完成(硬方法),或利用自动的 Web 应用程序安全漏洞评估工具,它减轻了检查的负担。该工具爬遍站点,然后根据尝试参数、头,和路径找到的所有脚本,运行其知道的所有变化。在这两种方法中,用尽可能多的方式检查对应用程序的每个输入(所有脚本的参数、HTTP 头、路径)。如果响应页面包含浏览器可以执行的 JavaScript 代码,那么 XSS 安全漏洞就已显露出来。举例来说,发送此文本:
对每个脚本的每个参数(通过允许 JavaScript 的浏览器暴露出最简单类型的 XSS 安全漏洞),如果将文本解释为 JavaScript 代码,那么浏览器将弹出 JavaScript Alert 窗口。当然,还有很多其他情形,因此,只测试这种情形是不够的。如您已经很了解的话,很可能将 JavaScript 注入请求的各种字段中:参数、HTTP 头,和路径。尽管,在一些情况下(特别是 HTTP Referer 头),很难利用浏览器执行攻击。 跨站脚本攻击是黑客用来潜入 Web 应用程序的最普遍的应用程序层攻击之一,并且是最危险的手段之一。它是针对特殊 Web 站点的客户隐私的攻击,当客户详细信息失窃或受控时可能引发彻底的安全问题。不幸的是,如本文所阐述的,这种攻击经常在无需了解客户或被攻击组织情况的前提下就可以实现。 要防止 Web 站点受到这些恶意行为的攻击,至关重要的是,组织要实现在线和脱机的安全策略。这包括使用能够自动化测试出站点中所有普遍的 Web 安全漏洞,和具体应用程序的安全漏洞(例如跨站脚本)的自动化安全漏洞评估工具。对于全面的在线防卫,同样至关重要的是安装可以检测并抵御任何对保存在 Web 服务器上,或其背后的代码和内容实施控制的防火墙应用程序。 学习
获得产品和技术
讨论 Ory Segal 是 IBM 安全研究的主管,负责为 IBM Rational 的领先的 Web 应用程序安全产品 AppScan 的市场调查技术并推荐战略方向。通过 Watchfire(Web 应用程序安全测试及防火墙解决方案的先驱)的收购,Ory 来到了 IBM,并且带来了它超过十年的安全及渗透测试经验。 Ory 发表过许多安全安全漏洞方面的白皮书,以及许多关于通用平台,例如 Apache、ColdFusion、Microsoft IIS 的安全报告,并且还发表过许多研究论文。 Ory 在领先的安全出版物上发表过研究,例如 SC Magazine 和 IT Audit。他在关于 Web 应用程序安全最佳实践的行业工作组工作过,包括 OWASP,并且还是 WASC 的官员,最近他在那里致力于其 Web Security Threat Classification Project。 Ory 经常进行演讲,并且是应用程序和网络安全方面的公认专家,经常被问道他关于 Web 应用程序安全的意见。 Ory 在 Open University of Israel 获得计算机科学学士学位。 |
|