当前位置: 首页 > 专利查询>南京大学专利>正文

一种基于程序分析和变异输入的跨站脚本攻击检测方法技术

技术编号:17562215 阅读:37 留言:0更新日期:2018-03-28 12:36
本发明专利技术为一种基于程序分析和变异输入的跨站脚本攻击检测方法:先对爬取的网页使用htmlparser2进行解析,得到网页的DOM结构;然后通过遍历这个DOM结构找到网站中所有的可能输入点,记录这些输入点的ID;再次结合变异算子生成可能的用户输入;最后使用工具Selenium自动运行测试脚本,挖掘网站中可能存在的XSS漏洞。

A XSS attack detection method based on program analysis and variation of input

The invention relates to a cross site scripting attack detection method based on program analysis and variation of input: first analysis of crawling web pages using htmlparser2, get the DOM structure of the web page; then the DOM structure may be found by traversing the input point all the websites, record the input point ID; again with the user input operator generated may; finally use the tool of Selenium automatic test scripts, XSS vulnerabilities mining site.

【技术实现步骤摘要】
一种基于程序分析和变异输入的跨站脚本攻击检测方法
本专利技术属于计算机
,尤其是软件工程
本专利技术采用一种基于变异输入的方法对Web应用中存在的跨站脚本攻击(CrossSiteScripting,简称XSS)进行检测,通过此方法可以简单有效的检测出Web应用中的XSS漏洞,保证了Web应用的质量。
技术介绍
随着社会的不断发展,Web应用已经成为了我们日常生活中不可或缺的一部分。现在的Web应用涉及广泛,包括购物、社交、娱乐等各个领域。Web应用给用户带来便利的同时,也带来了很多的问题,尤其是安全方面的问题。开放Web应用安全工程(OpenWebApplicationSecurityProject简称OWASP)最近两次给出的最关键10项Web应用安全风险(简称Top10)的统计报告显示:XSS分别以2010年排行第二和2013年排行第三的身份进入“备受人们关注的Web安全领域”。目前主要有三种类型的XSS,分别是反射型XSS(ReflectedXSS)又称为非持久型XSS(No-persistentXSS);存储型XSS(StoredXSS)又称为持久型XSS(PersistentXSS);及DOMXSS。反射型XSS是指用户发出请求时,XSS代码出现在URL中,作为输入提交到服务器端,服务器端解析后响应,在响应内容中出现这段XSS代码,最后浏览器解析执行。存储型XSS和反射型XSS的差别在于:提交的XSS代码会存储在服务器端(不管是数据库、内存还是文件系统),下次请求目标页面时不用再提交XSS代码。DOMXSS和前两者的差别在于:DOMXSS的XSS代码并不需要服务器解析响应的直接参与,触发XSS靠的就是浏览器前端的DOM解析,可以认为完全是客户端的事情。本专利技术主要关注DOMXSS。现有的网站XSS检测方法大多建立在污点分析的基础之上,由于基于污点分析的方法需要对source和sink进行记录,需要修改浏览器记录信息或者采用框架进行插桩以获得这些信息,所以基于污点分析的方法在精度或性能上都存在可改进的空间。对Web页面进行程序分析主要有动态分析和静态分析。动态分析是指在真实环境或者虚拟模拟器中对程序进行执行,以对程序运行情况进行分析,优点是分析结果精确,缺点是代价较高且会有漏报。静态分析是指在不运行程序,通过分析程序的源代码以得到需要关注的信息,优点是分析结果全面,缺点是会存在误报。考虑到跨站脚本攻击检测需要尽可能全面,本专利技术采用静态程序分析方法。变异测试是被用来设计新的软件测试和评估存在的软件测试质量的一种方法。每一个变异的版本被称为变异体,当原始版本的行为与变异体的行为不同时则拒绝变异体。这被称为杀掉一个变异体。而这些变异体在建立在好的变异算子的基础上。现有的Web应用安全方面的变异算子主要是针对SQL注入提出来的,通过使用这些变异算子对输入进行变异,可以检测出程序中存在的SQL注入漏洞。本专利技术设计了一些针对用户输入的变异算子,能有效检测出跨站脚本攻击。Selenium是一个作用于Web应用的便捷软件测试框架。Selenium提供了用一些流行的编程语言来编写特定领域的测试,包括Java,C#,Groovy,Perl,PHP,Python和Ruby。这些测试可以运行在大多数的现在浏览器中。本专利技术采用Python语言编写脚本,使得变异输入可以作用到网页的输入点上。
技术实现思路
在现有工作的基础上,本专利技术要解决的问题是:利用程序分析技术,挖掘Web应用中存在的各种XSS漏洞,并设计针对用户输入的变异算子,检测可能存在的跨站脚本攻击,从而有效保障Web应用的安全质量。本专利技术的技术方案是:对爬取的网页使用htmlparser2进行解析,得到网页的DOM结构;通过遍历这个DOM结构找到网站中所有的可能输入点,记录这些输入点的ID;结合变异算子生成可能的用户输入;使用工具Selenium自动运行测试脚本,挖掘网站中可能存在的XSS漏洞。本专利技术具体包括以下步骤:1)对爬取的网页使用htmlparser2进行解析,得到网页DOM结构;2)递归的遍历DOM结构得到所有用户输入点,并记录相应点的ID;3)对某些输入使用变异算子得到变异输入用例;4)利用Selenium结合得到的变异输入用例对所有可能存在的用户输入点进行测试,根据测试得到的结果,判断该输入点是否存在XSS漏洞。步骤1)进行网页解析。一个网页主要由HTML,CSS及JavaScript构成,其中HTML构成了网页的主要框架,使得内容有了一个基本的展示,CSS则是使得网页有一个好的布局,让网页看起来更加美观,JS则是用来对用户触发的一些事件进行响应,如对用户输入的一些内容进行判断,对不符合要求的内容给出相应的提示。所以对页面进行解析的第一步就是,将网页转化成DOM结构,htmlparser2工具是一个HTML解析器,可以处理流数据并可以提供一个回调函数接口。本专利技术使用htmlparser2对网页进行解析,得到网页的DOM结构,得到这个DOM结构后,以供后续步骤对其进行分析。步骤2)对得到的网页DOM结构,编写递归遍历程序对该DOM结构进行,处理各种类型的结点,包括:(1)text结点即文本结点,该结点中主要包含如换行符(\n)等文本内容;(2)tag结点即标签结点,该结点主要包含如p,h1,img等标签结点,在该结点中可以得到一些数据信息、属性信息以及事件处理相关的信息等;(3)script结点即JS脚本结点,在该结点中,可得到JS引用的其它JS库或开发者自己编写的JS脚本;(4)comment结点即注释结点,在该结点中,可得到开发者书写的一些注释信息;(5)style结点即样式结点,在该结点中,主要包含渲染页面的一些CSS脚本。通过遍历程序得到tag结点中标签名为input和textarea的标签,并判断这些标签的type属性是否为hidden;如果不是hidden值,则记录这些标签的ID以供后续使用。利用这种方法可得到网页中所有的用户输入点。尽管此遍历DOM结构的方法,只是用来得到所有用户输入点的ID,但是只要稍加扩展,此方法也适合于得到DOM元素的其它信息,适用于其它要求的页面静态分析。步骤3)在一些基本输入的基础上,使用本专利技术所设计的变异算子对基本输入进行变异,从而得到输入的变异用例。本专利技术设计了如下几种变异算子:(1)AddEscapeOperator(AEO):增加转义算子,该算子的作用是将某些需要进行转义的字符进行转义,这些字符包括“<”,“>”,“&”,“\”等。当普通的输入中出现这些字符时,就运用该转义算子对这些特殊字符进行转义操作;(2)RemoveEscapeOperator(REO):移除转义算子,该算子的作用是将基本输入中出现的转义字符进行移除;(3)AddHighByteOperator(AHBO):添加高字节算子,该算子的作用是在基本输入中的随机位置添加某个高字节字符,由于宽字节编码的问题,当增加一个某个高字节字符后,这个高字节字符可能与前面的一些字符组成一个新的合法字符;(4)AddLowByteOperator(ALBO):添加低字节算子,该算子的作用是在基本输入中的随机位置添加某本文档来自技高网
...
一种基于程序分析和变异输入的跨站脚本攻击检测方法

