扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
跨站点脚本是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领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者