论文部分内容阅读
近年来,随着Web应用和HTML5的普及,Web安全问题也日益突出。OWASP公布的2013年十大Web应用安全风险中,跨站脚本漏洞XSS(Cross Site Scripting)名列第三,已成为当前各类Web应用需要共同面对的常见安全风险之一。目前针对自动化XSS漏洞检测工具的研究还不是很充足,传统的基于静态爬虫爬取页面的方法对漏洞注入点的检测覆盖率还不是很高,无法很好地应对复杂网页格式下注入点产生的多种途径,例如有些注入点需要通过用户操作,如点击某个按钮,使浏览器解析JavaScript或加载Ajax才能生成;有些注入点则不存在于表单中,需要分析网页结构才能找到其提交方式。同时,在漏洞检测方面,传统方法也不能很好地动态分析目标站点的回应信息,从而不能够准确地判断出XSS漏洞是否存在。针对上述问题,本文对自动化XSS漏洞检测系统的爬取页面、提取注入点、进行攻击测试和分析结果四个步骤进行了深入研究,主要研究内容如下:(1)研究了Web页面漏洞注入点的自动获取方法,以解决传统静态爬虫对XSS漏洞注入点覆盖率小的问题,提出了基于Headless browser的Web页面爬虫框架,该框架含有浏览器的内核,可以模拟浏览器行为来解析JavaScript和加载Ajax以得到页面中隐藏式注入点,同时可以分析页面的DOM结构以得到页面中的非格式化注入点。通过分析总结了各种注入点和交互点的可能的特征,本文设计并实现的动态爬虫模块可以获取大量因网页格式越来越多样化而产生的非格式化注入点,包括那些既不存在于表单中,也不通过传统的submit方式提交,而是在用户点击某个按钮后,通过JavaScript合成请求提交到服务器的注入点。(2)提出了一种高效的通过提交攻击向量判断XSS漏洞是否存在的方法。设计并实现了可动态识别XSS漏洞的自动化检测模块。在提交攻击向量请求后,可以判断返回页面是否有异常的浏览器行为,并且,借助第三方服务器动态判断页面返回后的结果。如果攻击向量中含有对该服务器的请求,则系统会自动分析第三方服务器的状态,判断返回页面是否执行了这一请求从而判断出当前注入点是否存在漏洞。该系统完全采用Python语言开发,具有易于维护和进行二次开发的特点,对XSS漏洞的检测与研究有非常重要的应用价值。(3)设计并实现了功能友好的用户交互界面。该系统的用户交互界面基于PyQt库设计,使得该模块可以跨平台,在各种操作系统上显示统一的用户界面,方便系统的运行。同时,该模块也对爬虫爬取页面的信息、检测注入点时结果汇报的信息进行了整理,并以丰富的格式进行显示。此外,该模块提供了用户自定义攻击向量、以及获取和设置Cookie等功能,用户可以在系统中直接登录目标页面并将登录状态保存下来,之后检测时,该系统可以加载保存的Cookie文件,以爬取含有正确Cookie时才能爬取到的内容。