一种基于模拟浏览器行为的xss漏洞检测方法

文档序号:8905417阅读:1236来源:国知局
一种基于模拟浏览器行为的xss漏洞检测方法
【技术领域】
[0001]本发明设及一种基于模拟浏览器行为的XSS漏洞检测方法,属于计算机软件跨站 脚本漏洞领域。
【背景技术】
[0002] 近年来,随着Web应用的广泛使用,Web安全问题也日益突出。0WASP公布的2013 年十大Web应用安全风险中,跨站脚本漏洞XSSKrossSiteScripting)名列第S,该表明 XSS漏洞已成为当前各类网站需共同面对的常见的安全风险之一。
[0003]XSS漏洞的产生是由于来自用户的不可信数据被应用程序在没有进行验证,W及 反射回浏览器而没有进行编码或转义的情况下进行了处理,导致浏览器引擎执行了代码 时。很多网站在开发过程中忽略了必要的输入验证,缺乏足够的安全性,该样的网站就很容 易被跨站脚本攻击。通常攻击者会将恶意脚本提交到存在XSS漏洞的Web页面,当客户端 用户浏览该页面时,脚本会被浏览器自动解析执行,达到挂马、钓鱼、盗取用户Cookie、劫持 用户Web行为等目的,因此,对XSS漏洞的检测是非常必要的。
[0004] -般地,Web页面中可能存在XSS漏洞的地方称为注入点。如何在大量页面中找到 潜在的注入点并进行检测是防范XSS漏洞的关键之一,同时也是一项繁杂的工作。在网站 内容日益丰富的今天,人工检测注入点显然是不现实的,而需要尽可能采用自动化方法。网 络爬虫对于基于网络的自动化测试工具是重要的基础功能,它可W从一个起始U化开始, 通过分析网页的内容,运用相关算法找到新的U化并不断地循环抓取网页,直到满足一定 的结束条件,从而获取大量的页面W寻找注入点。找到注入点后,测试工具再构造攻击测试 请求发送给目标站点,并根据目标站点的回应信息来判断是否存在漏洞。
[0005] 目前针对自动化XSS漏洞检测工具的研究还不是很充足,传统的方法均是W静态 爬虫爬取页面,通过获取目标站点的目录结构、对各个页面的源码进行解析,将其中的表单 信息提取出来,W达到寻找注入点的目的。然而,注入点很可能隐藏在网页的动态内容中, 需要通过用户操作,如点击某个按钮,使浏览器解析化vaScript或加载Ajax才能生成。传 统爬虫由于无法模拟浏览器行为,很难解析化vaScript或加载Ajax,从而忽略了隐藏式注 入点。同时在页面解析时,它们还需要提取整个表单内容,获取表单的属性W分析向服务器 提交数据的方式才能提交攻击向量,比较复杂,并且在漏洞检测方面不能动态地分析目标 站点的回应信息,因此未必能判断出XSS漏洞是否存在。

【发明内容】

