跨站脚本攻击

跨站脚本是近年来最为流行的网络攻击方式之一,占到了网络攻击相当大的比例,由于在各种网络攻击中占有重要的地位,已经同SQL注入一起成为最主要的网络攻击形式。本文将对跨站脚本攻击的原理,危害及其防御做深入的探讨。

文/H3C攻防研究团队

1 概述

跨站脚本是近年来最为流行的网络攻击方式之一,已经占到了网络攻击相当大的比例,众多网站,如著名的Facebook等都遭遇过此类攻击。国内知名的新浪微博最近遭遇的网络病毒实际上也是跨站脚本漏洞所导致的。

跨站脚本起初的危害主要是盗取用户的Cookie信息。Cookie信息中包含了浏览者和网站服务器之间的常用记录,包括登录记录、浏览记录等。如果攻击者得到了用户的Cookie信息,可以模仿用户和网站进行交互,得到更多想要的数据。例如,攻击者在某论坛上发布一个URL链接,当用户点击该链接后,用户的浏览器就会将Cookie信息发送到攻击者的网站。攻击者收集到Cookie信息后可以以浏览者身份访问网站、进入邮箱等,继续窃取私人信息。

跨站脚本可以包含任意的脚本文件,所以可以做的事情远不止盗取Cookie信息这么简单。有的跨站脚本由于将脚本注入了网站后台数据库中,从危害结果上看可以将这种攻击视为网页挂马。只不过它篡改的不是网页本身,而是网页需要用到的数据。攻击者还会对发布的恶意URL进行编码,用以逃避浏览者的观察。

2 跨站脚本原理

跨站脚本简称为CSS(Cross Site Scripting),因为容易和另一个名词“层叠样式表”(Cascading Style Sheets,CSS)混淆,为了区别,网络安全人士习惯将其简称为XSS攻击。

从本质上看,跨站脚本实际上是一种恶意代码执行的方式。主要原因在于网站对于用户提交的数据过滤不严格,导致问题产生。从攻击方式上来看,跨站脚本主要分为两大类,一类是反射型的跨站脚本,一类是存储型的跨站脚本。下面将分别对这两类攻击方式做介绍。

2.1 反射型的跨站脚本

这种是最常见的跨站脚本攻击方式,原因在于这种方式普遍存在且容易利用。

一般地,网站在与用户交互时经常会将用户提交的数据返回给用户。比如,当用户以“Mike”用户名登录网站后,网页上往往会出现“Hello,Mike”的字样,以此改进用户上网的体验。网页上出现的“Mike”字样实际上就是用户提交的数据被网站返回到了用户浏览器并显示出来。另外,搜索引擎也存在类似的情况,当用户提交要搜索的关键词后,引擎会将关键词在搜索结果页面上再次显示出来,这实际上也是数据被返回到用户端。

网站中一般由CGI程序(Common Gateway Interface)处理用户数据,这是在网站服务器上运行的可执行代码。常见的CGI程序文件有PHP、JSP、ASP、PL等。动态Web页面都是由CGI程序实现的,负责接收用户数据、与网站数据库进行交互、生成HTML文件并传回用户浏览器。

类似于“Mike”这样的数据体现在代码中,就是HTML代码中的字符串。以上的过程可以概括如下:用户在动态网页(PHP、ASP、JS、Perl等)上输入数据并提交;网站CGI程序接收到数据后进行处理;网站将数据作为常量字符串嵌入到HTML代码中并返回到用户浏览器;浏览器解析HTML代码并对数据进行处理(显示出数据)。

如果网站中的CGI程序对用户输入数据过滤检查不严格,有可能会漏过一些恶意的内容,将这些内容作为正常的数据嵌入到HTML代码中,并返回到客户端的浏览器。浏览器在解析HTML代码时,会按照代码内容决定如何去处理,可能是显示出数据,也可能将数据作为代码去执行。

举例来说,用户可以输入用户名数据为“Mike<script>Alert()</script>”。 若网站CGI程序对用户名的过滤不严格,这样的数据没有被网站正确过滤,重新嵌入到生成的HTML文件中并返回到用户浏览器,即HTML代码中包含有“Mike<script>Alert()</script>”的内容。浏览器对于“Mike”的处理是依然显示在网页上,而对“<script>Alert()</script>”这样的数据则会认为是script脚本并执行,这样就产生了跨站脚本攻击。攻击过程如图1所示。

20110818_1243109_image001_723256_30008_0.png

图1 反射型跨站脚本攻击

从图1可以看出,在这种攻击过程中,数据在用户浏览器和网站之间进行了一个“来回”交互,因此这种方式被称为反射型的跨站脚本。

2.2 存储型的跨站脚本

如果攻击者提交的数据被网站服务器所存储,而这些数据又总是因为没有得到正确的检查,能够在用户网页上显示出来,这种跨站脚本就是存储型的,这种攻击的危害更大更广泛。

