XSS的攻击利用与防护策略研究

2021-01-15 08:48金涛霍旭磊王亚丽
网络安全技术与应用 2021年1期
关键词:脚本攻击者语句

◆金涛 霍旭磊 王亚丽

XSS的攻击利用与防护策略研究

◆金涛 霍旭磊 王亚丽

(甘肃政法大学公安技术学院 甘肃 730070)

XSS是一种常见的针对Web应用攻击的安全漏洞,造成漏洞的主要原因是服务器端对攻击者输入的恶意语句没有进行过滤或转义,导致恶意语句被执行,造成客户端被攻击的危害。本文介绍了XSS的分类和利用实例,提出了检测方法和防护策略。

XSS漏洞;DVWA;漏洞利用;漏洞防护

随着第八届中国网络安全大会的成功举办,网络安全的话题越来越被全民关注。网络系统漏洞中,Web应用最易受到恶意攻击,影响也最为广泛。其中的XSS(Cross Site Scripting,跨站点脚本)漏洞连续数次出现在OWASP TOP 10(OWASP十大应用安全风险)榜单当中。

XSS是指攻击者在网站正常输入界面中插入恶意脚本对用户和系统造成危害的Web安全漏洞。“跨站攻击”指不直接攻击Web服务器,而以其为跳板攻击客户端。主要分为反射型XSS、存储型XSS、基于DOM的XSS三种类型。

1 漏洞类型及利用

1.1 漏洞实验平台

此次实验平台是DVWA靶场(Damn Vulnerable Web Application)[1],它包含了暴力破解、命令行注入、文件上传等多种常见且危害巨大的web安全漏洞。支持调整靶场源码的安全级别,分别为 Low,Medium,High,Impossible。级别越高,安全防护越严格,渗透难度越大。

1.2 反射型XSS漏洞

1.2.1漏洞分析

攻击者提交恶意脚本给服务器时,服务器没有对其进行过滤或过滤的不充分,将脚本内容作为url的参数完整的返回给浏览器,当用户点击链接,恶意脚本会完全回显,受到含有特殊目的攻击[2]。

1.2.2漏洞验证

选择DVWA的 XSS(Reflected)漏洞模块进行漏洞验证并利用。

(1)插入漏洞检测脚本:,如图1所示:

图1 插入检测脚本

(2)弹窗显示Reflected1,判断其可能存在XSS反射型漏洞,如图2所示:

图2 弹出指定内容

(3)为了进一步验证存在XSS反射型漏洞,可以使用Burp Suite来查看HTTP响应内容中是否完全回显了所插入的检测脚本。结果发现,检测脚本被完全回显,如图3所示:

图3 脚本完全回显

1.2.3漏洞利用

(1)插入恶意获取cookie的语句,此处IP地址为攻击者所控制的机器IP,通过受害者点击含有恶意语句的链接来监听访问请求信息,并盗取cookie信息。

(2)当受害者点击恶意链接时,攻击机使用netcat工具监听,成功获取到用户cookie信息,如图4所示:

图4 盗取cookie信息

(3)替换cookie信息从而冒名登录,可见攻击者成功登录,这也说明漏洞利用成功,如图5所示:

图5 冒名登录

1.3 存储型XSS漏洞

1.3.1漏洞分析

当用户提交信息给服务器时,服务器对提交的内容没有过滤或过滤的不充分,数据会被服务器存储,一般会直接显示。若当服务器存储了攻击者插入的恶意代码时,每当有用户点击漏洞位置时,恶意代码就会被执行[3]。如果管理员没能及时清除恶意代码并修复漏洞,它就会被长期保存在服务器中,而且很可能被其他攻击者再次利用,造成持久性的漏洞危害。这也是存储型XSS漏洞比反射型XSS漏洞危害更大的原因之一。

1.3.2漏洞验证

选择DVWA的 XSS(Stored)漏洞模块进行漏洞验证并利用。

(1)插入检测脚本:,若脚本的长度被限制,一般可通过网页前端检测元素功能对 max属性进行修改,以便完整输入检测脚本,如图6所示:

图6 插入检测语句

(2)插入检测语句后,当再浏览此模块时,会弹出检测语句,如图7所示:

图7 弹出指定信息

(3)可以看到name为check的检测语句已经被存储到了数据库中,并显示了出来,如果网站管理员没能及时清除它,每当用户浏览到这个模块的时候,都会受到攻击,如图8所示:

图8 恶意脚本被存储

1.3.3漏洞利用

插入上文中恶意获取用户cookie信息的语句,同样能获取到用户cookie信息,通过替换cookie的方式冒名登录其他账户[4]。而与反射型XSS不同的是,存储型XSS漏洞被插入的恶意语句存储时间长,受害用户多,危害程度更大。

1.4 基于DOM的XSS漏洞

1.4.1漏洞分析