[0006]本发明采用动态分析,通过检查Web应用程序运行时的行为来检测XSS漏洞,设计 并实现了W化ost.py库为基础的爬虫框架。该系统框架使用黑盒测试判断XSS漏洞是否 存在的准确率更高。
[0007] 为达到W上发明目的,本发明采用的技术方案为一种基于模拟浏览器行为的XSS 漏洞检测方法,本方法完全由python语言在Windows64位系统上编写,在Windows64位 系统上正常运行。同时,本方法具有较强的通用型且支持其它操作系统。
[0008] 其中,一种基于模拟浏览器行为的XSS漏洞检测方法实现的系统包括爬虫模块、 漏洞检测模块两大模块;该两大模块又包含了若干子模块W实现核屯、功能,其中:
[0009] (1)爬虫模块包含页面探索模块和网页解析模块两个子模块,两个子模块共同使 用化ost.py作为浏览器引擎,共享U化列表并对其进行操作。页面探索模块实现探索页面 对功能,而网页解析模块则实现网页解析功能。页面探索模块使用递归的深度优先爬虫,不 断地循环抓取网页存入U化队列,直到将同域名下的页面全部访问完成,从而获取大量的 页面W寻找注入点;网页解析模块从URL队列中提取出页面的URL链接,将页面动态加载 完,并触发页面中的事件W获取化vaSricpt或Ajax生成的新的U化和注入点。其中,新的 U化也会存入U化队列,等待页面探索模块的访问。
[0010] 网页解析模块实现功能的步骤包括,
[0011] 1)事件的捜集,寻找网页中可能解析化vaScript和加载Ajax的点击事件并触 发;
[0012] 2)U化捜集,将新的U化放入待访问的U化列表用于探索页面;
[001引如注入点捜集,用于之后的漏洞检测。
[0014] (2)漏洞检测模块:该模块包含自动检测模块和漏洞判断模块两个子模块,两个 子模块共同使用化ost.py作为浏览器引擎,自动检测模块对注入点自动填充攻击向量,采 用的攻击向量为RSnake提供的化eat化eet,它包括多种绕过XSS检验的攻击向量。该些 经过设计的攻击向量提交后,执行结果交由漏洞判断模块来判断,如果存在漏洞的话,页面 会执行一个弹出提醒框的脚本,其内容为XSS,此时基于化ost.py引擎提供的wait_for_ aledO函数检测是否有提醒框出现,即可检测网页是否执行了脚本,直接判断出当前注入 点是否有漏洞。
[0015] 在探索页面前,还需要进行网页解析,将页面动态加载完,并触发页面中的事件W 获取化vaSricpt或Ajax生成的新的U化和注入点。其中的加载页面由化ost.py提供的 API完成,
[0016] 本系统使用Python的BeautifulSoup库来完成网页解析。BeautifulSoup是一 个用Python写的HTML/XML的解析器,用W处理不规范标记并生成剖析树,并且提供简单又 常用的导航,捜索W及修改剖析树的操作。
[0017] 综上所述,为了更好地进行自动化检测,本系统实现了W下两个方面的功能;①能 够解析化vaScript和加载AjaxW得到页面中隐藏式注入点的支持网络爬虫运行的框架。 ②通过提交攻击向量W判断XSS漏洞是否存在的高效方法。
[0018] 该核屯、库包括re,pywebfuzz,曲ost,bs4,pySide,pyQt,该些库在所有主流的操 作系统上运行,因此很好的实现跨平台移植。
[0019] 该系统完全采用python语言开发,具有易于维护和进行二次开发的特点,对XSS 漏洞的检测与研究有非常重要的应用价值。
【附图说明】
[0020] 图1系统总体架构(按模块)。
[0021] 图2U化处理模型设计。
[0022] 图3漏洞检测流程设计。
【具体实施方式】
[0023] 本方法的原理是基于化ost.py的对服务器的黑盒测试,它由爬虫模块和漏洞检 测模块两个部分组成。系统架构如图1所示。
[0024] 1. 1爬虫模块
[0025] 爬虫模块实现探索页面功能和网页解析功能。探索页面的爬虫使用本文提出的递 归的深度优先算法,仅挖掘同域名下的页面。该算法描述如算法1所示。
[0026] 算法1.页面探索的深度优先递归算法
[0027] 输入;起始网站U化
[002引输出;W输入U化为起点爬取到的所有同域名页面U化
[0029] 1.设置最大深度MAX_DEPTH;
[0030] 2.设置当前深度depth=0;
[003。 3.如果当前深度大于最大深度,结束;否则,执行步骤4 ;
[00础 4.访问当前U化;
[0033] 5.获取页面所有U化存入URL_List;
[0034] 6.如果URL_List为空,结束;否则执行步骤7;
[003引将URL_List中下一个U化作为当前URL当前深度加1,执行步骤3 ;
[0036] 在探索页面前,还需要进行网页解析,将页面动态加载完,并触发页面中的事件W 获取化vaSricpt或Ajax生成的新的U化和注入点。其中的加载页面由化ost.py提供的 API完成,
[0037] 网页解析主要完成S个功能,一是事件捜集,寻找网页中可能解析JavaScript和 加载Ajax的点击事件并触发;二是U化捜集,将新的U化放入待访问的U化列表用于探索 页面;=是注入点捜集,用于之后的漏洞检测。
[0038] 本系统使用Python的BeautifulSoup库来完成网页解析。BeautifulSoup是一 个用Python写的HTML/XML的解析器,它可W很好的处理不规范标记并生成剖析树,并且提 供简单又常用的导航,捜索W及修改剖析树的操作。
[00測 (1)触发事件
[0040] 触发事件时,使用Beauti化1Soup库捜索带有事件属性的标签,之后用化ost.py模拟用户点击触发事件。对事件进行点击后可能使浏览器解析化vaScript和加载Ajax,产 生D0M元素的改变或者U化的跳转,对此采取不同的方式应对。如果跳转到新的U化,存储 当前册L并返回之前页面即可,而产生D0M元素则需再次寻找是否出现了新的事件,直至不 再产生D0M元素为止,步骤如算法2描述:
[00川算法2.页面D0M元素展开算法 [0042] 输入;第一次请求得到的页面HTML代码
[004引输出;展开后的页面HTML代码
[0044]1.获取所有含有事件的标签存入tag_liSt,去除重复的标签;
[0045] 2.模拟点击tag_list中下一个未访问过的标签;
[0046] 3.将该标签存入visit□,标记为访问过;
[0047] 4.若页面跳转,执行步骤5 ;否则,执行步骤6 ;
[0048] 5.将跳转后的页面U化存入URL_List,执行步骤2 ;
[0049] 如果D0M元素改变,执行步骤1 ;
[0050] 通过该种方式,可朗尋网页不断展开,W达到寻找隐藏式注入点的目的。
[005。 似添加U化
[005引 U化超链接一般存在于<a>标签的虹ef属性中,对于HTML中的<a>标签,其虹ef 属性的值可W是任何有效文档的相对或绝对U化,包括片段标识符和化vaScript代码段。 一般用户点击<a>标签中的内容时,浏览器除了会跳转到虹ef属性指定的U化,也可能会执 行化vaScript表达式、方法和函数的列表。
[0053] 传统的网络爬虫仅采用正则表达式匹配一般U化的形式,该样很可能会漏掉页面 和注入点,所W本系统借助带有浏览器引擎的化ost.py库,对虹ef的值进行多种处理,如 图2所示。标准化函数针对不同情况进行字符串处理,将其转换成一般U化的形式。若转 换后的U化不在列表中,将存储至U化列表W用于之后的页面挖掘。
[0054] 1. 2漏洞检测模块
[0055] (1)漏洞检测
[0056] 本系统采用黑盒测试方法来检测目标表单是否存在XSS漏洞。漏洞检测
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1