时间:2024-09-03
◆黄 波 孙羽壮
XSS跨站攻击原理与调查方法研究
◆黄 波 孙羽壮
(辽宁警察学院 辽宁 116036)
现代Web开发技术诞生及广泛应用,基于Web安全漏洞的各种网络攻击成为网络安全威胁之一。XSS跨站脚本攻击已经算得上是除DDOS攻击和SQL注入攻击之外第三大Web攻击。本文针对XSS跨站攻击开展分析研究,首先介绍XSS跨站攻击的特点、主要类型及攻击原理,结合相关分析阐述了XSS跨站攻击的广泛性及其危害性,总结经典XSS跨站脚本攻击案例;再通过实验室虚拟环境搭建模拟实现XSS跨站攻击过程,分析XSS跨站攻击遗留痕迹,结合公安工作中网络犯罪侦查的业务需要,总结了XSS跨站攻击的痕迹数据并阐述防御此攻击的具体措施。
XSS;跨站攻击;网络安全;调查方法
自从现代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跨站脚本攻击是解决网络安全的必要因素。
要想成功防御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.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.1 XSS跨站攻击抓包分析
在XSS跨站攻击时,利用Wireshark进行抓包分析,对抓取到的数据读取。在抓到的数据包中可以看到攻击代码的发送,以及cookie的抓取。在图7中可以看到XSS跨站攻击代码的发送,以及Cookie的明文抓取。
图7 XSS攻击代码的发送及Cookie的抓取
3.2 XSS跨站攻击本地分析
在攻击的留言平台源文件中可以看到所使用的攻击代码。
正常留言的情况下,留言的内容会在图8选中的代码中展现,由于插入攻击代码’”>,前方的将源文件中的
图8留言板源文件
3.3 XSS跨站攻击追踪调查
在留言的平台上遗留发表留言的IP地址,留言者IP地址如图9所示。
图9留言者遗留的IP信息
3.4 XSS跨站攻击防御
3.4.1基于特征的防御
XSS攻击漏洞和著名的SQL注入漏洞一样,都是利用了Web页面编写不完善,因此每一个漏洞所利用和针对的弱点都不尽相同。这就给XSS漏洞防御带来了困难:不可能以单一特征来概括所有XSS攻击。
传统XSS防御多采用特征匹配方式,在所有提交的信息中都进行匹配检查。对于这种类型的XSS攻击,采用的模式匹配方法一般会需要对“javascript”这个关键字进行检索,一旦发现提交信息中包含“javascript”,就认定为XSS攻击。这种检测方法的缺陷显而易见:黑客可以通过插入字符或完全编码的方式躲避检测。
(1)在javascript中加入多个tab键,得到IMG SRC="jav ascript:alert(‘XSS‘)"。
(2)在javascript中加入#x09编码字符,得到IMG SRC="javas cript:alert(‘XSS‘)"。
(3)在javascript中加入字符,得到IMG SRC="javascript:a lert(‘XSS‘)" 。
(4)在javascript中的每个字符间加入回车换行符,得到:IMGSRC="j a v a s c r i p t :alert(‘XSS‘)"
(5)对"javascript:alert(‘XSS‘)"采用完全编码,得到: IMGSRC=#x6A#x61#x76#x61#x73#x63#x72#x69#x70#x74#x3A#x61#x6C#x65#x72#x74#x28#x27#x58#x53#x53#x27#x29
上述方法都可以很容易的躲避基于特征的检测。
3.4.2基于代码修改的防御
与SQL注入防御一样,XSS攻击也是利用了Web页面的编写疏忽,所以还有一种方法就是从Web应用开发的角度来避免:
对所有用户提交内容进行可靠的输入验证,包括对URL、查询关键字、HTTP头、POST数据等,仅接受指定长度范围内、采用适当格式、采用所预期的字符的内容来提交,对其他的一律过滤。
实现Session标记(session tokens)、CAPTCHA系统或者HTTP引用头检查,以防被攻击。
本文提出的XSS跨站攻击的调查方法主要借助Wireshark工具进行抓包分析,通过对抓取到的数据分析,可以看到攻击代码的发送并对cookie信息实现,并进一步对捕获的数据提取恶意服务器IP地址、XSS攻击代码等相关线索数据,最后提出防御此类攻击的措施。
[1]http://zt.360.cn/1101061855.php.2016年中国网站安全漏洞形式分析报告.
[2]徐国天.存储式”XSS挂马攻击调查方法研究.警察技术,2015.
[3]刘达.通过HTML编码防御XSS跨站脚本攻击的研究.网络空间安全,2016.
[4]王佩楷.E-BUSINESS JOURNAL.XSS跨站脚本攻击分析,2010.
[5]夏莉.一种基于行为的XSS客户端防范方法.中国科学院研究生院学报.
[6]孙丹.浅析XSS漏洞检测、利用及防范.信息安全与通信保密,2013.
[7]左丹丹.一种XSS漏洞检测方法的设计与实现.计算机应用与软.
[8]戴俊云.防范XSS的正确方式.计算机与网络,2006.
[9]高岩,胡勇.Web前段XSS过滤技术研究.通信技术,2017.
[10]古开元,周安民.跨站脚本攻击原理与防范.网络安全技术与应用,2005.
[11]罗卫敏,刘井波,刘静,陈晓峰.XSS蠕虫在社交网络中的传播分析.计算机工程,2011.
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!