XSS漏洞的分析与讨论

2021-11-17 07:00北京中电普华信息技术有限公司白婉娇赵艺桐
电子世界 2021年20期
关键词:攻击者浏览器漏洞

北京中电普华信息技术有限公司 白婉娇 杨 军 赵艺桐

近年来跨站脚本漏洞在安全漏洞中频繁出现,对互联网安全造成很大的威胁。XSS漏洞可以带来的危害有:盗取各类用户账号,如用户网银账号、各类管理员账号等;盗窃企业重要的具有商业价值的资料;非法转账;控制受害者机器向其他网站发起攻击、注入木马等。为了提高对XSS漏洞检测的准确率,本文针对三种类型的XSS漏洞攻击进行深度分析以及对XSS漏洞如何准确检测、有效防御、检测XSS漏洞可以使的工具进行分析与讨论。

伴随着互联网技术飞速发展,网络已渗透列各行各业,为广大用户提供快捷服务的同时,也暴露出越来越严重的安全问题,其中Web应用程序安全问题尤为突出。在Web攻击中,XSS攻击是其中一个影响严重的攻击。利用XSS攻击可以窃取用户的个人信息或者登录帐号,对网站的用户安全产生巨大的威胁,劫持用户的浏览器等。窃取管理员帐号或Cookie,入侵者可以冒充管理员的身份登录后台恶意操纵后台数据,包括读取、更改、添加、删除一些信息,如先将恶意攻击代码嵌入到Web应用中,当用户浏览该挂马页面时,用户的计算机会被植入木马,还可以利用XSS漏洞植入广告、发送垃圾信息,严重影响用户正常使用。所以如何有效准确地检测、防御XSS漏洞是一个十分必要的研究课题。本文针对XSS漏洞产生的原因、如何检测出XSS漏洞及如何对XSS漏洞进行防御进行深入研究与分析,进而达到对XSS漏洞更高效的解决、防御的目的。

1 XSS漏洞的类型及原理分析

1.1 反弹型XSS漏洞

当用户在客户端访问某条链接时,攻击者可以将恶意代码植入到URL之中,如果服务端未对URL携带的参数做判断、过滤处理,而是直接返回响应页面,这样XSS攻击代码就会与返回信息一起被传输到用户的浏览器,进而触发反射型XSS产生。举个例子,当用户在网站进行搜索时,返回结果中一般会包括用户原本搜索的内容,如果攻击者构造了包含XSS恶意代码的链接,诱导用户进行点击并且成功执行,那么用户的信息就可能被窃取,甚至可以模拟用户进行一些操作,进而导致一些列严重后果。反射型XSS漏洞不会永久存储用户的信息、数据,发生在用户的一次访问之后。这个过程就类同于一次反射,因此得名反射型XSS漏洞。

1.2 存储型XSS漏洞

存储型XSS漏洞又名持久型XSS,是目前危害最大的一种XSS漏洞。此类型的XSS漏洞是因为恶意攻击代码持久化地保存在服务器上,进而被显示到HTML页面中。攻击者构造XSS代码保存在数据库中,当用户访问这个页面时,就会触发并执行恶意的XSS代码,进一步窃取用户的重要信息

1.3 DOM型XSS漏洞

DOM型XSS漏洞是基于文档对象模型的一种漏洞。这种XSS与反射型XSS、持久型XSS在原理上有本质区别,它的攻击代码并不需要服务器解析响应,触发XSS靠的是浏览器端的DOM解析。客户端上的JavaScript脚本可以访问浏览器的DOM并修改页面的内容,不依赖服务器的数据,直接从浏览器端获取数据并执行。具体攻击实施步骤如下:

①被攻击用户在客户端登录Web应用程序时,输入的用户名、密码等就会被保存在cookie中;②攻击者将精心构造的含有恶意脚本的链接发给用户;③被攻击者在没有任何防范措施的情况下点击了这些含有恶意脚本的链接;④服务器向点击链接的用户返回有DOM型XSS漏洞的页面,触发脚本运行;⑤恶意脚本在用户运行的时候,将攻击代码复制到用户的页面中;⑥被攻击的用户浏览器就会读取用户的隐私信息,并发送给攻击指定的服务器中。

2 XSS漏洞攻击的手动检测方法

一般手工使用代码'>测试一下,可以看到代码'>,被成功执行了,但有时网站会过滤一些关键字,我们就需要用到工具进行模糊测试,运行BruteXss,输入G选择get传递方式,然后输入要测试的网址,选择payload字典,原理就是使用不同的payload拼接,网址url'>,进行测试。可以看到已经成功测试出可用的payload。

3 XSS漏洞攻击可以使用的检测工具介绍

3.1 FireBug

FireBug是Firefox浏览器的一个扩展插件,它是一个全能的Web应用程序调试器,能够协助Web开发者洞悉复杂的Web应用程序的内部工作机制。该工具提供了许多便捷功能,包括HTML代码、探索DOM结构、监视网络请求和响应、调试和检测任何页面的CSS、HTML和JavaScript等。如图1所示。

图1 FireBug工具示例图

3.2 Tamper Date

当测试Web应用程序的安全性时,经常需要对HTTP流量进行分析和动态修改,这时就可以用到Tamper Data这款小工具。Tamper Date同样是Firefox的小插件,他的特点是简单易用、功能强大,只要HTTP请求都可以抓取。Tamper Date的含义是“篡改数据”,它可以查看和修改HTTP/HTTPS的头部和Post参数。IE类似的插件是Tamper IE。如图2所示。

图2 Tamper Date工具示例图

3.3 Fiddler

Fiddler是一种一款免费且功能强大HTTP/HTTPS网络监视器,它也能够检测和记录所有客户之间的HTTP通信。如图3所示。

图3 Fiddler工具示例图

3.4 BurpSuite

Burp Suite是用于攻击web应用程序的集成平台。它包含了许多工具,并为这些工具设计了许多接口,以促进加快攻击应用程序的过程。所有的工具都共享一个能处理并显示HTTP消息、持久性、认证、代理、日志、报警的强大的可扩展的框架。

4 XSS攻击的防御方法

(1)在表单提交或者url参数传递前,对需要的参数进行过滤;

(2)利用些函数对出现xss漏洞的参数进行过滤,函数如下:

①htmlspecialchars()函数,用于转义处理在页面上显示的文本;②htmlentities()函数,用于转义处理在页面上显示的文本;③ strip_tags()函数,过滤掉输入、输出里面的恶意标签;④ header()函数,使header("Content-type:application/json");用于控制json数据的头部不用于浏览;⑤urlencode()函数,用于输出处理字符型参数带入页面链接中;⑥intval()函数用于处理数值型参数输出页面中;⑦自定义函数,在大多情况下,要使用一些常用的html标签,以便美化页面显示,如留言、小纸条等。那么在这样的情况下,要采用白名单的方法使用合法的标签显示,过滤掉非法的字符。

(3)对用户输入进行检查—XSS filter

XSS filter是在用户提交数据时获取变量,并进行XSS过滤的。此时的XSS filter只对用户输入数据进行XSS检查,并没有结合前端页面的HTML代码。所以针对XSS filter需要强调两点:

①XSS filter对语境的理解并不完整。比如:无法针对输出点位置进行合适的XSS过滤。所以有时可能会造成遗漏、破坏原有语义等后果;②XSS filter是在服务器进行URL解码之前生效的,所以要考虑URL编码绕过的问题。比如XSS filter过滤了