科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网安全频道OWASP要素增强Web应用程序安全(3)

OWASP要素增强Web应用程序安全(3)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

跨站点脚本是Web程序很常见的漏洞,不论是个人用户还是商业用户,都会由于这种漏洞而遭受攻击。这里我们将详细介绍跨站点脚本的脆弱性,以及由此使得个人用户和企业用户所面临的风险。

作者:ZDNet China 2008年4月14日

关键字: Web安全 安全管理

  • 评论
  • 分享微博
  • 分享邮件

跨站点脚本是Web程序很常见的漏洞,不论是个人用户还是商业用户,都会由于这种漏洞而遭受攻击。这里我们将详细介绍跨站点脚本的脆弱性,以及由此使得个人用户和企业用户所面临的风险。最后还会介绍如何消除或者抵御这类攻击。

我们将着重介绍Web应用程序中最大的脆弱性领域――跨站点脚本(XSS)。XSS的脆弱性由来已久,然而,随着越来越多的蠕虫和病毒利用这一脆弱性进行破坏活动,企业系统中与XSS相关的安全风险也越来越明显。

什么是XSS?

XSS漏洞一般出现在可以注入代码的Web程序中。利用这一漏洞的脚本可能来自服务器,但是并不在服务器上执行,而是在客户端的工作站上执行。目前有三种基本的XSS漏洞攻击:映射,存储和基于DOM(文档对象模块)

其中反射攻击最为常见。这类漏洞经常出现在网页中可以动态输入内容并返回结果的区域。搜索页面就是一个很典型的例子。当攻击者发现了存在这一漏洞的网页,他只需要将脚本输入文本框。当页面重新显示整段文字时,脚本便被执行了。

在很多情况下,黑客通过一些社会学工程来引诱用户点击经过特殊处理的链结 ,从而导致攻击发生。这种方式可以让黑客将脚本注入到网页中。(Jeremiah Grossman, "Cross-site Scripting Worms and Viruses," April 2006)

存储型弱点正如其名字所表示的意思。攻击者将恶意代码提交到有XSS漏洞的网站,或者网站的某个经常被用户访问的部分。比如一些社会网站以及用户提交评论的页面。当受害者打开相应的页面时,恶意脚本就会在用户不知情的情况下自动执行。因为浏览器认为这个存储型恶意脚本是来自受信的Web网站或服务器的。

以下是一个非常简单的存储型脚本攻击的例子。

脚本一般会插入到表单中,这在很多论坛或者拥有大量用户的服务器上很常见。比如黑客会将以下代码通过正常的发贴方式上传到在线论坛:

<script>alert("Hello World")</script>

当不知情的用户打开这个帖子,代码就会在用户的电脑上执行。虽然我给出的这段代码没有任何有害的内容,但是如果代码中包含了以下内容,就不那么乐观了:

◆显示许可权限错误信息
◆提示用户输入密码
◆将用户的密码通过邮件发送到黑客设定的服务器上

最后一种XSS弱点是基于DOM的攻击。作为AJAX的一部分,DOM是一种:

“让程序员可以访问和控制Web页面文档内容的接口。它提供了一种结构化的面向对象的方法,可以对页面中特定的内容进行检索以及设定对象的属性。” (Mike Hall, "Introduction to the Document Object Model," 2007).

在客户端的脚本中,存在DOM漏洞。一般来说这出现在脚本模块访问URL需要参数的时候。如果脚本使用的参数信息没有经过编码或过滤就写入到了HTML文件中,那么很有可能会存在XSS漏洞。有关这方面的例子和更详细的说明,可以参考2005年Amit Klein的文章"DOM Based Cross Site Scripting or XSS of the Third Kind,"基于DOM的XSS攻击难以防御。因为DOM页面层中的所有方法都是受信的,植入在参数中的恶意代码可以和其他代码一样被执行。与存储型XSS攻击一样,DOM脚本攻击的防御还是要依靠程序员在编程时的细心和安全意识。

商业冲击

根据Grossman的观点,当攻击者成功利用XSS漏洞进行攻击后,可能进一步实施以下工作:

◆强制发送电子邮件信息
◆转移资本
◆删除或修改数据
◆使用被害人的电脑攻击其他服务器
◆下载非法内容

基本上说,Web网页脚本所能做的工作,黑客都可以通过成功的XSS攻击而实施。

预防XSS攻击

由于很多Web应用程序都包含有漏洞,因此最好的预防XSS攻击的方式就是检测输入内容的合法性。比如,确保输入内容中不包括尖括号。这看上去很简单,但确是防御XSS攻击一个非常有效的手段。根据McClure, Scambray, 以及 Kurtz的说法:

 “我们遇到的几乎所有的XSS攻击都没有对输入内容的尖括号进行屏蔽或者重新编码” (Hacking Exposed, p. 565) 。

但是这并不仅仅是尖括号的问题。任何语法符号都不应该被允许。语法符号可能是来自数据库,或其他服务器。输入Web应用程序的任何内容必须经过过滤,确保用户最终看到的是单纯的文本内容。

企业应对XSS攻击的方式还包括:

1.教育员工在点击电子邮件中的链结或即时消息中的链结时,要特别小心。
2.建立互联网接入控制策略,限制企业员工访问高风险网站(比如成人网站以及盗版媒体网站) 以及未知风险的网站。
3.确保用户的电脑上都安装了最新版的防火墙软件和反病毒软件。设置防火墙限制流出的数据。
4.确保所有敏感功能不会通过机器人或者第三方服务器来启动。 (Grossman).
5.手动或自动进行代码扫描,主动发现潜在的XSS漏洞。

总结

XSS漏洞会给企业网络带来严重的安全风险。企业的敏感数据很可能由于XSS漏洞被泄露出去。正如我们上面介绍的,预防XSS攻击,需要企业终端用户以及程序员的协同努力,通过良好的技术方案抵御这种人为危害。

(责任编辑:陈毅东

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章