举例来说,假设存在一个社交网站名为Cotton。该网站的成员可以看到其他感兴趣成员一些基本的、可对外公开的信息,而每个成员的个人隐私信息,如真实姓名、联系方式或住址等则保存在网站的服务器上。成员能看到自己隐私信息的唯一条件是登录该网站,并且不会看到该网站其他任何成员的隐私信息。

如果攻击者设法了解到该网站内部数据的交互方式,知道如何从服务器中取得其他成员的隐私信息,就可以编写一段小程序,该程序可以在浏览器中运行,与网站服务器交互并获得浏览者在该网站中的隐私信息。攻击者将这段程序连同他本人的一些可以对外公开的信息一起提交给网站,网站在存储信息的同时也存储了这段恶意程序。

当有浏览者查看该攻击者的公开信息时,这段程序会随同公开信息同时下载到浏览者的浏览器中并运行,获得浏览者的真实信息并发送到攻击者指定的网站或服务器中。攻击者可以利用社会工程学的方法吸引大量的用户来查看这些信息,这就造成了用户信息的大量泄漏,造成很大的危害。攻击过程如图2所示。

20110818_1243110_image002_723256_30008_0.png

图2 存储型跨站脚本攻击

从前述的内容可以看出,这种跨站脚本将恶意程序常驻在网站的后台数据库中,任何浏览攻击者公开信息的用户都会下载恶意程序到本地浏览器并有可能被执行,因此这种方式的攻击影响面更广。

3 跨站脚本的防御

网页上任何由用户提交数据的地方都有可能存在跨站脚本漏洞,且漏洞利用的方式也多种多样。鉴于跨站脚本层出不穷和灵活的特点,网站设计者、浏览器开发员、用户以及设备厂商都建立起了相应的防御手段,这也是针对这种攻击防御的必然要求。其中,使用网络安全设备,通过软件和硬件的结合对跨站脚本攻击进行防御是业界常用的防御方式。

3.1 安全设备的防御

安全设备对流量进行识别的基本原理是对经过设备的网络流量做深度检测,通过预先定义的特征库,利用软件和硬件对可疑的流量进行识别。

由于跨站脚本本质上是网站对提交的数据过滤不严格造成的,因此,对包括URL、查询关键字、HTTP头部数据、POST等数据的验证就是安全设备对网络流量进行检测的重要部分。一些特殊字符,如“<”、“>”、“script”等,如果在特定的位置出现,通常被认为是可疑的数据。安全设备通过特定的业务规则对内容进行过滤识别,这就是传统的基于数据特征的流量识别方式。众多的特征规则集成到一起就形成了特征库。目前,一般的特征规则已经可以做到硬件层面的、快速准确的识别。图3展示了这种防御方式的简图。

20110818_1243111_image003_723256_30008_0.png

图3 安全设备防御方式

特征库中的大多数规则是对常见的跨站脚本攻击分析后提取出的特征码。这种防御对已有的一种或一类的攻击识别准确率较高,且对系统性能影响不大,是比较成熟的防御方式。但这种方式对攻击代码的各种变化适应性不强,攻击者对代码进行修改,便容易产生漏报。特征码是一种“事后防御”,新出现的跨站攻击中如果包含有常见的攻击特征,特征码可能能够起到防御的作用,但如果攻击方式是崭新的方式,特征库就无能为力了。安全分析人员需要有深厚的技术功底和丰富的经验,否则提取出的特征码会造成漏报或误报。比如,如果仅仅将“javascript”作为URL部分的特征码的话,就会造成对形如http://www.example.com/abc/javascript/a.html的正常URL的攻击误报。

在传统的数据特征分析的基础上,现在又发展出了基于行为特征分析的防御方式。这种防御方式首先对用户提交的HTTP头部信息、URL、Cookie以及表单数据等可能实现跨站脚本攻击的数据来源进行初步过滤,放行大多数正常的HTTP流量,而针对包含可疑数据的流量,则进一步收集数据,比如提取出相应的脚本数据,由软件对提取的数据进行深入的行为分析。分析依据是跨站脚本攻击的行为特征库,行为特征库来源于安全分析人员对跨站脚本攻击方式的收集、整理和分析。当几种可疑的数据或行为都出现且满足一定条件时才判断为攻击行为。这是将硬件检测与软件分析结合起来的分析方式。这种方式可以很大程度上减少由于检测固定特征导致的误报和漏报可能,仅对少量疑似事件进行深入分析,提升分析速度的同时尽量降低资源开销。

这种防御方式的原理如图4所示。

20110818_1243112_image004_723256_30008_0.png

图4 基于行为特征分析的防御方式