DOM是一个与网站系统、编译语言不相关的接口,通过它,用户可以随时更新文档内容、结构和样式,动态地检查和修改页面内容。此漏洞不需要提交数据到服务器端来进行攻击,而是从客户端获得其中的数据后在本地执行,一旦其中的算法没有经过严格防护,就可能被攻击成功。

1.4.2漏洞验证

选择DVWA的 XSS(DOM)漏洞模块进行验证并利用。

(1)页面的本意是选择默认语言,如图9所示:

图9 语言选择界面

(2)插入检测脚本:,构造URL:IP/dvwa/vulnerabilities/xss_d/?default=English%20 &&,可以发现会弹出DOM字符,说明漏洞存在,如图10所示:

图10 弹出指定信息

1.4.3漏洞利用

插入盗取用户cookie信息的脚本:,可以看到浏览器弹出了客户端的cookie信息,者说明基于DOM型的XSS漏洞被利用成功,如图11所示:

图11 弹出cookie信息

获取cookie信息成功后,通过替换cookie信息的方式同样实现了冒名登录其他账户,说明基于DOM的XSS漏洞利用成功。

2 漏洞检测方法

除了利用以上手工检测方法外,还可以通过源码审计及时发现漏洞代码,或是利用自动化检测工具进行漏洞探测[5],这里着重介绍综合漏洞扫描工具Nessus和专门检测XSS漏洞的XSSer。

2.1 Nessus

Nessus是一款非常优秀的综合漏洞扫描工具,不仅支持包括XSS在内的多种漏洞扫描功能,还可实时对其漏洞数据库进行更新。客户端和远程端可同时操作,多终端实时对系统漏洞扫描和分析。Nessus是综合漏洞扫描器,但如果只需要针对XSS漏洞进行检测时,可以使用XSSer。

2.2 XSSer

XSSer(Cross site “scripter”)是专门检测XSS漏洞的安全工具,独有的代码注入技术,可绕过部分防护策略来自动化检测XSS漏洞,误报率相对较低,更准确。同时它还可以对xss漏洞进行利用,这为安全工作者带来了极大的便利,在专门针对XSS漏洞进行检测验证时,一直都是被首选的安全工具。

3 漏洞防护策略

一般的浏览器都内置了防范XSS的方法,例如CSP(Content Security Policy,内容安全策略)可防范简单XSS攻击[6]。但对于完全防范来说,还需要更高级的方案。

3.1 输入检查

所有输入的内容进行严格检查,对语句中"/""script""<"">"等特殊字符进行过滤、编码或转义。一般前端框架中都有DecodeingMap程序,它可用于过滤或转义用户所输入的特殊字符和HTML标签。例如vuejs中的DecodingMap程序,可以用来过滤用户输入信息中script标签里的内容。简单的DecodeingMap程序如图12所示:

图12 简单过滤代码

3.2 HttpOnly

HttpOnly是最常见的防止cookie被劫持的方法之一,当cookie中设置了这个属性时,通过动态脚本则无法获取其内容。

3.3 输出检查

当对用户的输入内容进行检查后,服务器的输出内容也不能忽视。除RFT(Rich Text Format,富文本格式)的输出外,其他需要对变量进行编码或转义后再输出到HTML页面。利用sanitize-html模块来处理就是很好的方式。

4 总结

XSS漏洞作为Web应用的经典漏洞类型,已经存在多年。直到现在,跨站脚本攻击仍是许多站点前端安全的最大威胁。本文对不同类型的XSS漏洞进行了分析和利用,同时提出了手工检测、源码审计和工具探测三种检测方法,最后针对用户和服务器端分别提出了不同防御手段。

[1]孙宇成,尹航.XSS漏洞分析与攻击平台的搭建[J].电脑知识与技术,2020,16(12):88-89+92.

[2]刘建亮,乔兴华.跨站脚本攻击及防范方法研究[J].科学技术创新,2020(10):137-138.

[3]谷家腾. 基于动态分析的XSS漏洞检测方法研究[D].北京邮电大学,2019.

[4]王丹,刘立家,林九川,赵文兵,杜晓林.基于DOM状态转换检测XSS漏洞[J].北京工业大学学报,2018,44(09):1208-1216.

[5]黄波,孙羽壮. XSS跨站攻击原理与调查方法研究[J]. 网络安全技术与应用,2017,000(006):50-52.

[6]龚小刚,王红凯,夏威,等. 跨站脚本攻击(XSS)的形成与利用研究[J]. 信息安全与技术,2015(3):52-55.

本文系2016年兰州市科技计划项目(2016-2-45)“基于大数据的网络犯罪信息情报分析模式的研究”;甘肃省“证据科学技术研究与应用创新团队”项目(编号2016C-09)

猜你喜欢
脚本攻击者语句
酒驾
机动能力受限的目标-攻击-防御定性微分对策
安奇奇与小cool 龙(第二回)
重点:语句衔接
正面迎接批判
快乐假期
小编的新年愿望
有限次重复博弈下的网络攻击行为研究
我喜欢
作文语句实录