CN105678170A - 一种动态检测xss漏洞的方法 - Google Patents

一种动态检测xss漏洞的方法 Download PDF

Info

Publication number
CN105678170A
CN105678170A CN201610013323.3A CN201610013323A CN105678170A CN 105678170 A CN105678170 A CN 105678170A CN 201610013323 A CN201610013323 A CN 201610013323A CN 105678170 A CN105678170 A CN 105678170A
Authority
CN
China
Prior art keywords
url
request
web page
page
javascript
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201610013323.3A
Other languages
English (en)
Other versions
CN105678170B (zh
Inventor
柳毅
凌捷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangdong University of Technology
Original Assignee
Guangdong University of Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Guangdong University of Technology filed Critical Guangdong University of Technology
Priority to CN201610013323.3A priority Critical patent/CN105678170B/zh
Publication of CN105678170A publication Critical patent/CN105678170A/zh
Application granted granted Critical
Publication of CN105678170B publication Critical patent/CN105678170B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明公开了一种动态检测XSS漏洞的方法,包括:对Web页面进行解析后获得所有静态URL和动态URL,建立初始URL集合;对初始URL集合进行解析处理后,获得对应的网页链接库;依次对网页链接库中的网页链接进行请求后,获取请求到的页面HTML代码,进而根据预设生成规则填充页面的Form表单,生成一个有威胁性的请求,并提交到服务器;采用浏览器对生成的有威胁性的请求进行模拟访问,进而检测获得XSS漏洞。本发明可以准确、有效地检测出Web页面的XSS漏洞,而且检测效率高,可广泛应用于Web页面的信息安全监控行业中。

Description

一种动态检测XSS漏洞的方法
技术领域
本发明涉及信息安全领域,特别是涉及一种动态检测XSS漏洞的方法。
背景技术
名词解释:
XSS:CrossSiteScripting,跨站脚本攻击;
Ajax:AsynchronousJavaScriptandXML,异步JavaScript和XML,是指一种创建交互式网页应用的网页开发技术;
JavaScript:一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型;
XML:可扩展标记语言;
DOM:DocumentObjectModel,文档对象模型;
URL:UniformResourceLocator,统一资源定位符;
HTML:超级文本标记语言;
XHR:XmlHttpRequest,中可扩展超文本传输请求。
随着Web技术的发展,网站给人们带来的体验越来越好。特别是Web2.0,告别了沉重的请求-返回的模式,采用更轻便的局部刷新模式,这大大提高了用户的体验。其中,Ajax技术在Web2.0中占据了主导地位。然而,由于Ajax技术的应用将一部分逻辑处理从服务器端转移到了客户端,这种方式虽然减轻了服务器的压力,但也暴露了更多的接口,导致增加了许多针对Web应用程序的安全威胁,其中严重程度最高的就是跨站脚本攻击,又称XSS攻击。由国际开源安全组织公布的十种最严重的Web应用程序安全漏洞排行榜中可知,跨站脚本攻击一直处于前三的位置。比如前几年出现的“熊猫烧香”病毒,就是利用跨站脚本攻击的方式对用户进行攻击。在Web1.0的时代,跨站脚本攻击就已经被世界各地的安全机构密切关注,而到了Web2.0时代后,Ajax已经成为主流的技术,跨站脚本攻击与Ajax相结合,出现了新的特点,可在用户毫不知情的情况下进行攻击,其威胁性更大。就目前而言,采取较多的行为都是被动的防范措施,比如防火墙等。这对Web1.0时代里的Web应用程序是可行的,但这样做明显忽略了Web应用程序级的安全问题,使之在高层面缺乏有效的防范方式。对于Web应用程序级的安全,虽然很多学者进行了研究,但大多数的研究还停留在Web1.0的时代里,并没有对异步传输进行安全性的检测。
现有的XSS漏洞类型可分为3种基本类型:反射型XSS攻击、存储型XSS攻击和基于DOM的XSS攻击。反射型XSS又称非持久型XSS,这类攻击方式是通过服务器的错误信息、或者是检索结果等手段将注入代码“反射”回来,攻击者构造一个包含注入代码的恶意链接,并通过某种方式将此恶意链接发送给受害者,受害者以为是正常的链接,并进行点击访问,则注入脚本便会将服务器返回的数据传输到攻击者的服务器上。存储型XSS又称持久型XSS,这类攻击方式与反射型XSS最大的不同在于,攻击脚本将被永久性地存放在目标服务器的数据库和文件中,除非管理员发现,并进行删除后才能停止对网站浏览着的威胁;这类攻击多见于能留言或者评论的网站,攻击者在留言或者评论的过程中,将恶意脚本连同正常的信息一起注入到网站留言或评论区中,随着信息被服务器上的数据库存储下来,恶意脚本将会在浏览者进行访问的时候被执行,使受害者收到攻击。基于DOM的XSS,这类攻击方式并不具有与存储型和反射型一样的特殊性行为模式,前两种类型都是提取用户控制的数据并以危险的方式将这些数据返回给用户,在第三类攻击方式中,攻击者是通过以下过程执行JavaScript的:首先攻击者设计一个有注入JavaScript代码的恶意URL,并发送给用户,当用户进行访问时,服务器返回HTML内容,用户浏览器会对HTML代码解析成DOM树结构,在这过程中,注入代码便会被解析出来,从而导致基于DOM的XSS攻击出现,攻击者就有可能获取受害者电脑的重要权限。
目前技术中,对XSS攻击缺乏有效的检测方法,也难以准确地检测出Web页面的XSS漏洞,无法对XSS攻击进行防范。
发明内容
为了解决上述的技术问题,本发明的目的是提供一种动态检测XSS漏洞的方法。
本发明解决其技术问题所采用的技术方案是:
一种动态检测XSS漏洞的方法,包括:
S1、对Web页面进行解析后获得所有静态URL和动态URL,建立初始URL集合;
S2、对初始URL集合进行解析处理后,获得对应的网页链接库;
S3、依次对网页链接库中的网页链接进行请求后,获取请求到的页面HTML代码,进而根据预设生成规则填充页面的Form表单,生成一个有威胁性的请求,并提交到服务器;
S4、采用浏览器对生成的有威胁性的请求进行模拟访问,进而检测获得XSS漏洞。
进一步,所述步骤S1,包括:
S11、对Web页面进行网络爬虫,对其页面HTML代码进行扫描后获得所有静态URL;
S12、对Web页面的JavaScript脚本和通过JavaScript所添加的事件进行提取,将提取到的代码传递给JavaScript引擎进行编译并执行后,获得所有动态URL;
S13、将所有静态URL和动态URL存储到哈希表中,作为初始URL集合。
进一步,所述步骤S2,包括:
S21、逐一获取初始URL集合中的每个URL并进行解析,依次判断每个URL中是否存在HTML请求;
S22、响应于URL中存在HTML请求的情况,获取该HTML请求的页面HTML代码;
S23、对获取的页面HTML代码进行解析后,提取获得对应的网页链接,并将其存储到网页链接库中;
S24、判断初始URL集合中是否存在未处理的URL,若是,则返回执行步骤S21,反之结束。
进一步,所述步骤S3,包括:
S31、依次对网页链接库中的网页链接进行请求后,获取请求到的页面HTML代码;
S32、提取页面HTML代码的DOM树中的所有表单元素;
S33、根据表单元素的属性、页面HTML代码以及输入区域的结构对象,计算哈希值;
S34、根据计算获得的哈希值,关联到预存在数据库中的一自定义错误数据注入代码后,生成一个有威胁性的请求,并提交到服务器;
S35、判断网页链接库中的网页链接是否请求完毕,若是,则结束,反之返回执行步骤S31。
进一步,所述步骤S4,包括:
S411、初始化模拟浏览器控件,响应于用户输入的有威胁性的请求的URL,向服务器发送请求后,获取服务器返回的相应的页面;
S412、采用广度优先算法,遍历该页面中Ajax应用的DOM状态,并使用增量的方式将获取的初始DOM状态依次添加到状态存储队列中,同时设定状态深度为0;
S413、对状态存储队列依次进行出列操作,并采用模拟浏览器控件执行各DOM状态后,判断该状态的状态深度是否小于最大状态深度,若是,则执行步骤S414,反之结束;
S414、获取当前DOM状态下的DOM结构中的JavaScript事件的元素结点,并依次触发事件,比较触发事件前后DOM结构是否一样,若不一样则将触发后的新的DOM状态添加到状态存储队列中,同时执行步骤S415;
S415、获取新的页面HTML代码,并判断是否存在与错误数据注入代码相对应的反馈数据,若是,则判断存在XSS漏洞,反之,返回步骤S413继续出列操作直到操作结束。
进一步,所述步骤S415中所述操作结束的条件为:状态深度大于最大状态深度或者状态存储队列为空。
进一步,所述步骤S4,包括:
S421、初始化模拟浏览器控件,响应于用户输入的有威胁性的请求的URL,向服务器发送请求后,获取服务器返回的相应的HTML代码;
S422、判断获得的HTML代码中是否存在XHR的调用,若存在,则对该HTML代码中的JavaScript进行代码匹配后获得所有JavaScript文件名,并存储到一集合中;
S423、对该集合进行遍历,将每个JavaScript文件名与预存的JavaScript文件特征库中存储的文件名进行匹配,并对每个匹配失败的JavaScript文件名,执行步骤S424和步骤S425;
S424、从服务器下载该JavaScript文件名对应的JavaScript文件后,计算该JavaScript文件的哈希值;
S425、将计算获得的哈希值与预存的JavaScript文件特征库中存储的哈希值进行匹配,若匹配失败,则获取该JavaScript文件作为可能的XSS漏洞,反之,返回步骤S423继续遍历直到遍历结束。
本发明的有益效果是:本发明提供了一种动态检测XSS漏洞的方法,包括:对Web页面进行解析后获得所有静态URL和动态URL,建立初始URL集合;对初始URL集合进行解析处理后,获得对应的网页链接库;依次对网页链接库中的网页链接进行请求后,获取请求到的页面HTML代码,进而根据预设生成规则填充页面的Form表单,生成一个有威胁性的请求,并提交到服务器;采用浏览器对生成的有威胁性的请求进行模拟访问,进而检测获得XSS漏洞。本方法可以准确、有效地检测出Web页面的XSS漏洞,而且检测效率高,从而可为XSS提供有效防范。
附图说明
下面结合附图和实施例对本发明作进一步说明。
图1是本发明的一种动态检测XSS漏洞的方法的流程图;
图2是本发明的一种动态检测XSS漏洞的方法的实施例三的检测时间对比图。
具体实施方式
参照图1,本发明提供了一种动态检测XSS漏洞的方法,包括:
S1、对Web页面进行解析后获得所有静态URL和动态URL,建立初始URL集合;
S2、对初始URL集合进行解析处理后,获得对应的网页链接库;
S3、依次对网页链接库中的网页链接进行请求后,获取请求到的页面HTML代码,进而根据预设生成规则填充页面的Form表单,生成一个有威胁性的请求,并提交到服务器;
S4、采用浏览器对生成的有威胁性的请求进行模拟访问,进而检测获得XSS漏洞。
进一步作为优选的实施方式,所述步骤S1,包括:
S11、对Web页面进行网络爬虫,对其页面HTML代码进行扫描后获得所有静态URL;
S12、对Web页面的JavaScript脚本和通过JavaScript所添加的事件进行提取,将提取到的代码传递给JavaScript引擎进行编译并执行后,获得所有动态URL;
S13、将所有静态URL和动态URL存储到哈希表中,作为初始URL集合。
进一步作为优选的实施方式,所述步骤S2,包括:
S21、逐一获取初始URL集合中的每个URL并进行解析,依次判断每个URL中是否存在HTML请求;
S22、响应于URL中存在HTML请求的情况,获取该HTML请求的页面HTML代码;
S23、对获取的页面HTML代码进行解析后,提取获得对应的网页链接,并将其存储到网页链接库中;
S24、判断初始URL集合中是否存在未处理的URL,若是,则返回执行步骤S21,反之结束。
进一步作为优选的实施方式,所述步骤S3,包括:
S31、依次对网页链接库中的网页链接进行请求后,获取请求到的页面HTML代码;
S32、提取页面HTML代码的DOM树中的所有表单元素;
S33、根据表单元素的属性、页面HTML代码以及输入区域的结构对象,计算哈希值;
S34、根据计算获得的哈希值,关联到预存在数据库中的一自定义错误数据注入代码后,生成一个有威胁性的请求,并提交到服务器;
S35、判断网页链接库中的网页链接是否请求完毕,若是,则结束,反之返回执行步骤S31。
进一步作为优选的实施方式,所述步骤S4,包括:
S411、初始化模拟浏览器控件,响应于用户输入的有威胁性的请求的URL,向服务器发送请求后,获取服务器返回的相应的页面;
S412、采用广度优先算法,遍历该页面中Ajax应用的DOM状态,并使用增量的方式将获取的初始DOM状态依次添加到状态存储队列中,同时设定状态深度为0;
S413、对状态存储队列依次进行出列操作,并采用模拟浏览器控件执行各DOM状态后,判断该状态的状态深度是否小于最大状态深度,若是,则执行步骤S414,反之结束;
S414、获取当前DOM状态下的DOM结构中的JavaScript事件的元素结点,并依次触发事件,比较触发事件前后DOM结构是否一样,若不一样则将触发后的新的DOM状态添加到状态存储队列中,同时执行步骤S415;
S415、获取新的页面HTML代码,并判断是否存在与错误数据注入代码相对应的反馈数据,若是,则判断存在XSS漏洞,反之,返回步骤S413继续出列操作直到操作结束。
进一步作为优选的实施方式,所述步骤S415中所述操作结束的条件为:状态深度大于最大状态深度或者状态存储队列为空。
进一步作为优选的实施方式,所述步骤S4,包括:
S421、初始化模拟浏览器控件,响应于用户输入的有威胁性的请求的URL,向服务器发送请求后,获取服务器返回的相应的HTML代码;
S422、判断获得的HTML代码中是否存在XHR的调用,若存在,则对该HTML代码中的JavaScript进行代码匹配后获得所有JavaScript文件名,并存储到一集合中;
S423、对该集合进行遍历,将每个JavaScript文件名与预存的JavaScript文件特征库中存储的文件名进行匹配,并对每个匹配失败的JavaScript文件名,执行步骤S424和步骤S425;
S424、从服务器下载该JavaScript文件名对应的JavaScript文件后,计算该JavaScript文件的哈希值;
S425、将计算获得的哈希值与预存的JavaScript文件特征库中存储的哈希值进行匹配,若匹配失败,则获取该JavaScript文件作为可能的XSS漏洞,反之,返回步骤S423继续遍历直到遍历结束。
以下结合具体实施例对本发明做详细说明。
实施例一
参照图1,一种动态检测XSS漏洞的方法,包括:
S1、对Web页面进行解析后获得所有静态URL和动态URL,建立初始URL集合;
S2、对初始URL集合进行解析处理后,获得对应的网页链接库;
S3、依次对网页链接库中的网页链接进行请求后,获取请求到的页面HTML代码,进而根据预设生成规则填充页面的Form表单,生成一个有威胁性的请求,并提交到服务器;
S4、采用浏览器对生成的有威胁性的请求进行模拟访问,进而检测获得XSS漏洞。
步骤S1是爬虫抓取数据输入点的过程,具体包括步骤S11~S13:
S11、对Web页面进行网络爬虫,对其页面HTML代码进行扫描后获得所有静态URL;
S12、对Web页面的JavaScript脚本和通过JavaScript所添加的事件进行提取,将提取到的代码传递给JavaScript引擎进行编译并执行后,获得所有动态URL;
S13、将所有静态URL和动态URL存储到哈希表中,作为初始URL集合。
在一个Web页面中,URL的个数是非常多的,重复的URL相对的也多,所以必须使用高效率的算法将重复的URL抛弃,把不同的URL存储下来,本文中采用了哈希表存储的方式,在数据结构中,哈希查询的时间复杂度为O(1),不必将所有已存的URL重新遍历一遍,这对效率有很大的提升。
步骤S2是将前面爬虫获得的URL建立网页链接库的过程,具体,包括S21~S24:
S21、逐一获取初始URL集合中的每个URL并进行解析,依次判断每个URL中是否存在HTML请求;
S22、响应于URL中存在HTML请求的情况,获取该HTML请求的页面HTML代码;
S23、对获取的页面HTML代码进行解析后,提取获得对应的网页链接,并将其存储到网页链接库中;
S24、判断初始URL集合中是否存在未处理的URL,若是,则返回执行步骤S21,反之结束。
具体的,步骤S3,包括S31~S35:
S31、依次对网页链接库中的网页链接进行请求后,获取请求到的页面HTML代码;
S32、提取页面HTML代码的DOM树中的所有表单元素;
S33、根据表单元素的属性、页面HTML代码以及输入区域的结构对象,计算哈希值;表单元素的属性有Get和Post属性,输入区域有Input域,Textarea域,Embed域等,通过哈希函数求取哈希值,例如:H(“Get”+“Input”);
S34、根据计算获得的哈希值,关联到预存在数据库中的一自定义错误数据注入代码后,生成一个有威胁性的请求,并提交到服务器;本步骤中,预先设定不同的哈希值关联到不同的错误数据注入代码,从而根据计算获得的哈希值来生成对应的有威胁性的请求;另外,本步骤生成有威胁性的请求时,也会同时生成其对应的URL、表单或AjaxXHR请求,并进行存储;结合JavaScript的执行效果和语法,针对表单、URL和XHR对象类型的攻击漏洞,下表1给出了本实施例采用的错误数据注入代码的攻击字符串:
表1
S35、判断网页链接库中的网页链接是否请求完毕,若是,则结束,反之返回执行步骤S31。
本实施例中,步骤S4采用基于Ajax页面代码行为的XSS漏洞检测算法,增量地构建Ajax返回的DOM树状态,当页面HTML代码因为返回数据而发生改变的时候,根据从数据库中取得的注入代码,检测返回的页面HTML代码是否出现了和错误数据注入代码相对应的数据,从而判断是否存在XSS漏洞,具体包括步骤S411~S415:
S411、初始化模拟浏览器控件,响应于用户输入的有威胁性的请求的URL,向服务器发送请求后,获取服务器返回的相应的页面;
S412、采用广度优先算法,遍历该页面中Ajax应用的DOM状态,并使用增量的方式将获取的初始DOM状态依次添加到状态存储队列中,同时设定状态深度为0;
S413、对状态存储队列依次进行出列操作,并采用模拟浏览器控件执行各DOM状态后,判断该状态的状态深度是否小于最大状态深度,若是,则执行步骤S414,反之结束;
S414、获取当前DOM状态下的DOM结构中的JavaScript事件的元素结点,并依次触发事件,比较触发事件前后DOM结构是否一样,若不一样则将触发后的新的DOM状态添加到状态存储队列中,同时执行步骤S415;
S415、获取新的页面HTML代码,并判断是否存在与错误数据注入代码相对应的反馈数据,若是,则判断存在XSS漏洞,并将XSS漏洞检测结果存储到专门的数据库中,反之,返回步骤S413继续出列操作直到操作结束。操作结束的条件为:状态深度大于最大状态深度或者状态存储队列为空。
实施例二
本实施例与实施例一的区别是,步骤S4的详细步骤中,采用的是基于JavaScript的XHR检测方法。在JavaScript代码中,最常用的、最关键的就是XHR对象,该对象可以异步地向服务器发出请求,获取新数据,然后通过DOM将数据插入到页面中进行局部刷新。这就给攻击者留下了一个很大的漏洞,攻击者可使用XHR对象,注入错误代码。这是Web2.0应用程序和Web1.0应用程序最大的不同,相对来说新的Web应用程序增加了一个很重要的安全威胁,因此必须对AjaxXHR的漏洞检测进行特殊处理。本实施例中,预先收集目前合法的JavaScript文件的信息,比如文件大小、文件名等,然后建立预存的JavaScript文件特征库,当进行检测时,将页面获取的JavaScript文件和预存的JavaScript文件特征库的文件进行匹配,来检测是否具有漏洞攻击。
详细的,本实施例的步骤S4包括步骤S421~S425:
S421、初始化模拟浏览器控件,响应于用户输入的有威胁性的请求的URL,向服务器发送请求后,获取服务器返回的相应的HTML代码;
S422、判断获得的HTML代码中是否存在XHR的调用,若存在,则对该HTML代码中的JavaScript进行代码匹配后获得所有JavaScript文件名,并存储到一集合中;
S423、对该集合进行遍历,将每个JavaScript文件名与预存的JavaScript文件特征库中存储的文件名进行匹配,并对每个匹配失败的JavaScript文件名,执行步骤S424和步骤S425;
S424、从服务器下载该JavaScript文件名对应的JavaScript文件后,计算该JavaScript文件的哈希值;
S425、将计算获得的哈希值与预存的JavaScript文件特征库中存储的哈希值进行匹配,若匹配失败,则说明该JavaScript文件是自定义的JavaScript文件,且在服务器上引用,在很大程度上是一个可利用的XSS攻击漏洞,因此获取该JavaScript文件作为可能的XSS漏洞;反之,表示该JavaScript文件只是修改了文件名,本质内容并未发生变化,是合法文件,从而跳出本次循环,返回步骤S423继续遍历下一个JavaScript文件直到遍历结束。
实施例三
本实施例中,采用实施例一的检测方法制作一个检测工具XSSFINDER,与市面上比较常见的XSS漏洞检测工具Paros和X5S进行对比,其中Paros是一个集爬虫和查询XSS漏洞为一体的软件,但在爬虫模块效率偏低;X5S是Fiddler的插件,用于查询XSS漏洞,但只能检查反射型XSS漏洞,对于Ajax下的XSS漏洞检测并不精确。图2中展示了这三种检测工具进行爬虫时所消耗的检测时间,本实施例为了比高对比的准确性,采取对每个Web页面独立扫描20次后,算出平均扫描时间的方式。根据图2的结果可知,本实施例的XSSFINDER工具所消耗的时间是相对较低的,这主要得益于本发明对爬虫系统的优化,使得XSSFINDER工具在检测数据入口点的时间大大缩减了。
另外,本实施例采用这三种检测工具对两个网站进行XSS漏洞检测:一、某学校的官方网站,二、名字为PetStore的开源系统,此系统是Java编写的基于Ajax的Web应用程序。三种检测工具分别对网站进行扫描与检测,其最后的检测结果如下表2所示,从表2的结果来看,本实施例的XSSFINDER检测到的漏洞数和系统存在的漏洞数量是最多的,表明XSSFINDER检测漏洞的准确性与全面性,而且检测到的数据入口点也基本与实际情况符合。因此,本实施例的XSSFINDER检查漏洞的能力是可以肯定的,也验证了本发明的检测方法是可行的。
表2
表2中,form表示网页中需要进行提交的表单,input表示表单中的输入接口。
因此可见,本发明的检测方法不仅比目前的查找XSS漏洞的工具效率高,而且检测准确率也相对较高。
以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做出种种的等同变形或替换,这些等同的变型或替换均包含在本申请权利要求所限定的范围内。

Claims (7)

1.一种动态检测XSS漏洞的方法,其特征在于,包括:
S1、对Web页面进行解析后获得所有静态URL和动态URL,建立初始URL集合;
S2、对初始URL集合进行解析处理后,获得对应的网页链接库;
S3、依次对网页链接库中的网页链接进行请求后,获取请求到的页面HTML代码,进而根据预设生成规则填充页面的Form表单,生成一个有威胁性的请求,并提交到服务器;
S4、采用浏览器对生成的有威胁性的请求进行模拟访问,进而检测获得XSS漏洞。
2.根据权利要求1所述的一种动态检测XSS漏洞的方法,其特征在于,所述步骤S1,包括:
S11、对Web页面进行网络爬虫,对其页面HTML代码进行扫描后获得所有静态URL;
S12、对Web页面的JavaScript脚本和通过JavaScript所添加的事件进行提取,将提取到的代码传递给JavaScript引擎进行编译并执行后,获得所有动态URL;
S13、将所有静态URL和动态URL存储到哈希表中,作为初始URL集合。
3.根据权利要求1所述的一种动态检测XSS漏洞的方法,其特征在于,所述步骤S2,包括:
S21、逐一获取初始URL集合中的每个URL并进行解析,依次判断每个URL中是否存在HTML请求;
S22、响应于URL中存在HTML请求的情况,获取该HTML请求的页面HTML代码;
S23、对获取的页面HTML代码进行解析后,提取获得对应的网页链接,并将其存储到网页链接库中;
S24、判断初始URL集合中是否存在未处理的URL,若是,则返回执行步骤S21,反之结束。
4.根据权利要求1所述的一种动态检测XSS漏洞的方法,其特征在于,所述步骤S3,包括:
S31、依次对网页链接库中的网页链接进行请求后,获取请求到的页面HTML代码;
S32、提取页面HTML代码的DOM树中的所有表单元素;
S33、根据表单元素的属性、页面HTML代码以及输入区域的结构对象,计算哈希值;
S34、根据计算获得的哈希值,关联到预存在数据库中的一自定义错误数据注入代码后,生成一个有威胁性的请求,并提交到服务器;
S35、判断网页链接库中的网页链接是否请求完毕,若是,则结束,反之返回执行步骤S31。
5.根据权利要求1所述的一种动态检测XSS漏洞的方法,其特征在于,所述步骤S4,包括:
S411、初始化模拟浏览器控件,响应于用户输入的有威胁性的请求的URL,向服务器发送请求后,获取服务器返回的相应的页面;
S412、采用广度优先算法,遍历该页面中Ajax应用的DOM状态,并使用增量的方式将获取的初始DOM状态依次添加到状态存储队列中,同时设定状态深度为0;
S413、对状态存储队列依次进行出列操作,并采用模拟浏览器控件执行各DOM状态后,判断该状态的状态深度是否小于最大状态深度,若是,则执行步骤S414,反之结束;
S414、获取当前DOM状态下的DOM结构中的JavaScript事件的元素结点,并依次触发事件,比较触发事件前后DOM结构是否一样,若不一样则将触发后的新的DOM状态添加到状态存储队列中,同时执行步骤S415;
S415、获取新的页面HTML代码,并判断是否存在与错误数据注入代码相对应的反馈数据,若是,则判断存在XSS漏洞,反之,返回步骤S413继续出列操作直到操作结束。
6.根据权利要求5所述的一种动态检测XSS漏洞的方法,其特征在于,所述步骤S415中所述操作结束的条件为:状态深度大于最大状态深度或者状态存储队列为空。
7.根据权利要求1所述的一种动态检测XSS漏洞的方法,其特征在于,所述步骤S4,包括:
S421、初始化模拟浏览器控件,响应于用户输入的有威胁性的请求的URL,向服务器发送请求后,获取服务器返回的相应的HTML代码;
S422、判断获得的HTML代码中是否存在XHR的调用,若存在,则对该HTML代码中的JavaScript进行代码匹配后获得所有JavaScript文件名,并存储到一集合中;
S423、对该集合进行遍历,将每个JavaScript文件名与预存的JavaScript文件特征库中存储的文件名进行匹配,并对每个匹配失败的JavaScript文件名,执行步骤S424和步骤S425;
S424、从服务器下载该JavaScript文件名对应的JavaScript文件后,计算该JavaScript文件的哈希值;
S425、将计算获得的哈希值与预存的JavaScript文件特征库中存储的哈希值进行匹配,若匹配失败,则获取该JavaScript文件作为可能的XSS漏洞,反之,返回步骤S423继续遍历直到遍历结束。
CN201610013323.3A 2016-01-05 2016-01-05 一种动态检测xss漏洞的方法 Expired - Fee Related CN105678170B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610013323.3A CN105678170B (zh) 2016-01-05 2016-01-05 一种动态检测xss漏洞的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610013323.3A CN105678170B (zh) 2016-01-05 2016-01-05 一种动态检测xss漏洞的方法

Publications (2)

Publication Number Publication Date
CN105678170A true CN105678170A (zh) 2016-06-15
CN105678170B CN105678170B (zh) 2018-05-29

Family

ID=56299692

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610013323.3A Expired - Fee Related CN105678170B (zh) 2016-01-05 2016-01-05 一种动态检测xss漏洞的方法

Country Status (1)

Country Link
CN (1) CN105678170B (zh)

Cited By (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106446694A (zh) * 2016-12-13 2017-02-22 四川长虹电器股份有限公司 一种基于网络爬虫的xss漏洞挖掘系统
CN106453267A (zh) * 2016-09-21 2017-02-22 中科信息安全共性技术国家工程研究中心有限公司 一种检测http参数污染漏洞的方法
CN106897624A (zh) * 2017-01-16 2017-06-27 深圳开源互联网安全技术有限公司 一种漏洞检测方法及其装置
CN106909846A (zh) * 2017-01-16 2017-06-30 安徽开源互联网安全技术有限公司 一种基于虚拟解析的漏洞检测方法及其装置
CN107085686A (zh) * 2017-03-24 2017-08-22 深圳市九州安域科技有限公司 一种交互xss漏洞的检测方法及其系统
CN107749835A (zh) * 2017-09-11 2018-03-02 哈尔滨工程大学 一种基于预测的点击劫持攻击的渗透测试方法
CN107784229A (zh) * 2016-08-26 2018-03-09 安提特软件有限责任公司 Javascript 安全测试
CN107800692A (zh) * 2017-10-13 2018-03-13 郑州云海信息技术有限公司 一种基于web浏览器的XSS漏洞检测方法及系统
CN107844701A (zh) * 2016-09-21 2018-03-27 南京大学 一种基于程序分析和变异输入的跨站脚本攻击检测方法
CN108133037A (zh) * 2018-01-09 2018-06-08 广东电网有限责任公司电力科学研究院 一种网页漏洞扫描方法及系统
CN108696481A (zh) * 2017-04-07 2018-10-23 北京京东尚科信息技术有限公司 漏洞检测方法和装置
CN108769081A (zh) * 2018-07-11 2018-11-06 中国人民解放军国防科技大学 一种检测xss攻击的方法、装置及计算机可读存储介质
CN109218296A (zh) * 2018-08-29 2019-01-15 天津大学 基于改进csp策略的xss防御系统和方法
CN109508548A (zh) * 2018-11-19 2019-03-22 四川长虹电器股份有限公司 一种基于仿真器技术的威胁行为搜集系统及方法
WO2019127869A1 (zh) * 2017-12-28 2019-07-04 平安科技(深圳)有限公司 漏洞信息收集方法、装置、设备及可读存储介质
CN110417873A (zh) * 2019-07-08 2019-11-05 上海鸿翼软件技术股份有限公司 一种实现记录网页交互操作的网络信息提取系统
CN110489370A (zh) * 2019-07-15 2019-11-22 广东工业大学 一种哈希算法sha256消息预处理的硬件填充方法
CN110708308A (zh) * 2019-09-29 2020-01-17 武汉大学 一种面向云计算环境的跨站脚本漏洞挖掘方法及系统
CN110875919A (zh) * 2018-12-21 2020-03-10 北京安天网络安全技术有限公司 一种网络威胁的检测方法、装置、电子设备及存储介质
CN111291385A (zh) * 2020-05-12 2020-06-16 深圳开源互联网安全技术有限公司 Js脚本文件漏洞检测方法及系统
CN111723400A (zh) * 2020-06-16 2020-09-29 杭州安恒信息技术股份有限公司 一种js敏感信息泄露检测方法、装置、设备及介质
CN115001844A (zh) * 2022-06-27 2022-09-02 中国电信股份有限公司 漏洞检测方法、装置和存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103095681A (zh) * 2012-12-03 2013-05-08 微梦创科网络科技(中国)有限公司 一种检测漏洞的方法及装置
CN103685189A (zh) * 2012-09-17 2014-03-26 百度在线网络技术(北京)有限公司 网站安全评估方法及系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103685189A (zh) * 2012-09-17 2014-03-26 百度在线网络技术(北京)有限公司 网站安全评估方法及系统
CN103095681A (zh) * 2012-12-03 2013-05-08 微梦创科网络科技(中国)有限公司 一种检测漏洞的方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
沈寿忠等: "基于爬虫的xss漏洞检浏工具设计与实现", 《计算机工程》 *

Cited By (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107784229A (zh) * 2016-08-26 2018-03-09 安提特软件有限责任公司 Javascript 安全测试
CN106453267A (zh) * 2016-09-21 2017-02-22 中科信息安全共性技术国家工程研究中心有限公司 一种检测http参数污染漏洞的方法
CN107844701A (zh) * 2016-09-21 2018-03-27 南京大学 一种基于程序分析和变异输入的跨站脚本攻击检测方法
CN106446694A (zh) * 2016-12-13 2017-02-22 四川长虹电器股份有限公司 一种基于网络爬虫的xss漏洞挖掘系统
CN106897624A (zh) * 2017-01-16 2017-06-27 深圳开源互联网安全技术有限公司 一种漏洞检测方法及其装置
CN106909846A (zh) * 2017-01-16 2017-06-30 安徽开源互联网安全技术有限公司 一种基于虚拟解析的漏洞检测方法及其装置
CN106909846B (zh) * 2017-01-16 2020-04-24 安徽开源互联网安全技术有限公司 一种基于虚拟解析的漏洞检测方法及其装置
CN107085686A (zh) * 2017-03-24 2017-08-22 深圳市九州安域科技有限公司 一种交互xss漏洞的检测方法及其系统
CN108696481A (zh) * 2017-04-07 2018-10-23 北京京东尚科信息技术有限公司 漏洞检测方法和装置
CN107749835A (zh) * 2017-09-11 2018-03-02 哈尔滨工程大学 一种基于预测的点击劫持攻击的渗透测试方法
CN107749835B (zh) * 2017-09-11 2020-11-20 哈尔滨工程大学 一种基于预测的点击劫持攻击的渗透测试方法
CN107800692A (zh) * 2017-10-13 2018-03-13 郑州云海信息技术有限公司 一种基于web浏览器的XSS漏洞检测方法及系统
WO2019127869A1 (zh) * 2017-12-28 2019-07-04 平安科技(深圳)有限公司 漏洞信息收集方法、装置、设备及可读存储介质
CN108133037A (zh) * 2018-01-09 2018-06-08 广东电网有限责任公司电力科学研究院 一种网页漏洞扫描方法及系统
CN108769081A (zh) * 2018-07-11 2018-11-06 中国人民解放军国防科技大学 一种检测xss攻击的方法、装置及计算机可读存储介质
CN109218296A (zh) * 2018-08-29 2019-01-15 天津大学 基于改进csp策略的xss防御系统和方法
CN109508548A (zh) * 2018-11-19 2019-03-22 四川长虹电器股份有限公司 一种基于仿真器技术的威胁行为搜集系统及方法
CN110875919B (zh) * 2018-12-21 2022-02-11 北京安天网络安全技术有限公司 一种网络威胁的检测方法、装置、电子设备及存储介质
CN110875919A (zh) * 2018-12-21 2020-03-10 北京安天网络安全技术有限公司 一种网络威胁的检测方法、装置、电子设备及存储介质
CN110417873A (zh) * 2019-07-08 2019-11-05 上海鸿翼软件技术股份有限公司 一种实现记录网页交互操作的网络信息提取系统
CN110489370A (zh) * 2019-07-15 2019-11-22 广东工业大学 一种哈希算法sha256消息预处理的硬件填充方法
CN110708308B (zh) * 2019-09-29 2021-08-17 武汉大学 一种面向云计算环境的跨站脚本漏洞挖掘方法及系统
CN110708308A (zh) * 2019-09-29 2020-01-17 武汉大学 一种面向云计算环境的跨站脚本漏洞挖掘方法及系统
CN111898131A (zh) * 2020-05-12 2020-11-06 深圳开源互联网安全技术有限公司 Js脚本文件漏洞检测方法及系统
CN111291385B (zh) * 2020-05-12 2020-09-01 深圳开源互联网安全技术有限公司 Js脚本文件漏洞检测方法及系统
CN111291385A (zh) * 2020-05-12 2020-06-16 深圳开源互联网安全技术有限公司 Js脚本文件漏洞检测方法及系统
CN111898131B (zh) * 2020-05-12 2023-04-04 深圳开源互联网安全技术有限公司 Js脚本文件漏洞检测方法及系统
CN111723400A (zh) * 2020-06-16 2020-09-29 杭州安恒信息技术股份有限公司 一种js敏感信息泄露检测方法、装置、设备及介质
CN115001844A (zh) * 2022-06-27 2022-09-02 中国电信股份有限公司 漏洞检测方法、装置和存储介质

Also Published As

Publication number Publication date
CN105678170B (zh) 2018-05-29

Similar Documents

Publication Publication Date Title
CN105678170A (zh) 一种动态检测xss漏洞的方法
Lekies et al. 25 million flows later: large-scale detection of DOM-based XSS
CN103744802B (zh) Sql注入攻击的识别方法及装置
Gupta et al. Hunting for DOM-Based XSS vulnerabilities in mobile cloud-based online social network
Wang et al. TT-XSS: A novel taint tracking based dynamic detection framework for DOM Cross-Site Scripting
Gupta et al. JS‐SAN: defense mechanism for HTML5‐based web applications against javascript code injection vulnerabilities
CN101964025B (zh) Xss检测方法和设备
Balzarotti et al. Multi-module vulnerability analysis of web-based applications
Huang et al. A testing framework for web application security assessment
Robertson et al. Static Enforcement of Web Application Integrity Through Strong Typing.
CN104881608B (zh) 一种基于模拟浏览器行为的xss漏洞检测方法
CN102663319B (zh) 下载链接安全提示方法及装置
Barua et al. Server side detection of content sniffing attacks
CN104881607B (zh) 一种基于模拟浏览器行为的xss漏洞检测系统
CN104063309A (zh) 基于模拟攻击的Web应用程序漏洞检测方法
Van Acker et al. FlashOver: Automated discovery of cross-site scripting vulnerabilities in rich internet applications
CN113342639B (zh) 小程序安全风险评估方法和电子设备
Shahriar et al. Injecting comments to detect JavaScript code injection attacks
CN110460612A (zh) 安全测试方法、设备、存储介质及装置
CN106022132A (zh) 一种基于动态内容分析的网页木马实时检测方法
Baranwal Approaches to detect SQL injection and XSS in web applications
CN105337776B (zh) 一种生成网站指纹的方法、装置及电子设备
Xie et al. JTaint: finding privacy-leakage in chrome extensions
Steinhauser et al. DjangoChecker: Applying extended taint tracking and server side parsing for detection of context‐sensitive XSS flaws
Liu et al. A XSS vulnerability detection approach based on simulating browser behavior

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20180529

Termination date: 20200105

CF01 Termination of patent right due to non-payment of annual fee