APP下载

XSS跨站攻击原理与调查方法研究

2017-10-13孙羽壮

网络安全技术与应用 2017年6期
关键词:安全漏洞脚本浏览器

◆黄 波 孙羽壮



XSS跨站攻击原理与调查方法研究

◆黄 波 孙羽壮

(辽宁警察学院 辽宁 116036)

现代Web开发技术诞生及广泛应用,基于Web安全漏洞的各种网络攻击成为网络安全威胁之一。XSS跨站脚本攻击已经算得上是除DDOS攻击和SQL注入攻击之外第三大Web攻击。本文针对XSS跨站攻击开展分析研究,首先介绍XSS跨站攻击的特点、主要类型及攻击原理,结合相关分析阐述了XSS跨站攻击的广泛性及其危害性,总结经典XSS跨站脚本攻击案例;再通过实验室虚拟环境搭建模拟实现XSS跨站攻击过程,分析XSS跨站攻击遗留痕迹,结合公安工作中网络犯罪侦查的业务需要,总结了XSS跨站攻击的痕迹数据并阐述防御此攻击的具体措施。

XSS;跨站攻击;网络安全;调查方法

0 引言

自从现代Web开发技术诞生以来,XSS跨站脚本攻击以及基于Web的安全漏洞就一直围绕在我们身边。XSS攻击占当今Web攻击总数的12.75%,在所有报告的漏洞中,大约70%都是与XSS跨站脚本攻击有关。几乎90%的网站都至少会有一个XSS漏洞。除了DDOS(分布式拒绝服务)攻击和SQL注入攻击之外,XSS跨站脚本攻击可以算得上是第三大Web攻击了。在过去,类似Twitter、Facebook、YouTube,雅虎,MySpace或者Paypal等鼎鼎大名的网站都遭受过这种攻击。

《2016年中国网站安全漏洞形式分析报告》中,跨站脚本攻击(XSS)漏洞是2016年最为频繁扫出的漏洞类型之一。如表1所述给出了被扫出次数最多的十大类典型网站安全漏洞:

表1 2016年被扫描出次数最多的十大类典型网站安全漏洞

如图1所述给出了各类网站安全漏洞被扫出次数的比例分布情况。从表中可以看出,跨站脚本攻击漏洞(16.0%)是占比最高的网站安全漏洞之一。

图1 2016年网站漏洞类型分布

XSS跨站脚本攻击对网络安全有十分严重的危害。网络空间已经成为海、陆、空、天之外的第五大空间,这个网络空间的安全也是重要的国家资源,其需要有主权、安全保护。面对未来日益复杂的网络环境,防治XSS跨站脚本攻击是解决网络安全的必要因素。

1 XSS跨站攻击概述

要想成功防御XSS跨站脚本攻击,就必须对XSS跨站脚本攻击有全面具体的了解,知道XSS跨站脚本攻击的类型及其攻击原理,知己知彼方能百战百胜。

1.1 XSS跨站攻击的概述

XSS,全称Cross SiteScript,翻译为跨站脚本攻击,是Web程序中普遍的漏洞,XSS属于用于客户端的被动式攻击方式,所以危害性容易被忽视。攻击者在Web页面里插入恶意Script代码,当用户浏览该页时,嵌入Web页面里的恶意Script代码就会被执行,从而达到恶意攻击用户的目的。

利用XSS跨站脚本攻击可以进行网络钓鱼,盗取各类用户帐号;窃取用户Cookie信息,获取用户隐私信息或者利用用户身份进一步操作网站;劫持用户会话,执行任意操作;网页挂马;传播跨站脚本蠕虫等。由此可见,XSS跨站脚本攻击方式十分灵活。

1.2 XSS跨站攻击的主要类型

XSS跨站攻击的主要类型有以下几种:

1.2.1Stored XSS漏洞

如果有某个Web应用程序的功能是负责将用户提交的数据存储到数据库中,然后在需要时将这个用户提交的数据再从数据库中提取出返回到网页中,在这个过程中,如果用户提交的数据中包含一个XSS攻击代码,一旦Web应用程序准备将这个攻击语句作为用户数据返回到网页中,那么所有包含这个回显信息的网页将全部受到XSS漏洞的影响。Web应用程序过于相信用户的数据,将其作为一个合法信息保存在数据库中。这种因为存储外部数据而引发的XSS漏洞称为Web应用程序的Stored XSS漏洞,即存储型XSS漏洞也称为持久型XSS漏洞。

1.2.2Non-persistent XSS漏洞

当用户访问一个带有XSS攻击代码的Web请求时,服务器端接收数据后处理,然后把带有XSS攻击代码的数据发送到浏览器,浏览器解析这段带有XSS攻击代码的数据后,最终造成XSS漏洞。这个过程就像一次反射,故称为反射性XSS也称为非持久型XSS。

1.2.3 DOM-Based XSS漏洞

