论文部分内容阅读
随着Web技术的不断发展,Web应用已经成为人们日常生活中不可缺少的工具,基于它人们可以完成聊天、购物、转账等活动。然而Web安全问题也随之日益突出,其中跨站脚本(Cross-site scripting,XSS)漏洞是Web应用程序中最常见和最严重的安全问题之一。XSS漏洞广泛存在于各类Web应用程序中,攻击者利用XSS漏洞可以进行信息窃取、会话劫持等攻击,因此如何自动检测Web应用程序中的XSS漏洞对保护用户隐私数据,保障Web安全具有重要意义。本文选择模糊测试方法进行漏洞检测。相比白盒测试,模糊测试不需要获得应用程序的实现代码,通过生成攻击向量并观察返回的响应结果来分析是否存在漏洞。为解决现有攻击向量库规模大、针对性不强的问题,本文提出了一种攻击向量自动生成的优化方案。首先,提出了使用模块化的方式构造基本攻击向量,使用巴科斯范式定义基本攻击向量的语法,并根据语法生成基本攻击向量库。随后,从基本攻击向量的选取和变异攻击向量的生成两个方面优化了攻击向量的生成方法:1.提出了从两个方面优化基本攻击向量的选取。一方面,对基本攻击向量按照敏感字符和敏感字符串数量升序排列,以生成最有可能快速绕过服务端过滤器的基本攻击向量选取顺序。另一方面,约定了输出上下文与基本攻击向量类型的映射关系,以针对不同输出上下文注入对应类型的基本攻击向量。2.提出了从两个方面优化变异攻击向量的生成。一方面,总结了现有的变异规则,并将变异规则与基本攻击向量的组成模块进行对应,以针对特定模块使用对应的变异规则。另一方面,基于网站过滤机制提出了一种优化变异攻击向量生成的方法。该方法通过分析响应内容中被过滤的向量模块,构造接下来使用的变异攻击向量。本文设计并实现了 XSS漏洞检测系统,使用了基于无头浏览器的网络爬虫,并且通过尝试页面触发获得隐藏DOM节点。系统分为四个模块:页面爬取及解析模块、输出上下文确定模块、攻击向量构造模块和攻击结果检测模块。实验结果表明,XSS漏洞检测系统能够有效的检测出Web应用中的XSS漏洞。通过寻找隐藏节点有效提高了注入点数量,并且在其中发现了漏洞。本文提出的攻击向量生成方法能够生成数量少、精准度高的攻击向量。