时间:2024-05-04
冯 倩
(中南民族大学,计算机科学学院,湖北 武汉 430074)
随着互联网技术的飞速发展,web应用越来越流行,现如今web应用已进入我们生活的方方面面。我们已经习惯网上购物,逛论坛,刷微博,发帖等web应用。然而web安全问题不断出现,针对web应用的网络攻击时常发生,因此web应用的安全性也受到更多关注。根据最新的OWASP(Open Web Application Security Project)统计,XSS漏洞依然是web应用漏洞的第三名[1]。XSS攻击是一种经常出现在Web应用程序中的计算机安全漏洞,由于web应用程序对用户的输入过滤不足而产生[2]。攻击者利用网站漏洞把恶意的脚本代码注入到网页之中,当用户浏览这些网页时就会执行其中的恶意代码,对受害用户造成 Cookie资料盗窃[3]、回话劫持[4]、钓鱼欺骗[5]、网页挂马[6]等各种攻击。XSS攻击无论对网站还是对用户造成的危害甚大,因此研究XSS攻击防御显得尤为重要,它能源头上防止XSS攻击。
XSS漏洞主要分为三类:反射性 XSS(reflected- XSS),存储型XSS(stored-XSS,DOM型XSS(DOM- based XSS)[7]。反射型XSS漏洞是用户提交的数据立即被服务器处理并返回一个响应页面,若用户提交的数据没有经过有效地过滤就会产生反射型 XSS漏洞[8];存储型XSS漏洞是服务器端没有对用户提交的数据没做有效的过滤,并将数据存入数据库,当用户浏览网页时,服务器从数据库中加载数据并在网页中显示,从而形成存储型XSS漏洞[9];DOM型XSS漏洞是浏览器在接受到HTML代码后,由浏览器向网页中嵌入恶意脚本代并执行产生[10]。存储型XSS漏洞是对web服务器进行攻击且不易发现,造成的危害甚大,然而当前没有一个较好的检测工具。
XSS漏洞挖掘的方法主要有静态分析和动态分析方法[11]。静态分析是针对应用程序的源码进行分析,通过分析源码来发现可能存在的漏洞,属于白盒测试。相关的自动化检测工具有Fortify SCA、XSSDetect、Pixy等[12]。这类检测工具可以实现高效率自动检测。但静态分析具有一定的局限性,它需要获取目标站点的源码。动态分析是在 Web站点运行过程中,根据运行结果推测Web站点中可能存在的漏洞,属于黑盒测试[13]。动态检测方法具有准确率高、针对性强和无需程序源代码的优势,不足之处是不当的攻击向量可能造成较高的漏报率,因此要求攻击向量样本的选取要全面,以此来降低漏报率,同时过大的样本又会造成检测效率低下。
当前对防御存储型XSS攻击的方法按其所处时间分为两大类,在程序开发期进行预防,主要有安全编码规范,对用户的输入的信息进行消毒处理[14];在程序完成后进行漏洞检测,主要有静态分析,动态分析。静态分析有源代码审查,污点分析,动态分析有模糊测试和渗漏测试[14]。当前也有一些研究者研究如何防御XSS攻击,但都比较片面,本文深入研究XSS攻击原理,并提出XSS防御策略。
本文主要完成了以下几项工作:
1. 深入研究XSS攻击工作原理和特点;
2. 提出XSS防御策略;
3. 实现漏洞检测工具并进行实验测试。
反射型XSS漏洞是用户提交的数据立即被服务器处理并返回一个响应页面,若用户提交的数据没有经过有效地过滤就会产生反射型XSS漏洞[8],反射型XSS漏洞特点是漏洞在服务端形成,立即执行且执行一次、非持久化;存储型XSS漏洞是服务器端没有对用户提交的数据做有效的过滤,并将数据存入数据库,当用户浏览网页时,服务器从数据库中加载数据并在网页中显示,从而形成存储型XSS漏洞[9],存储型XSS漏洞特点是漏洞在服务端形成,攻击向量存入数据库中、非立即执行、可以执行多次、持久化;DOM型XSS漏洞是浏览器在接受到HTML代码后,由浏览器向网页中嵌入恶意脚本代并执行产生[10],DOM型XSS漏洞特点是漏洞在客户端形成,立即执行且执行一次、非持久化。
黑客构造一个有恶意代码URL发给用户,用户点击URL,服务器将恶意代码发送给浏览器,并在浏览器中执行,从而造成攻击。
图1 反射型XSS攻击原理图Fig.1 Attack principle of reflective xss
黑客提交恶意代码到 web服务器,web服务器将恶意代码存放在数据库中,当用户浏览页面是,web服务器从数据库中读取恶意代码并发给浏览器,恶意代码在用户浏览器中执行,从而造成攻击。
图2 存储型XSS攻击原理图Fig.2 Attack principle of stored xss
如图3所示,黑客构造一个有恶意代码URL发给用户,用户点击 URL,浏览器读取 URL中的恶意代码并执行,从而造成攻击。
XSS防御主要有如图4中方式。
图3 DOM型XSS攻击原理图Fig.3 Attack principle of dom xss
图4 XSS防御图Fig.4 Defense of stored xss
将XSS攻击向量寄生的宿主(HTML标签,事件,属性)过滤掉,XSS攻击向量便不能发生。
1. 过滤