DOM是Document Object Model(文档对象模型)的缩写。DOM是一种与浏览器、平台、语言无关的接口,使得网页开发者可以利用它来访问页面其他的标准组件。DOM给予Web设计师和开发者一个标准的方法,让他们来访问他们站点中的数据、脚本和表现层对象。

由于DOM有如此好的功能,大量的Web应用程序开发者在自己的程序中加入对DOM的支持,Web应用程序开发者这种滥用DOM的做法使得Web应用程序的安全也大大降低,DOM-Based XSS正是在这样的环境下出现的漏洞。DOM-Based XSS漏洞与Stored XSS漏洞不同,因为它甚至不需要将XSS攻击语句存入到数据库中,直接在浏览器的地址栏中就可以让Web应用程序发生跨站行为。对于大多数的Web应用程序来说,这种类型的XSS漏洞是最容易发现和利用的。

1.3 XSS跨站攻击原理分析

XSS跨站脚本攻击是攻击者往Web页面里插入恶意HTML标签或者JavaScript代码,当用户浏览该页或者进行某些操作时,攻击者利用用户对原网站的信任,诱骗用户或浏览器执行一些不安全的操作或者向其它网站提交用户的私密信息。例如:攻击者在论坛中放一个看似安全的链接,骗取用户点击,窃取Cookie中的用户私密信息;或者攻击者在论坛中加一个恶意表单,当用户提交表单的时候,却把信息传送到攻击者的服务器中,而不是用户原本以为信任的站点。

诸如此类,唯一能完全杜绝XSS跨站脚本攻击的方法,就是禁用Script,IMG等,显然这是不可能的,用户需要丰富的页面内容。当安全影响应用时我们往往选择后者,因此XSS跨站脚本攻击又热门又很难避免。

2 XSS跨站攻击的模拟实现

2.1 XSS跨站攻击环境搭建

利用虚拟机模拟XSS攻击环境,利于对攻击过程及结果的分析,与网络中的XSS攻击一致。

(1)XSS跨站攻击平台搭建

在虚拟机中创建Windows server 2003虚拟机作为攻击端,利用WampServer和xsser.me源代码搭建XSS攻击平台。WampServer是一款Apache Web服务器、PHP解释器以及MySQL数据库的集成安装环,利于模拟XSS攻击平台的搭建,如图2所示。搭建XSS攻击平台目的是为了方便对攻击后返回信息的获取。

图2 模拟的XSS攻击平台

(2)XSS跨站攻击目标网站搭建

在虚拟机中创建Windows Server 2003虚拟机作为目标端,并利用IIS(Internet Information Servicer)互联网信息服务功能部署留言板网站。如图3所示,留言板的留言功能并未禁止Script代码的执行,因而存在XSS跨站脚本攻击的漏洞。

(3)XSS跨站攻击过程实现

在攻击端中注册用户并创建项目生成项目代码,将XSS攻击代码插入留言板中发表,等待管理员审核留言。跨站攻击代码如图4所示。

攻击代码为:

’”>。

图3 目标留言板

图4 XSS跨站攻击代码

是将留言结束,而网页原来的结束留言代码由于没有了开始代码则无任何作用,由于该代码前为空,所以留言板中没有任何内容。

’”>是插入标记证明代码的执行,该攻击代码标记如图5所示将在留言板输入框后方显示。

图5 攻击代码标记

是XSS攻击的核心,执行crs脚本,crs脚本是全部的项目代码,作用是在网站管理员登录网站后台审核留言时,将网站后台登录网址以及网站管理员登录后所产生的Cookie发送回XSS攻击平台中。

Cookie是网站在用户浏览器中保存下来的一份个人信息,Cookie作用是用户下次访问该网站时就可以免于输入用户名或密码。另外,用户使用账号登陆网站后,要靠Cookie来维持会话Session,以保持在线状态,如果清空当前网站对应的所有Cookie数据,用户将立即下线。因此Cookie相当于“网络身份证”内存大量个人信息,如果没有Cookie,许多网站都登陆不上去。再比如,当用户访问某网站时,在不登陆的状态下,可以直接进行登录后的操作,其原理也是基于Cookie来记录用户的数据,只要不清除Cookie,下次再打开该网站时,操作结果依然存在。

图6所示为XSS跨站攻击过程中接收的返回信息在浏览器中登录网站管理后台,利用浏览器插件edit thiscookie修改Cookie,登录网站后台。

图6 XSS攻击返回信息

3 XSS跨站攻击调查追踪及防御

3.1 XSS跨站攻击抓包分析

在XSS跨站攻击时,利用Wireshark进行抓包分析,对抓取到的数据读取。在抓到的数据包中可以看到攻击代码的发送,以及cookie的抓取。在图7中可以看到XSS跨站攻击代码的发送,以及Cookie的明文抓取。

图7 XSS攻击代码的发送及Cookie的抓取

3.2 XSS跨站攻击本地分析

在攻击的留言平台源文件中可以看到所使用的攻击代码。

正常留言的情况下,留言的内容会在图8选中的代码中展现,由于插入攻击代码’”>,前方的将源文件中的