论文部分内容阅读
进入21世纪以来,互联网技术飞速发展。尤其是进入Web2.0时代之后,Web应用越来越多,越来越复杂,用户量也越来越庞大。但是与此同时,各种Web安全问题层出不穷,安全领域遭受了前所未有的威胁。跨站脚本攻击就是一种威胁比较大的漏洞,由于其注入简单,传播迅速的特性,导致每年有数量巨大的XSS漏洞攻击发生。而且,随着Ajax技术的普及,XSS漏洞变得更加隐蔽,更加难以检测。传统的XSS漏洞的检测方式分为静态测试与动态测试两种,目前虽然有相关的检测工具,但是很多都存在误报率高的问题,本文分析对比了两种测试的优缺点之后选择对动态测试进行了研究,设计了一个针对跨站脚本攻击漏洞的基于爬虫的自动化漏洞检测系统,主要工作如下:(1)研究了XSS漏洞的产生原理以及攻击方法,对攻击向量的类型和变异方式进行了总结,最终设计并实现了一个自动化生成XSS攻击向量的模型,并将生成的攻击向量进行分类,存储在数据库不同的数据表中,以便后续检测中有针对性地选取向量进行测试,从而减少请求的次数。(2)研究了爬虫相关的技术,并设计了一整套通过爬虫获取检测网站页面链接的方案,使用Selenium+FireFox的组合对页面进行解析,模拟用户进行操作,触发页面事件,分析页面DOM状态,深入挖掘动态页面注入点,实验证明可以更加有效地挖掘页面注入点。(3)为了减少测试过程中的服务器请求次数,使用了探子向量测试方案,并根据页面响应探子向量的位置选取之前构造的对应类型的攻击向量进行测试,可以有效提高检测效率。并且针对存储型XSS漏洞在测试的时候特征输出页面不一定是测试请求响应页面的情况,提出了一种改进的探子测试方案,可以有效地根据页面中探子字符的值在正式测试前先确定输入页面以及注入点,并把这种对应关系存储起来,然后进行后续的测试,实验证明方案可以有效地检测存储型漏洞。(4)使用前面提到的方案设计并实现了XSS漏洞测试工具XSS-finder,工具可以输入待检测网站网址进行检测,可以手动输入Cookie值模拟登陆,对一些需要登录后才可以获取更多内容的网站进行检测。使用XSS-finder对3个含有漏洞的分别基于python、Java、php语言开发的网站进行测试,并和AppScan、XSSer等测试工具进行了对比,实验证明本文的工具可以更加有效地挖掘XSS漏洞。