安全设备一般由专业的安全厂商提供。这些厂商有专业的安全分析团队以及设备集成能力,专业程度高。无论是数据特征还是行为特征,除了要求分析人员有深厚的技术功底和丰富的经验外,还需要分析人员能够得到足够多的攻击样本,传统的厂商间信息共享或蜜罐(HoneyPot)技术已经不能适应当前的网络安全形势,而新兴的云计算技术可以较好的解决这个问题。云计算的特点是海量数据的快速共享。目前很多安全软件厂商已经将该技术应用于开发的软件产品中。在此技术的支持下,软件不仅可以及时获得足够多的攻击样本以更新自身的特征库,还可以时时将用户遇到的跨站攻击及其攻击方式上传到云计算服务器。对于本地无法识别的攻击可以上传到云计算服务器进行分析。这样,安全分析人员就能在获取大量样本的同时,及时分析并开发出防御方式,并更新数据特征库或行为特征库,使得攻击出现和发展出相应防御方式之间的时间间隔大大减少。

3.2 用户端的防御

顾名思义,就是在用户侧进行的防护。例如,在微软开发的Internet Explorer 8中添加了跨站脚本过滤器,以减少跨站脚本对用户造成的危害。这种终端防护能够起到一定作用,但是需要定期更新过滤器的数据库,否则对新的攻击方式无法及时检测并防御。此外微软官方更新周期较长,因此这种方式只能在一定程度上起到防御的作用。

对于上网用户来说,要求用户都学习并具备网络安全知识以防御网络攻击是不现实的。但若用户养成良好的上网习惯,并对上网环境做必要的安全配置,则能够从很大程度上减少跨站脚本攻击的危害。例如,用户上网时,不要轻易点击网络论坛、聊天室、即时通讯工具或电子邮件中出现的链接;在浏览器设置中关闭JavaScript;,可以将IE浏览器安全级别设置到“高”。用户也需要在连接互联网的计算机上安装合适的安全防护软件,并及时更新软件厂商发布的特征库,以保持安全软件对最新攻击的实时跟踪。

4 结束语

跨站脚本是当前最为流行的网络攻击形式之一。跨站脚本的灵活性和广泛性使得对其必须进行多方面多层次的防御。网站设计虽然能够在根本上解决跨站漏洞,但实际操作中往往因为各种原因导致存在漏洞。上网用户环境中的浏览器和安全软件,企业用户使用的IPS等安全设备以及用户良好上网习惯的综合防御,能够从很大程度上减少跨站脚本的危害。

感谢您对本刊物的关注,如果您在阅读时有何感想,请点击反馈。

 

原文地址:http://www.h3c.com.cn/About_H3C/Company_Publication/IP_Lh/2011/04/Home/Catalog/201108/723256_30008_0.htm


跑运输论坛,跑跑运输,搞活经济!!!  (还等什么!!!赶快猛点进入!!!)    跑运输站长博客,跑运输,搞活经济!!!  (还等什么!!!赶快猛点进入!!!)   

聚划算淘宝客外推精选商品、 集结聚划算外推高转化商品     品牌卖家折扣商品推广     天天疯狂购,低至3折,还等 神马     打造第一母婴达人馆,网罗更多母婴商品,为你打造属于你的温馨小屋!     淘宝优秀店铺精选,集合了高佣金高转换率的优秀店铺。     秒杀满立减    齐集淘宝疯狂促销食品、让你买得省心、吃得放心、而且还有高额佣金哦!     淘宝皇冠店铺精选,集合了高佣金高转换率的皇冠 店铺。     淘宝网-亚洲最大、最安全的网上交易平台,提供机票、票务服务,方便您的出行     想看宝岛台湾的时尚动态吗,想观宝岛台湾的潮流前沿吗,一切尽在台湾馆频道,高佣金、高转化,精彩不容错过    淘宝最权威的女装风向标,集合了淘宝最热卖的优质商品,给买家带来全新的购物体验。     淘宝商城,亚洲最大最全最专业的网上购物网站——淘宝网打造的在线B2C购物平台。 淘宝商城频道集合了全球最知名的品牌包括联想、惠普、迪士尼、Kappa、乐扣乐扣、JackJones等,给买家带来全新的一站式购物体验     正品行货保证!精选电器城最优品牌商品,让您有亲临商城的优良购物体验。     引领淘宝数码时尚,为你带来淘宝最受追捧的新潮数码产品,让你追随时尚永不out!     淘宝最权威的鞋包配饰风向标,集合了淘宝最热卖的优质商品,让买家了解每季最时尚的配饰。     淘宝客男人频道,精选淘宝网热销男装,高成交、高佣金、高转化,让您收益节节高!     集结淘宝最丰富的强势类目,精选最优质的卖家和商品,达到最广泛的买家覆盖率     淘宝美容馆,我的美容管家。精选商品、高额佣金、疯狂畅销、打造买家自己的美容小馆。     打造第一居家达人馆,网罗更多创意极品和居家商品,为你共同打造属于你的浪漫满屋!    

T1nP2dXeJiXXaCwpjX.png T1nqWGXhdBXXbwqofS-300-250.jpg T18rGuXb40XXbwqofS-300-250.jpg T1nqWGXhdBXXbwqofS-300-250.jpg
网购从这里开始   

5.jpg     1.png 1.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值