【技术保护点】
通过静态程序分析方法解析Web页面,然后使用10种变异算子对基本的用户输入进行变异,产生变异后的输入,在页面的输入点使用变异后的输入,根据页面是否出现特定的行为,判断Web页面是否存在XSS漏洞,如果出现的话可以记录出现的位置。

【技术特征摘要】
1.通过静态程序分析方法解析Web页面,然后使用10种变异算子对基本的用户输入进行变异,产生变异后的输入,在页面的输入点使用变异后的输入,根据页面是否出现特定的行为,判断Web页面是否存在XSS漏洞,如果出现的话可以记录出现的位置。2.根据权利要求1所描述的一种基于程序分析和变异输入的跨站脚本攻击检测方法包括以下步骤:1)对爬取的网页使用htmlparser2进行解析,得到网页DOM结构;2)递归的遍历DOM结构得到所有用户输入点,并记录相应点的ID;3)对用户输入使用变异算子,得到变异输入用例;4)结合得到的变异输入用例,使用工具Selenium对所有可能存在的用户输入点进行测试,根据测试得到的结果,判断该输入点是否存在XSS漏洞。3.根据权利要求2所描述的一种基于程序分析和变异输入的跨站脚本攻击检测方法,其步骤1)中使用htmlparser2工具对Web页面进行解析,解析后可得到该Web页面的DOM结构,得到的DOM结构可供后续步骤进一步分析。4.根据权利要求2所描述的一种基于程序分析和变异输入的跨站脚本攻击检测方法,其步骤2)中编写程序对得到的DOM结构进行分析,该遍历程序是一个递归的程序,能全面分析整个页面。例如,form标签中嵌入了input等子标签,该程序首先会遍历form标签节点,再遍历form标签下的子标签input。在遍历Web页面的DOM结构时,记录下标签节点中input标签及textarea标签中type属性不为hidden的标签节点ID。5.根据权利要求2所描述的一种基于程序分析和变异输入的跨站脚本攻击检测方法,其步骤3)中首先给出一些基本的用户输入,然后使用10种变异算子对基本的输入进行变异,变异算子介绍如下。(1)AddEscapeOperator(AEO):增加转义算子,该算子的作用是将某些需要进行转义的字符进行转义,这些字符包括“<”,“>”,“&”,“\”等。当普通的输入中出现这些字符时,就运用该转义算子对这些特殊字符进行转义操作;(2)RemoveEscapeOperator(REO):移除转义算子,该算子的作用是将基本输入中出现的转义字符进行移除;(3)AddHighByte...

【专利技术属性】
技术研发人员:许蕾汪睿李言辉徐宝文
申请(专利权)人:南京大学
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1