专利名称:一种检测漏洞的方法及装置的制作方法
技术领域:
本发明涉及通信技术领域,尤其涉及一种检测漏洞的方法及装置。
背景技术:
文档对象模型(DocumentObject Model, dom)型跨站脚本(CrossSiteScripting, xss)漏洞是网页中一种常见的漏洞。由于Dom允许程序或脚本动态的访问和更新文档内容、结构和样式,dom中的一些对象属性和方法可以通过javascript直接操纵,如统一资源定位符(Uniform ResourceLocator, URL)、location、write等,而且客户端脚本可以通过dom动态检查和修改页面内容,并不依赖于服务器返回的页面,因此,如果用户输入的数据没有经过严格确认就用于页面dom的构建,就会产生dom型xss漏洞。目前,在对一个网站服务器进行安全漏洞检测时,通常会检测网站服务器在向客户端推送页面时,是否可以有效的滤掉页面中存在的dom型xss漏洞,如果网站服务器过滤掉了页面中存在的dom型xss漏洞,则说明网站服务器不存在安全漏洞,否则,说明网站服务器存在安全漏洞。在现有技术中,检测网站服务器是否可以有效的过滤掉页面中存在的dom型xss漏洞的方法有以下两种。第一种、构造dom型xss漏洞,并判断网站服务器是否可以过滤掉构造的该dom型xss漏洞,具体如图1所示。图1为现有技术中的第一种检测漏洞的过程,具体包括以下步骤:SlOl:检测装置获得待检测URL。S102:在该待检测URL的参数中添加预设的特殊字符串。S103:检测装置生成用于访问添加了特殊字符串的待检测URL的超文本传输协议(Hyper Text Transport Protocol, HTTP)请求。S104:在该HTTP请求的请求头中添加特殊字符串。S105:检测装置采用添加了特殊字符串的HTTP请求对添加了特殊字符串的待检测URL进行访问,并接收该待检测URL对应的网站服务器返回的页面。S106:判断该页面的超文本标记语言(Hyper Text Markup Language, HTML)代码中是否包含该预设的特殊字符串,若是,则执行步骤S107,否则执行步骤S108。S107:确定该待检测URL对应的网站服务器存在安全漏洞。如果接收到的页面中包含该预设的特殊字符串,则说明该待检测URL对应的网站服务器不能有效的过滤掉页面中存在的dom型xss漏洞,进而说明该待检测URL对应的网站服务器存在安全漏洞。S108:确定该待检测URL对应的网站服务器不存在安全漏洞。如果接收到的页面中未包含该预设的特殊字符串,则说明该待检测URL对应的网站服务器可以有效的过滤掉页面中存在的dom型xss漏洞,进而说明该待检测URL对应的网站服务器不存在安全漏洞。但是,如图1所示的第一种检测漏洞的方法只适用于页面中不存在动态dom元素(既存在输入点也存在输出点的dom元素)的场景。如果页面中存在动态dom元素,则网站服务器返回的页面的HTML代码中就会存在需要客户端通过浏览器在本地进行赋值的变量,因此,该页面只有被客户端的浏览器加载后,才能对该页面的HTML代码中存在的上述变量进行赋值,赋值后的变量就可能存在dom型xss漏洞。而在该页面被加载之前,尚不能知晓该页面的HTML代码中的上述变量会被赋予什么值,因此,上述如图1所示的方法并不能有效的检测包含有动态dom元素的页面中是否存在dom型xss漏洞,也就不能有效的检测相应网站服务器是否存在安全漏洞。第二种、人为的在网站服务器的后台代码中查找关键函数调用,以确定网站服务器的操作行为,据此判断网站服务器是否对dom型xss漏洞进行过滤。由于第二种方法需要人为的根据网站服务器的后台代码进行检测,因此检测效率较为低下。综上,现有技术中的第一种方法检测漏洞的准确性较低,第二种方法检测效率较低,均不能有效的检测网站服务器是否存在安全漏洞。
发明内容
本发明实施例提供一种检测漏洞的方法及装置,用以解决现有技术中检测漏洞的准确性较低、效率较低的问题。本发明实施例提供的一种检测漏洞的方法,包括:检测装置获得待检测统一资源定位符URL,在所述待检测URL的参数中添加预设的特殊字符串,所述特殊字符串中包括定位字符串和检测字符串;并生成用于访问添加了所述特殊字符串的待检测URL的超文本传输协议HTTP请求,并在所述HTTP请求中添加所述特殊字符串;以及采用添加了所述特殊字符串的HTTP请求对添加了所述特殊字符串的待检测URL进行访问,并接收所述待检测URL对应的网站服务器返回的页面;所述检测装置模拟浏览器对所述页面进行加载,查找加载后的页面的超文本标记语言HTML代码中包含的定位字符串,确定查找到的定位字符串所定位出的检测位置;如果加载后的页面的HTML代码中的检测位置上存在检测字符串,则确定所述待检测URL对应的网站服务器存在安全漏洞,如果加载后的页面的HTML代码中的检测位置上不存在检测字符串,或者存在将检测字符串转译或编码后的代码,则确定所述待检测URL对应的网站服务器不存在安全漏洞。本发明实施例提供的一种检测漏洞的装置,包括:第一构造模块,用于获得待检测统一资源定位符URL,在所述待检测URL的参数中添加预设的特殊字符串,所述特殊字符串中包括定位字符串和检测字符串;第二构造模块,用于生成用于访问添加了所述特殊字符串的待检测URL的超文本传输协议HTTP请求,并在所述HTTP请求中添加所述特殊字符串; 访问模块,用于采用添加了所述特殊字符串的HTTP请求对添加了所述特殊字符串的待检测URL进行访问,并接收所述待检测URL对应的网站服务器返回的页面;
定位模块,用于模拟浏览器对所述页面进行加载,查找加载后的页面的超文本标记语言HTML代码中包含的定位字符串,确定查找到的定位字符串所定位出的检测位置;检测模块,如果加载后的页面的HTML代码中的检测位置上存在检测字符串,则确定所述待检测URL对应的网站服务器存在安全漏洞,如果加载后的页面的HTML代码中的检测位置上不存在检测字符串,或者存在将检测字符串转译或编码后的代码,则确定所述待检测URL对应的网站服务器不存在安全漏洞。本发明实施例提供一种检测漏洞的方法及装置,该方法检测装置针对待检测URL,构造用于访问该URL的HTTP请求,在待检测URL和HTTP请求中添加包括定位字符串和检测字符串的特殊字符串,再采用该HTTP请求访问该URL,最后模拟浏览器对网站服务器返回的页面进行加载,根据加载后的页面的HTML代码中是否包含该检测字符串,判断该网站服务器是否存在安全漏洞。由于上述方法检测装置模拟浏览器对网站服务器返回的页面进行加载,因此即使页面中存在动态dom元素,仍可根据加载后的页面的HTML代码中是否包含检测字符串,来判断网站服务器是否存在安全漏洞,而且检测过程中也无需人为参与,从而提高了检测漏洞的准确性和效率。
图1为现有技术中的第一种检测漏洞的过程;图2为本发明实施例提供的检测漏洞的过程;图3为本发明实施例提供的检测漏洞的详细过程;图4为本发明实施例提供的检测漏洞的装置结构示意图。
具体实施例方式图2为本发明实施例提供的检测漏洞的过程,具体包括以下步骤:S201:检测装置获得待检测URL,在该待检测URL的参数中添加预设的特殊字符
串O其中,该特殊字符串中包括定位字符串和检测字符串。在本发明实施例中,检测装置获得待检测URL后,要对该待检测URL进行改造,即,基于预设的包含定位字符串和检测字符串的特殊字符串,在待检测URL的参数中添加该特殊字符串。其中,该特殊字符串中的检测字符串的作用是:用于后续检测服务器返回的页面的HTML代码中是否包含该检测字符串。定位字符串的作用是:定位后续检测服务器返回的页面的HTML代码中可能会包含该检测字符串的检测位置。在待检测URL中添加预设的特殊字符串的方法具体可以为,检测装置识别待检测URL中的每个参数和锚点,针对识别出的每个参数,在该参数后添加预设的特殊字符串,针对识别出的每个锚点,在该锚点中添加预设的特殊字符串。例如,在识别出的参数后或锚点中添加的特殊字符串可以是i8upartst’ i8upartst〃i8upartst〈i8upartst>i8upartst。其中,该特殊字符串中的i8upartst是定位字符串,也即该特殊字符串共包含5个定位字符串,这5个定位字符串中每两个定位字符串之间的’、"、〈、>是检测字符串。需要说明的是,本发明实施例提供的上述在待检测URL中添加特殊字符串的方法中,仅对待检测URL的参数和锚点进行改造,而不更改待检测URL的其他部分,因此,后续对改造后的待检测URL进行访问时,仍然能够访问到改造前该待检测URL对应的网站服务器。S202:生成用于访问添加了该特殊字符串的待检测URL的HTTP请求,并在该HTTP请求中添加该特殊字符串。检测装置通过上述步骤S201对待检测URL进行改造后,则生成用于访问改造的待检测URL的HTTP请求,并对生成的该HTTP请求也进行改造,即,在该HTTP请求中也添加该特殊字符串。在该HTTP请求中添加该特殊字符串的方法具体可以为,构造包含该特殊字符串的Referer字段,并将该Referer字段添加到该HTTP请求的请求头(Herder)中。继续沿用上例,检测装置构造包含i8upartst’ i8upartst〃i8upartst〈i8upartst>i8upartst的Referer字段,并将该Referer字段添加到该HTTP请求的Herder中。S203:采用添加了该特殊字符串的HTTP请求对添加了该特殊字符串的待检测URL进行访问,并接收该待检测URL对应的网站服务器返回的页面。检测装置通过上述步骤S201和S202改造了待检测URL和HTTP请求后,则采用改造的该HTTP请求对改造的待检测URL进行访问,即,将改造的该HTTP请求发送给该待检测URL对应的网站服务器,并接收该网站服务器返回的页面。S204:检测装置模拟浏览器对该页面进行加载。为了可以准确的检测出包含动态dom元素(既存在输入点也存在输出点的dom元素)的页面中是否存在dom型xss漏洞,以准确的检出相应网站服务器是否可以有效的对dom型xss漏洞进行过滤,在本发明实施例中,检测装置接收到待检测URL对应的网站服务器返回的页面后,模拟浏览器对该页面进行加载。具体的,可以在检测装置中预置webkit,该webkit是依赖于pyqt的浏览器内核,通过该wenkit,检测装置则可以模拟浏览器对接收到的页面进行加载。S205:查找加载后的页面的HTML代码中包含的定位字符串,确定查找到的定位字符串所定位出的检测位置。在本发明实施例中,服务器并不会过滤掉在待检测URL和HTTP请求中添加的定位字符串,而由于该定位字符串可以用于对在待检测URL和HTTP请求中添加的检测字符串可能出现在页面的HTML代码中的位置进行定位,因此,检测装置查找加载后的页面的HTML代码中包含的定位字符串,确定查找到的定位字符串所定位出的检测位置。定位出的检测位置即为:如果服务器不能有效的对dom型xss漏洞进行过滤,则添加到待检测URL和HTTP请求中的检测字符串将会出现在加载后的页面的HTML代码中的位置。继续沿用上例,检测装置模拟浏览器对服务器返回的页面进行加载后,查找加载后的页面的HTML代码中包含的定位字符串i8upartst,则在加载后的页面的HTML代码中,查找到的每两个iSupartst之间的位置即为检测位置。S206:判断加载后的页面的HTML代码中的检测位置上是否存在检测字符串,若是,则执行步骤S207,否则执行步骤S208。假设网站服务器返回的页面中存在动态dom元素,则该页面中也就存在需要通过浏览器在本地进行赋值的变量,而通过上述步骤S204,检测装置模拟浏览器对该页面进行加载后,则可以对该页面中的变量进行赋值,因此,根据加载后的页面的HTML代码中的检测位置上是否存在该检测字符串,就可以判断该待检测URL对应的网站服务器可以有效的对dom型xss漏洞进行过滤。S207:确定该待检测URL对应的网站服务器存在安全漏洞。如果加载后的页面的HTML代码中的检测位置上仍存在检测字符串,则说明检测装置通过上述步骤S203将改造的HTTP请求发送给该待检测URL对应的网站服务器后,该网站服务器并未对dom型xss漏洞进行过滤,因此,确定该待检测URL对应的网站服务器存在安全漏洞。继续沿用上例,如果加载后的页面的HTML代码中的检测位置(查找到的每两个iSupartst之间的位置)上存在检测字符串’或〃或〈或〉,则说明该网站服务器并未对dom型xss漏洞进行过滤,因此确定该待检测URL对应的网站服务器存在安全漏洞。
·
S208:确定该待检测URL对应的网站服务器不存在安全漏洞。如果加载后的页面的HTML代码中的检测位置上不存在检测字符串,或者存在将检测字符串转译或编码后的代码,则确定该待检测URL对应的网站服务器不存在安全漏洞。继续沿用上例,如果加载后的页面的HTML代码中的检测位置(查找到的每两个i8upartst之间的位置)上不存在检测字符串’或〃或〈或 >,或者,存在将检测字符串’或〃或〈或〉转译或编码后的代码,则说明该网站服务器可以有效地对dom型xss漏洞进行过滤,因此确定该待检测URL对应的网站服务器不存在安全漏洞。下面以一个具体的应用实例说明存在动态dom元素的页面中的dom型xss漏洞。例如,假设访问一个URL后,该URL对应的网站服务器返回的页面的HTML代码如下:
权利要求
1.一种检测漏洞的方法,其特征在于,包括: 检测装置获得待检测统一资源定位符URL,在所述待检测URL的参数中添加预设的特殊字符串,所述特殊字符串中包括定位字符串和检测字符串;并 生成用于访问添加了所述特殊字符串的待检测URL的超文本传输协议HTTP请求,并在所述HTTP请求中添加所述特殊字符串;以及 采用添加了所述特殊字符串的HTTP请求对添加了所述特殊字符串的待检测URL进行访问,并接收所述待检测URL对应的网站服务器返回的页面; 所述检测装置模拟浏览器对所述页面进行加载,查找加载后的页面的超文本标记语言HTML代码中包含的定位字符串,确定查找到的定位字符串所定位出的检测位置; 如果加载后的页面的HTML代码中的检测位置上存在检测字符串,则确定所述待检测URL对应的网站服务器存在安全漏洞,如果加载后的页面的HTML代码中的检测位置上不存在检测字符串,或者存在将检测字符串转译或编码后的代码,则确定所述待检测URL对应的网站服务器不存在安全漏洞。
2.按权利要求1所述的方法,其特征在于,所述检测装置在模拟浏览器对所述页面进行加载之前,所述方法还包括: 获取所述待检测URL对应的页面,确定所述待检测URL对应的页面的HTML代码中存在满足指定条件的dom元素,其中,满足指定条件的dom元素为:同时存在输入点和输出点的dom j Li ο
3.按权利要求1所述的方法,其特征在于,在所述待检测URL的参数中添加预设的特殊字符串,具体包括: 识别所述待检测URL中的每个参数和锚点;并 针对识别出的每个参数,在该参数后添加所述特殊字符串;以及 针对识别出的每个锚点,在该锚点中添加所述特殊字符串。
4.按权利要求1所述的方法,其特征在于,在所述HTTP请求中添加所述特殊字符串,具体包括: 构造包含所述特殊字符串的Referer字段,并将所述Referer字段添加到所述HTTP请求的请求头中。
5.按权利要求1所述的方法,其特征在于,生成用于访问添加了所述特殊字符串的待检测URL的HTTP请求之前,所述方法还包括: 在添加了所述特殊字符串的待检测URL中添加错误参数; 当加载后的页面的HTML代码中的检测位置上不存在检测字符串,或者存在将检测字符串转译或编码后的代码时,所述方法还包括: 如果加载后的页面的HTML代码中包含了所述错误参数,则确定所述待检测URL对应的网站服务器存在安全漏洞,如果加载后的页面的HTML代码中包含了将所述错误参数转译或编码后的代码,或者未包含所述错误参数,则确定所述待检测URL对应的网站服务器不存在安全漏洞。
6.一种检测漏洞的装置,其特征在于,包括: 第一构造模块,用于获得待检测统一资源定位符URL,在所述待检测URL的参数中添加预设的特殊字符串,所述特殊字符串中包括定位字符串和检测字符串;第二构造模块,用于生成用于访问添加了所述特殊字符串的待检测URL的超文本传输协议HTTP请求,并在所述HTTP请求中添加所述特殊字符串; 访问模块,用于采用添加了所述特殊字符串的HTTP请求对添加了所述特殊字符串的待检测URL进行访问,并接收所述待检测URL对应的网站服务器返回的页面; 定位模块,用于模拟浏览器对所述页面进行加载,查找加载后的页面的超文本标记语言HTML代码中包含的定位字符串,确定查找到的定位字符串所定位出的检测位置; 检测模块,如果加载后的页面的HTML代码中的检测位置上存在检测字符串,则确定所述待检测URL对应的网站服务器存在安全漏洞,如果加载后的页面的HTML代码中的检测位置上不存在检测字符串,或者存在将检测字符串转译或编码后的代码,则确定所述待检测URL对应的网站服务器不存在安全漏洞。
7.按权利要求6所述的装置,其特征在于,所述装置还包括: 分析模块,用于在所述定位模块模拟浏览器对所述页面进行加载之前,获取所述待检测URL对应的页面,确定所述待检测URL对应的页面的HTML代码中存在满足指定条件的dom元素,其中,满足指定条件的dom元素为:同时存在输入点和输出点的dom元素。
8.按权利要求6所述的装置,其特征在于,所述第一构造模块具体用于,识别所述待检测URL中的每个参数和锚点,针对识别出的每个参数,在该参数后添加所述特殊字符串,针对识别出的每个锚点,在该锚点中添加所述特殊字符串。
9.按权利要求6所述的装置,其特征在于,所述第二构造模块具体用于,构造包含所述特殊字符串的Referer字段,并将所述Referer字段添加到所述HTTP请求的请求头中。
10.按权利要求6所述的装置,其特征在于,所述第一构造模块还用于,在添加了所述特殊字符串的待检测URL中添加错 误参数; 所述检测模块还用于,当加载后的页面的HTML代码中的检测位置上不存在检测字符串,或者存在将检测字符串转译或编码后的代码时,如果加载后的页面的HTML代码中包含了所述错误参数,则确定所述待检测URL对应的网站服务器存在安全漏洞,如果加载后的页面的HTML代码中包含了将所述错误参数转译或编码后的代码,或者未包含所述错误参数,则确定所述待检测URL对应的网站服务器不存在安全漏洞。
全文摘要
本发明公开了一种检测漏洞的方法及装置,用以解决现有技术中检测漏洞的准确性较低、效率较低的问题。该方法在待检测URL和HTTP请求中添加包括定位字符串和检测字符串的特殊字符串,再采用该HTTP请求访问该URL,最后模拟浏览器对网站服务器返回的页面进行加载,根据加载后的页面的HTML代码中是否包含该检测字符串,判断该网站服务器是否存在安全漏洞。由于上述方法检测装置模拟浏览器对网站服务器返回的页面进行加载,因此即使页面中存在动态dom元素,仍可根据加载后的页面的HTML代码中是否包含检测字符串,来判断网站服务器是否存在安全漏洞,而且检测过程中也无需人为参与,从而提高了检测漏洞的准确性和效率。
文档编号H04L29/06GK103095681SQ201210510490
公开日2013年5月8日 申请日期2012年12月3日 优先权日2012年12月3日
发明者罗诗尧 申请人:微梦创科网络科技(中国)有限公司