论文部分内容阅读
随着高速发展的互联网技术,Web应用在人们的生活中,发挥着越来越重要的作用。然而,由于Web技术人员的技术好坏不一,这造成Web应用可能含有隐藏的安全问题。在这些安全问题中,跨站脚本(XSS)漏洞是一种危害极大的Web应用漏洞。从2004年以来,在OWASP公布的十大应用安全风险中,XSS一直位列其中。而相较于将XSS代码嵌入URL中而发挥作用的反射型XSS,需要通过将XSS代码提前注入服务器数据库中的存储型XSS,危害更大,造成影响的时间更长,所以针对存储型XSS漏洞进行研究有实用意义。目前针对存储型XSS漏洞检测的研究还不是很充足,常用的检测方法为白盒与黑盒测试方法。白盒测试对应用源码的具有较高的依赖性,需要测试人员获取所有源代码并且了解,完成对代码的审计工作。这种检测方法的实现一般依赖于编程语言,可移植性差。而对于黑盒测试来说,测试人员不需要了解应用源码,只需要站在用户的角度进行测试即可。一般依赖于爬虫算法获取网页信息,在众多的网页中查找可能的注入点,然而,在使用爬虫算法的时候,往往只关注提高爬虫的速度而忽略了某些网站的反爬虫规则,从而造成爬虫的失败。同时,攻击向量的完备性与有效性也与漏洞检测的效率有关,常用的方法是模糊测试技术。模糊测试技术往往是对目标网站发送很多随机构建的没有丝毫意义的数据,然后根据对响应结果的分析来判定漏洞的存在与否。这些随机的数据往往没有明确的意义和指向性,存在较大的盲目性。而鉴于遗传算法具有相对简单的思想,运行的方式和实现大大依赖于具体的问题、容易实现并行开发、能够得到较高的全局最优解等特点,本文采用遗传算法对已有的攻击向量变形,生成适应被测网站的攻击向量。并且为了后期检测漏洞的效率,借助决策树算法对攻击向量进行分类。综上所述,本文深入研究了存储型XSS漏洞检测的相关内容,主要研究内容如下:(1)提出了基于网络爬虫技术查找存储型XSS漏洞注入点的方法,该方法使用广度优先搜索策略对网站进行爬取,并对获得的网页进行分析,将含有Form表单的页面作为含有注入点的页面,并通过提交“探子”确定各个注入点的展示页面以及输出位置,以此减少后期在检测漏洞时避免全站扫描,提高速度。(2)提出了基于遗传算法与决策树算法结合生成与优化攻击向量的方法。对攻击向量分析之后,对攻击向量进行形式化描述,处理为便于遗传算法处理的攻击向量。并在遗传算法中,提出采用改进的one-hot编码作为基因编码方法,针对编码方式设计了交叉与变异算子。然后对攻击向量分类,最终得到能够适应待检测网站的攻击向量。(3)提出了动态判定网站漏洞是否存在的方法。利用selenium实现模拟攻击之后,对响应结果进行分析。为了提高检测速度,根据爬虫阶段分析到的注入点信息提取关于展示页面以及内容输出的所在标签,运用字符串匹配算法时,直接定位到输出位置,避免全网页的匹配。(4)根据上述提到的方法,设计并实现了针对存储型XSS漏洞检测的系统。系统整体采用python语言实现,移植方法简单且使用也简单,无论处于何种操作系统下,只需安装好python环境以及相关模块,即可通过运行命令进行检测,最终的检测结果以及爬取到的网页URL都将会保存在本地的文档中。针对上述的存储型XSS漏洞检测系统设计了测试方案,并进行了相关的对比实验,验证了该系统的有效性以及实用性。