CN108512818B - 检测漏洞的方法及装置 - Google Patents
检测漏洞的方法及装置 Download PDFInfo
- Publication number
- CN108512818B CN108512818B CN201710114753.9A CN201710114753A CN108512818B CN 108512818 B CN108512818 B CN 108512818B CN 201710114753 A CN201710114753 A CN 201710114753A CN 108512818 B CN108512818 B CN 108512818B
- Authority
- CN
- China
- Prior art keywords
- character data
- data
- character
- response data
- response
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1433—Vulnerability analysis
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种检测漏洞的方法及装置,属于网络技术领域。该方法包括:向服务器发送第一字符数据,第一字符数据包括代码执行时的可选字符;当接收到服务器返回的第一响应数据时,如果第一响应数据中不包括第一字符数据,确定不存在漏洞;如果第一响应数据中包括第一字符数据,确定第一字符数据在第一响应数据中的位置;基于位置继续进行漏洞检测;其中,在不同位置上继续进行漏洞检测时所发送的字符数据不同。本发明通过当接收到的第一响应数据中不包括第一字符数据时,确定服务器不存在漏洞;当接收到第一响应数据中包括第一字符数据时,基于第一字符数据在第一响应数据中的位置针对性地继续检测,避免发生漏报,使检测漏洞的方式更加可靠准确。
Description
技术领域
本发明涉及网络技术领域,特别涉及一种检测漏洞的方法及装置。
背景技术
随着网络技术的发展,网络在不断地丰富用户的生活。然而,网络中也存在着漏洞,例如,广为人知的XSS(Cross Site Scripting,跨站脚本攻击)漏洞。XSS漏洞是指允许恶意用户将恶意程序注入到服务器所提供的网站中的漏洞,可能导致访问该服务器的用户的私人数据被窃取、非法转账或强制用户发送电子邮件等网络安全问题,因此,漏洞检测技术备受业界关注。
在检测XSS漏洞时,通常会准备大量用于测试的字符数据,每个字符数据均不同,如,“ABCDE…”,“<script>”,扫描器可以依次向服务器发送这些字符数据,在发送一个字符数据后,扫描器可以接收到服务器针对本次发送的字符数据返回的响应数据,如果某一响应数据中包括了本次发送的字符数据,说明服务器很可能允许注入恶意程序,则确定服务器存在XSS漏洞,否则确定不存在XSS漏洞。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
上述漏洞检测过程仅依据响应数据中是否包括所发送的字符数据,确定逻辑过于简单,由于产生漏洞的情况有多种,盲目地发送大量字符数据很难命中被检测的服务器的漏洞,进而导致漏报该服务器的漏洞,准确性和可靠性差。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种检测漏洞的方法及装置。所述技术方案如下:
一方面,提供了一种检测漏洞的方法,所述方法包括:
向服务器发送第一字符数据,所述第一字符数据包括代码执行时的可选字符;
当接收到所述服务器返回的第一响应数据时,如果所述第一响应数据中不包括所述第一字符数据,确定不存在漏洞;
如果所述第一响应数据中包括所述第一字符数据,确定所述第一字符数据在所述第一响应数据中的位置;
基于所述位置继续进行漏洞检测;
其中,在不同位置上继续进行漏洞检测时所发送的字符数据不同。
另一方面,提供了一种检测漏洞的装置,所述装置包括:
发送模块,用于向服务器发送第一字符数据,所述第一字符数据包括代码执行时的可选字符;
确定模块,用于当接收到所述服务器返回的第一响应数据时,如果所述第一响应数据中不包括所述第一字符数据,确定不存在漏洞;
确定模块,用于如果所述第一响应数据中包括所述第一字符数据,确定所述第一字符数据在所述第一响应数据中的位置;
检测模块,用于基于所述位置继续进行漏洞检测;
其中,在不同位置上继续进行漏洞检测时所发送的字符数据不同。
本发明实施例通过向服务器发送第一字符数据,该第一字符数据包括代码执行时的可选字符,当接收到的第一响应数据中不包括第一字符数据时,可以明确确定服务器不允许注入字符数据,也就不会允许注入恶意程序,因此明确地确定服务器不存在漏洞;当接收到第一响应数据中包括第一字符数据时,由于注入的位置与恶意程序的形式相关,因此基于第一字符数据在第一响应数据中的位置继续进行漏洞检测,能够结合注入第一字符数据的具体位置发送不同的字符数据,从而针对性地检测该服务器是否存在漏洞,避免发生漏报,使得检测漏洞的方式更加可靠准确。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种检测漏洞的实施环境示意图;
图2是本发明实施例提供的一种检测漏洞的方法流程图;
图3是本发明实施例提供的一种检测漏洞的装置框图;
图4是本发明实施例提供的一种检测漏洞的装置400的框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
图1是本发明实施例提供的一种检测漏洞的实施环境示意图,参见图1,该实施环境中包括扫描器101和服务器102。其中,该扫描器101用于检测服务器102是否存在XSS漏洞,该扫描器101可以包括输入输出模块和逻辑模块。输入输出模块用于将逻辑模块发来的字符数据发送至服务器102,或者将接收到的服务器的响应数据发送至逻辑模块;该逻辑模块用于根据已配置的判断逻辑确定所发送的字符数据,并确定响应数据中是否包括本次字符数据。服务器102用于为用户提供服务,如,不限于搜索服务、社交服务或游戏服务等,当然,该服务器102也可以提供用户留言服务、评论服务或日志发布服务等。由于该服务器102所提供的服务可以供用户自行输入字符数据,因此可能存在XSS漏洞。
图2是本发明实施例提供的一种检测漏洞的方法流程图,参见图2,该实施例应用于扫描器,具体包括:
201、向服务器发送第一字符数据,第一字符数据包括代码执行时的可选字符。
该服务器是指待检测是否存在XSS漏洞(以下简称漏洞)的服务器。代码泛指采用html语言和javascript等语言编写的源文件,代码执行时的可选字符是指不对代码是否能够执行造成影响的字符,可以是数字、字母或下划线,且这些字符需要人为地在代码中定义才有意义。本发明实施例对第一字符数据所包括的具体字符以及字符数量不做具体限定。例如,该第一字符数据为该服务器的网站中不常出现的字符数据,可具体为4004e214326ee9fbc57856821bbf592_0。
需要说明的是,本发明实施例对第一字符数据的发送形式不做限定。例如,该第一字符数据可以携带在发布(POST)请求中。
202、当接收到服务器返回的第一响应数据时,确定第一响应数据中是否包括第一字符数据,如果否,确定不存在漏洞,如果是,执行步骤203。
本发明实施例中,当服务器接收到扫描器发送的POST请求时,可以基于POST请求中的第一字符数据,生成html页面(包括头部和主体),也即是第一响应数据,并返回给扫描器。以该服务器可以提供用户留言服务为例,服务器可能将第一字符数据作为用户留言,生成带有第一字符数据的第一响应数据,并返回给扫描器。
在确定第一响应数据中是否包括第一字数据时,可以在第一响应数据中查找是否存在该第一字符数据,如果查找到第一字符数据,确定第一响应数据包括第一字符数据,此时服务器可能存在漏洞,并执行步骤203继续检测,如果未查找到第一字符数据,确定第一响应数据不包括第一字符数据。
考虑到第一响应数据中不包括第一字符数据的原因如下:
原因1、服务器已过滤该第一字符数据。
原因2、服务器不会将接收到的任一字符数据注入到对应的响应数据中。
由于该第一字符数据需要人为地在代码中定义才有意义,不是构成可执行代码的必要条件,因此服务器理应不会将该第一字符数据作为恶意程序过滤掉,也因此说明该第一响应数据中不包括第一字符数据的原因为2,进而说明即使服务器接收到带有恶意程序的字符数据,也不会注入到对应的响应数据中,因而可以确定该服务器不存在漏洞。
203、如果第一响应数据中包括第一字符数据,确定第一字符数据在第一响应数据中的位置。
该步骤中,在不同位置上继续进行漏洞检测时扫描器所发送的字符数据不同。本发明实施例对确定第一字符数据在第一响应数据中的位置的具体过程不做限定,例如,由于html标签内的位置范围可以包括代码可执行位置的位置范围,而代码可执行位置的位置范围可以包括第一响应数据的响应体的起始位置的位置范围,因此,为了更高效地检测漏洞,可以采用以下确定步骤一至三,从较小的位置范围开始进行漏洞检测:
一、确定第一字符数据是否在第一响应数据的响应体中的起始位置,如果是,执行步骤204,如果否,执行步骤二。
该步骤一中,可以根据已配置的第一关键字<body>,确定该第一字符数据前六个字符是否为该第一关键字,如果是,确定第一字符数据在第一响应数据的响应体中的起始位置。其中,<body>是html页面的主体的标识,也即是第一响应数据的响应体的标识。
二、确定第一字符数据是否在第一响应数据中的代码可执行位置,如果是,执行步骤206,如果否,执行步骤三。
该步骤二中,可以根据已配置的一对第二关键字<script>和</script>,确定该第一字符数据是否在这对第二关键字之间;或,
根据已配置的第四关键字javascript:,确定该第一字符数据的前十一个字符是否为javascript:;根据已配置的至少一个第三关键字,确定该第一字符数据是否处于html中的任一事件内,该第三关键字包括html中以on开头的事件(以下简称on事件)的名称、等号和一对引号,其形式为:on事件的名称=””,on事件的名称如,onerror、onload或onabort等;或,
根据已配置的第四关键字javascript:,确定该第一字符数据的前十一个字符是否为javascript:;或,
根据已配置的第五关键字expression(),确定该第一字符数据是否处于可引入执行javascript代码的表达式内,该可引入执行javascript代码的表达式即是expression()。
以上步骤二中的四个确定过程中的关键字均支持代码直接执行,因此,如果上述四个确定过程中的任一个确定结果为是,则确定该第一字符数据在第一响应数据中的代码可执行位置,执行步骤206,如果上述四个确定过程中的确定结果均为否,继续执行步骤三。
三、确定第一字符数据是否在第一响应数据中任一超文本标记语言html标签内,如果是,执行步骤208,如果否,执行步骤212。
该步骤三中,可以根据已配置的一对第六关键字<和>,确定该第一字符数据是否在这对第六关键字之间,如果是,则确定第一字符数据在第一响应数据的html标签内,如果否,可以执行步骤212。
204、如果第一字符数据在第一响应数据的响应体中的起始位置,且第一响应数据中未设置字符编码,向服务器发送第二字符数据,第二字符数据是指以7位转换格式utf-7进行编码的字符数据。
该步骤进行的原因如下:在实际场景中,服务器用于过滤恶意程序的关键字的字符编码一般为utf-8(8-bit Unicode Transformation Format,8位转换格式)编码,由于同一字符采用不同的字符编码后的字符形式不同,如,如果发送端的恶意程序采用utf-7(7-bit Unicode Transformation Format,7位转换格式)编码,服务器很难通过已配置的关键字成功进行过滤,进而导致html页面中可能注入utf-7编码的恶意程序。当该html页面的头部未设置字符编码时,用户浏览器访问注入恶意程序后的html页面时,会从html页面的主体的起始位置处采用的字符编码进行解码,从而执行恶意程序。
为了避免上述情况,准确地进行漏洞检测,如果第一字符数据在第一响应数据的响应体中的起始位置,可以先确定第一响应数据中是否设置字符编码,如果未设置字符编码,则向服务器发送第二字符数据,该第二字符数据如+/v8ABCDEG,其中,+/v8用于作为utf-7编码的声明,从而检测服务器是否允许注入utf-7编码的字符数据。
该步骤中,如果第一响应数据中已设置字符编码,可以再次执行步骤203进行位置确定,如果第一字符数据在第一响应数据中的代码可执行位置,可以执行步骤206,否则,可以确定第一字符数据是否在第一响应数据中任一超文本标记语言html标签内,如果是,执行步骤208,如果否,执行步骤212,以继续进行漏洞检测。
205、当接收到服务器返回的第二响应数据时,确定第二响应数据中是否包括第二字符数据,如果是,确定存在漏洞,如果否,执行步骤203。
该步骤中,扫描器可以确定第二响应数据中是否包括已发送的第二字符数据,如果是,说明该服务器很可能允许采用utf-7编码的恶意程序注入,则确定服务器存在漏洞,否则,执行步骤203进行位置确定,如果第一字符数据在第一响应数据中的代码可执行位置,可以执行步骤206,否则,可以确定第一字符数据是否在第一响应数据中任一超文本标记语言html标签内,如果是,执行步骤208,如果否,执行步骤212,以继续进行漏洞检测。
206、如果第一字符数据在第一响应数据中的代码可执行位置,或第一字符数据在第一响应数据的响应体中的起始位置、且第一响应数据中已设置字符编码、且第一字符数据在第一响应数据中的代码可执行位置,或第二响应数据中不包括第二字符数据且第一字符数据在第一响应数据中的代码可执行位置,向服务器发送第三字符数据,第三字符数据包括代码执行时的必要字符。
该步骤中,如果在该步骤中的三个执行条件中的任一执行条件下,扫描器可以向服务器发送第三字符数据。其中,代码执行时的必要字符是指可执行的一段代码中理应存在的字符,本发明实施例对代码执行时的必要字符不做具体限定。例如,用于包裹html值的引号(包括单引号和双引号)、javascript函数中必要的括号(包括大括号和小括号)、javascript语句中的分号或html结束标签中的反斜杠或常用的alert()函数的函数名称。因此,该第三字符数据可以为'")}top['aler'+'t'](tst_xss_test);//。其中,top['aler'+'t']是指可以采用任意顺序的组合方式拼成alert字符。由于html页面中的原来的代码也很可能运用上述字符,因此将(tst_xss_test)作为索引,从而方便查找第三响应数据中是否存在该第三字符数据。
207、当接收到服务器返回的第三响应数据时,确定第三响应数据中是否包括第三字符数据,如果是,确定存在漏洞,如果否,确定不存在漏洞。
该步骤中,如果第三响应数据中包括第三字符数据,说明服务器允许注入上述代码执行时的必要字符,又由于进而使得恶意用户可以在html页面中注入以代码执行时的必要字符所编写的恶意程序,因此可以准确地确定服务器存在漏洞;如果第三响应数据中不包括第三字符数据,说明服务器不允许注入代码执行时的必要字符,进而也就不允许注入恶意程序,因此确定不存在漏洞。
208、如果第一字符数据在第一响应数据中的任一超文本标记语言html标签内且在一对引号内,向服务器发送第四字符数据,第四字符数据包括引号。
该步骤中,考虑到引号在代码中的运用一般在html标签内,运用的形式一般为:on事件=“函数”,或属性=“javascript:”,因此,为了检测服务器是否允许注入上述形式的代码,可以直接检测服务器是否允许注入引号。在检测时,如果第一字符数据在第一响应数据中的任一超文本标记语言html标签内,扫描器可以进一步确定该第一字符数据是否在一对引号内,如果是,则向服务器发送第四字符数据,如果否,可以执行步骤210。其中,该第四字符数据包括引号,如,一个单引号或双引号,该第四字符数据可以具体为“tst_xss_test。
需要说明的是,由于服务器可能对字符数据进行反转义,反转义方式不限于html反转义或url(Uniform Resource Locator,统一资源定位符)反转义,则为了避免服务器接收到转义后的引号时,进行反转义,并注入反转义后的字引号,该第四字符数据所包括的引号也可以是转义后的引号,以检测服务器是否允许注入引号。本发明实施例对转义方式和次数不做限定。如,“tst_xss_test的经一次url转义后为%22tst_xss_test,经两次url转义后为%2522tst_xss_test;“tst_xss_test经一次html转义后为";tst_xss_tes,经一次html转义和一次url转义后为%26quot%3Btst_xss_test。
209、当接收到服务器返回的第四响应数据时,确定第四响应数据中是否包括第四字符数据,如果是,确定存在漏洞,如果否,执行步骤210。
该步骤中,如果第四响应数据中包括第四字符数据,说明服务器允许在html标签内的一对引号内注入引号。其中,无论发送时的第四字符数据是否为转义后的引号,在确定第四响应数据中是否包括第四字符数据时,均是查找第四响应数据中是否包括未转义的引号。
若某一字符数据为“on事件=“函数”形式的代码,则注入html标签内的形式为“”on事件=“函数””,成功地闭合了html标签内的第一个引号,使得on事件能够被执行,说明该服务器允许注入包括on事件的恶意程序,从而准确地确定服务器存在漏洞。
210、如果第一字符数据在第一响应数据中的任一html标签内且不在一对引号内,或第四响应数据中不包括第四字符数据,确定第一字符数据是否为该html标签中的任一属性值,如果是,向服务器发送第五字符数据,第五字符数据包括代码执行时的协议字符,如果否,执行步骤212。
该步骤中,由于html标签形式可以为<标签类型属性1=“属性值1”属性2=“属性值2”>,如果该第一字符数据的前两个字符为等号和引号,则确定第一字符数据为该html标签的任一属性值。其中,该标签类型不限于img、object、embed、a、video、form、iframe、button、math或link标签,该属性不限于src、poster、href、data、action或formaction属性。
需要说明的是,代码执行的协议字符是指html和javascript协议规定使用的字符,一般为javascript:、onafterprint、onbeforeprint或onerror等on事件的事件名称。以下将针对该步骤中的两个执行条件说明第五字符数据的可能情况:
如果第一字符数据在第一响应数据中的任一html标签内且不在一对引号内,那么可注入恶意程序的形式为:on事件=“函数”,或“javascript:”,因此,该第五字符数据所包括的代码执行时的协议字符为on事件的名称或者“javascript:”,该第五字符数据可以具体为“javascript:”(tst_xss_test)。
如果第四响应数据中不包括第四字符数据,说明服务器不允许注入引号,但由于注入第一字符数据的位置在引号内,因此可注入恶意程序的形式为javascript:,则该第五字符数据可以具体为javascript:(tst_xss_test)。
211、当接收到服务器返回的第五响应数据时,确定第五响应数据中是否包括第五字符数据,如果是,确定存在漏洞,如果否,确定不存在漏洞。
该步骤中,如果第五响应数据中包括第五字符数据,说明服务器允许注入代码执行时的协议字符的恶意程序,因此可以准确地确定服务器存在漏洞,否则确定不存在漏洞。
212、如果第一字符数据不在第一响应数据中的任一html标签内,或第一字符数据不是html标签中的任一属性值,向服务器发送第六字符数据,第六字符数据包括用于构造html标签的字符。
该步骤中,对于第一响应数据不在html标签内的情况,恶意程序注入的必要条件为该恶意程序包括用于构造html标签的字符,即尖括号<>,因此向服务器发送的第六字符数据中包括<>,如,<tst_xss_test>。需要说明的是,与转义引号同理,该尖括号也可以是经转义后的尖括号。
213、当接收到服务器返回的第六响应数据时,确定第六响应数据中是否包括第六字符数据,如果是,确定存在漏洞,如果否,确定不存在漏洞。
该步骤中,如果第六响应数据中包括第六字符数据,说明服务器允许注入包括了用于构造html标签的字符恶意程序,因此可以准确地确定服务器存在漏洞,否则确定不存在漏洞。
本发明实施例通过向服务器发送第一字符数据,该第一字符数据包括代码执行时的可选字符,当接收到的第一响应数据中不包括第一字符数据时,可以明确确定服务器不允许注入字符数据,也就不会允许注入恶意程序,因此明确地确定服务器不存在漏洞;当接收到第一响应数据中包括第一字符数据时,由于注入的位置与恶意程序的形式相关,因此基于第一字符数据在第一响应数据中的位置继续进行漏洞检测,能够结合注入第一字符数据的具体位置发送不同的字符数据,从而针对性地检测该服务器是否存在漏洞,避免发生漏报,使得检测漏洞的方式更加可靠准确。
另外,通过确定第一字符数据在第一响应数据中的位置,可以确定该服务器允许注入字符数据的位置,根据每个位置的所处的代码环境推导出该位置可能注入的恶意程序,从而针对性地发送用于检测是否存在漏洞的字符数据,基于每次接收到的响应数据确定服务器是否允许注入危险性很高的字符,从而确定是否存在漏洞,或者进一步基于该位置处的确定结果继续进行漏洞检测,全面地考虑到了所有位置处注入恶意程序的可能性,使得检测过程中的判断逻辑严谨,进而使得检测结果的准确性和可靠性更高。
另外,本发明实施例的漏洞检测方法最多涉及十数量级的字符数据发送过程,就能得出准确地检测结果,而现有技术采用通常需要发送百数量级的字符数据,因此本发明实施例的检测过程不仅更为简洁准确,而且对于被检测的服务器来说,处理字符数据的负担更少,不会过多影响服务器的性能。而且,如果服务器已经过滤了几种字符,而现有现技术用于检测漏洞的字符数据又仅涵盖这几种字符,会导致漏报,服务器的安全隐患很高,而本发明实施例的检测方法涵盖各种字符数据,从而可以全面地进行漏洞检测,使得漏洞检测过程更为可靠。
需要说明的是,上述图2所示实施例全面地考虑了第一字符数据在第一响应数据中的位置的可能情况,并精准地得出检测结果。事实上,本发明实施例的采用上述至少一个步骤也可以实现漏洞检测过程,而且检测结果相比现有技术更加准确可靠,例如以下三种检测方式:
第一种检测方式、结合上述步骤201-204,当扫描器接收到服务器返回的第二响应数据时,确定第二响应数据中是否包括第二字符数据,如果是,确定存在漏洞,如果否,确定不存在漏洞。该检测方式可以准确地检测出服务器是否允许注入包括utf-7编码的恶意程序的漏洞。
第二种检测方式、结合上述步骤201-203,如果第一字符数据在第一响应数据中的代码可执行位置,扫描器向服务器发送第三字符数据,第三字符数据包括代码执行时的必要字符;当接收到服务器返回的第三响应数据时,如果第三响应数据中包括第三字符数据,确定存在漏洞,如果第三响应数据中不包括第三字符数据,确定不存在漏洞。该检测方式可以准确地检测出服务器是否允许注入包括了代码执行时的必要字符的恶意程序的漏洞。
第三种检测方式、结合上述步骤201-203,如果第一字符数据在第一响应数据中的任一超文本标记语言html标签内且在一对引号内,扫描器向服务器发送第四字符数据,第四字符数据包括引号;当接收到服务器返回的第四响应数据时,如果第四响应数据中包括第四字符数据,确定存在漏洞,如果第四响应数据中不包括第四字符数据,确定不存在漏洞。该检测方式可以准确地检测出服务器允许注入on事件的恶意程序的漏洞。
图3是本发明实施例提供的一种检测漏洞的装置框图。参见图3,该装置具体包括:
发送模块301,用于向服务器发送第一字符数据,第一字符数据包括代码执行时的可选字符;
确定模块302,用于当接收到服务器返回的第一响应数据时,如果第一响应数据中不包括第一字符数据,确定不存在漏洞;
确定模块302,用于如果第一响应数据中包括第一字符数据,确定第一字符数据在第一响应数据中的位置;
检测模块303,用于基于位置继续进行漏洞检测;
其中,在不同位置上继续进行漏洞检测时所发送的字符数据不同。
本发明实施例通过向服务器发送第一字符数据,该第一字符数据包括代码执行时的可选字符,当接收到的第一响应数据中不包括第一字符数据时,可以明确确定服务器不允许注入字符数据,也就不会允许注入恶意程序,因此明确地确定服务器不存在漏洞;当接收到第一响应数据中包括第一字符数据时,由于注入的位置与恶意程序的形式相关,因此基于第一字符数据在第一响应数据中的位置继续进行漏洞检测,能够结合注入第一字符数据的具体位置发送不同的字符数据,从而针对性地检测该服务器是否存在漏洞,避免发生漏报,使得检测漏洞的方式更加可靠准确。
在一种可能实现方式中,该发送模块301,用于如果第一字符数据在第一响应数据的响应体中的起始位置,且第一响应数据中未设置字符编码,向服务器发送第二字符数据,第二字符数据是指以7位转换格式utf-7编码的字符数据;
确定模块302,用于确定当接收到服务器返回的第二响应数据时,如果第二响应数据中包括第二字符数据,确定存在漏洞。
在一种可能实现方式中,如果第一字符数据在第一响应数据中的代码可执行位置,或第一字符数据在第一响应数据的响应体中的起始位置、且第一响应数据中已设置字符编码、且第一字符数据在第一响应数据中的代码可执行位置,或第二响应数据中不包括第二字符数据且第一字符数据在第一响应数据中的代码可执行位置,
发送模块301,用于向服务器发送第三字符数据,第三字符数据包括代码执行时的必要字符;
确定模块302,用于当接收到服务器返回的第三响应数据时,如果第三响应数据中包括第三字符数据,确定存在漏洞;
确定模块302,用于如果第三响应数据中不包括第三字符数据,确定不存在漏洞。
在一种可能实现方式中,发送模块301,用于如果第一字符数据在第一响应数据中的任一超文本标记语言html标签内且在一对引号内,向服务器发送第四字符数据,第四字符数据包括引号;
确定模块302,用于当接收到服务器返回的第四响应数据时,如果第四响应数据中包括第四字符数据,确定存在漏洞。
在一种可能实现方式中,如果第一字符数据在第一响应数据中的任一html标签内且不在一对引号内,或第四响应数据中不包括第四字符数据,
发送模块301,用于如果第一字符数据为html标签中的任一属性值,向服务器发送第五字符数据,第五字符数据包括代码执行时的协议字符;
确定模块302,用于当接收到服务器返回的第五响应数据时,如果第五响应数据中包括第五字符数据,确定存在漏洞;
确定模块303,用于如果第五响应数据中不包括第五字符数据,确定不存在漏洞。
在一种可能实现方式中,如果第一字符数据不在第一响应数据中的任一html标签内,或第一字符数据不是html标签中的任一属性值,
发送模块301,用于向服务器发送第六字符数据,第六字符数据包括用于构造html标签的字符;
确定模块302,用于当接收到服务器返回的第六响应数据时,如果第六响应数据中包括第六字符数据,确定存在漏洞;
确定模块302,用于如果第六响应数据中不包括第六字符数据,确定不存在漏洞。
上述所有可选技术方案,可以采用任意结合形成本发明的可选实施例,在此不再一一赘述。
需要说明的是:上述实施例提供的检测漏洞的装置在检测漏洞时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的检测漏洞的装置与检测漏洞的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图4是本发明实施例提供的一种检测漏洞的装置400的框图。例如,装置400可以被提供为一扫描器。参照图4,装置400包括处理组件422,其进一步包括一个或多个处理器,以及由存储器432所代表的存储器资源,用于存储可由处理部件422的执行的指令,例如应用程序。存储器432中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件422被配置为执行指令,以执行上述图2实施例中检测漏洞的方法。
装置400还可以包括一个电源组件426被配置为执行装置400的电源管理,一个有线或无线网络接口450被配置为将装置400连接到网络,和一个输入输出(I/O)接口458。装置400可以操作基于存储在存储器432的操作系统,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器,上述指令可由扫描器中的处理器执行以完成上述实施例中的检测漏洞的方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (12)
1.一种检测漏洞的方法,其特征在于,所述方法包括:
向服务器发送第一字符数据,所述第一字符数据包括代码执行时的可选字符;
当接收到所述服务器返回的第一响应数据时,如果所述第一响应数据中不包括所述第一字符数据,确定不存在漏洞;
如果所述第一响应数据中包括所述第一字符数据,确定所述第一字符数据在所述第一响应数据中的位置;
基于所述位置继续进行漏洞检测;其中,在不同位置上继续进行漏洞检测时所发送的字符数据不同;
所述基于所述位置继续进行漏洞检测,包括:如果所述第一字符数据在所述第一响应数据的响应体中的起始位置,且所述第一响应数据中未设置字符编码,向所述服务器发送第二字符数据,所述第二字符数据是指以7位转换格式utf-7编码的字符数据;当接收到所述服务器返回的第二响应数据时,如果所述第二响应数据中包括所述第二字符数据,确定存在漏洞。
2.根据权利要求1所述的方法,其特征在于,如果所述第一字符数据未在所述第一响应数据的响应体的起始位置、且所述第一字符数据在所述第一响应数据中的代码可执行位置,或所述第一字符数据在所述第一响应数据的响应体中的起始位置、且所述第一响应数据中已设置字符编码、且所述第一字符数据在所述第一响应数据中的代码可执行位置,或所述第二响应数据中不包括所述第二字符数据且所述第一字符数据在所述第一响应数据中的代码可执行位置,执行下述步骤:
向所述服务器发送第三字符数据,所述第三字符数据包括代码执行时的必要字符;
当接收到所述服务器返回的第三响应数据时,如果所述第三响应数据中包括所述第三字符数据,确定存在漏洞;
如果所述第三响应数据中不包括所述第三字符数据,确定不存在漏洞。
3.根据权利要求1所述的方法,其特征在于,所述基于所述位置继续进行漏洞检测,包括:
如果所述第一字符数据在所述第一响应数据中的任一超文本标记语言html标签内且在一对引号内,向所述服务器发送第四字符数据,所述第四字符数据包括所述引号;
当接收到所述服务器返回的第四响应数据时,如果所述第四响应数据中包括所述第四字符数据,确定存在漏洞。
4.根据权利要求3所述的方法,其特征在于,如果所述第一字符数据在所述第一响应数据中的任一html标签内且不在一对引号内,或所述第四响应数据中不包括所述第四字符数据,执行下述步骤:
如果所述第一字符数据为所述html标签中的任一属性值,向所述服务器发送第五字符数据,所述第五字符数据包括代码执行时的协议字符;
当接收到所述服务器返回的第五响应数据时,如果所述第五响应数据中包括所述第五字符数据,确定存在漏洞;
如果所述第五响应数据中不包括所述第五字符数据,确定不存在漏洞。
5.根据权利要求4所述的方法,其特征在于,如果所述第一字符数据不在所述第一响应数据中的任一html标签内,或所述第一字符数据不是所述html标签中的任一属性值,执行下述步骤:
向所述服务器发送第六字符数据,所述第六字符数据包括用于构造html标签的字符;
当接收到所述服务器返回的第六响应数据时,如果所述第六响应数据中包括所述第六字符数据,确定存在漏洞;
如果所述第六响应数据中不包括所述第六字符数据,确定不存在漏洞。
6.一种检测漏洞的装置,其特征在于,所述装置包括:
发送模块,用于向服务器发送第一字符数据,所述第一字符数据包括代码执行时的可选字符;
确定模块,用于当接收到所述服务器返回的第一响应数据时,如果所述第一响应数据中不包括所述第一字符数据,确定不存在漏洞;
确定模块,用于如果所述第一响应数据中包括所述第一字符数据,确定所述第一字符数据在所述第一响应数据中的位置;
检测模块,用于基于所述位置继续进行漏洞检测;其中,在不同位置上继续进行漏洞检测时所发送的字符数据不同;
所述发送模块,用于如果所述第一字符数据在所述第一响应数据的响应体中的起始位置,且所述第一响应数据中未设置字符编码,向所述服务器发送第二字符数据,所述第二字符数据是指以7位转换格式utf-7编码的字符数据;
所述确定模块,用于确定当接收到所述服务器返回的第二响应数据时,如果所述第二响应数据中包括所述第二字符数据,确定存在漏洞。
7.根据权利要求6所述的装置,其特征在于,如果所述第一字符数据未在所述第一响应数据的响应体的起始位置、且所述第一字符数据在所述第一响应数据中的代码可执行位置,或所述第一字符数据在所述第一响应数据的响应体中的起始位置、且所述第一响应数据中已设置字符编码、且所述第一字符数据在所述第一响应数据中的代码可执行位置,或所述第二响应数据中不包括所述第二字符数据且所述第一字符数据在所述第一响应数据中的代码可执行位置,
所述发送模块,用于向所述服务器发送第三字符数据,所述第三字符数据包括代码执行时的必要字符;
所述确定模块,用于当接收到所述服务器返回的第三响应数据时,如果所述第三响应数据中包括所述第三字符数据,确定存在漏洞;
所述确定模块,用于如果所述第三响应数据中不包括所述第三字符数据,确定不存在漏洞。
8.根据权利要求6所述的装置,其特征在于,
所述发送模块,用于如果所述第一字符数据在所述第一响应数据中的任一超文本标记语言html标签内且在一对引号内,向所述服务器发送第四字符数据,所述第四字符数据包括所述引号;
所述确定模块,用于当接收到所述服务器返回的第四响应数据时,如果所述第四响应数据中包括所述第四字符数据,确定存在漏洞。
9.根据权利要求8所述的装置,其特征在于,如果所述第一字符数据在所述第一响应数据中的任一html标签内且不在一对引号内,或所述第四响应数据中不包括所述第四字符数据,
所述发送模块,用于如果所述第一字符数据为所述html标签中的任一属性值,向所述服务器发送第五字符数据,所述第五字符数据包括代码执行时的协议字符;
所述确定模块,用于当接收到所述服务器返回的第五响应数据时,如果所述第五响应数据中包括所述第五字符数据,确定存在漏洞;
所述确定模块,用于如果所述第五响应数据中不包括所述第五字符数据,确定不存在漏洞。
10.根据权利要求9所述的装置,其特征在于,如果所述第一字符数据不在所述第一响应数据中的任一html标签内,或所述第一字符数据不是所述html标签中的任一属性值,
所述发送模块,用于向所述服务器发送第六字符数据,所述第六字符数据包括用于构造html标签的字符;
所述确定模块,用于当接收到所述服务器返回的第六响应数据时,如果所述第六响应数据中包括所述第六字符数据,确定存在漏洞;
所述确定模块,用于如果所述第六响应数据中不包括所述第六字符数据,确定不存在漏洞。
11.一种检测漏洞装置,其特征在于,所述装置包括一个或多个处理器,以及存储有一个或一个以上指令的存储器,由所述一个或多个处理器执行所述一个或一个以上指令以实现如权利要求1至5任一项所述的检测漏洞的方法所执行的操作。
12.一种计算机可读存储介质,其特征在于,所述存储介质包括指令,所述指令由处理器执行以实现如权利要求1至5任一项所述的检测漏洞的方法所执行的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710114753.9A CN108512818B (zh) | 2017-02-28 | 2017-02-28 | 检测漏洞的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710114753.9A CN108512818B (zh) | 2017-02-28 | 2017-02-28 | 检测漏洞的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108512818A CN108512818A (zh) | 2018-09-07 |
CN108512818B true CN108512818B (zh) | 2020-09-04 |
Family
ID=63374277
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710114753.9A Active CN108512818B (zh) | 2017-02-28 | 2017-02-28 | 检测漏洞的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108512818B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113992623B (zh) * | 2021-11-19 | 2022-10-21 | 四川大学 | 一种基于内容与源码的网页邮件跨站脚本攻击检测方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101894237A (zh) * | 2010-08-03 | 2010-11-24 | 南开大学 | 应用遗传算法自动生成xss跨站点脚本漏洞检测参数的方法 |
CN104794396A (zh) * | 2014-01-16 | 2015-07-22 | 腾讯科技(深圳)有限公司 | 跨站式脚本漏洞检测方法及装置 |
CN104836779A (zh) * | 2014-02-12 | 2015-08-12 | 携程计算机技术(上海)有限公司 | XSS漏洞检测方法、系统和Web服务器 |
CN105282096A (zh) * | 2014-06-18 | 2016-01-27 | 腾讯科技(深圳)有限公司 | Xss 漏洞检测方法和装置 |
CN106022135A (zh) * | 2016-02-23 | 2016-10-12 | 北京工业大学 | 一种可动态判断xss漏洞的自动化检测系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080184208A1 (en) * | 2007-01-30 | 2008-07-31 | Sreedhar Vugranam C | Method and apparatus for detecting vulnerabilities and bugs in software applications |
-
2017
- 2017-02-28 CN CN201710114753.9A patent/CN108512818B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101894237A (zh) * | 2010-08-03 | 2010-11-24 | 南开大学 | 应用遗传算法自动生成xss跨站点脚本漏洞检测参数的方法 |
CN104794396A (zh) * | 2014-01-16 | 2015-07-22 | 腾讯科技(深圳)有限公司 | 跨站式脚本漏洞检测方法及装置 |
CN104836779A (zh) * | 2014-02-12 | 2015-08-12 | 携程计算机技术(上海)有限公司 | XSS漏洞检测方法、系统和Web服务器 |
CN105282096A (zh) * | 2014-06-18 | 2016-01-27 | 腾讯科技(深圳)有限公司 | Xss 漏洞检测方法和装置 |
CN106022135A (zh) * | 2016-02-23 | 2016-10-12 | 北京工业大学 | 一种可动态判断xss漏洞的自动化检测系统 |
Also Published As
Publication number | Publication date |
---|---|
CN108512818A (zh) | 2018-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8474048B2 (en) | Website content regulation | |
US10148689B2 (en) | Method and apparatus for monitoring malicious link injection into website source code | |
EP1420562A2 (en) | Automated detection of cross site scripting vulnerabilities | |
CN107209831B (zh) | 用于识别网络攻击的系统和方法 | |
CN103279710B (zh) | Internet信息系统恶意代码的检测方法和系统 | |
Barua et al. | Server side detection of content sniffing attacks | |
CN101964025A (zh) | Xss检测方法和设备 | |
US9838418B1 (en) | Detecting malware in mixed content files | |
EP3637292B1 (en) | Determination device, determination method, and determination program | |
CN101895516A (zh) | 一种跨站脚本攻击源的定位方法及装置 | |
CN106713318B (zh) | 一种web站点安全防护方法及系统 | |
US20140150099A1 (en) | Method and device for detecting malicious code on web pages | |
CN113055399A (zh) | 注入攻击的攻击成功检测方法、系统及相关装置 | |
US9923916B1 (en) | Adaptive web application vulnerability scanner | |
CN111770079B (zh) | 一种web框架注入漏洞检测方法及装置 | |
CN103390129B (zh) | 检测统一资源定位符安全性的方法和装置 | |
CN108512818B (zh) | 检测漏洞的方法及装置 | |
CN114626061A (zh) | 网页木马检测的方法、装置、电子设备及介质 | |
CN114760078B (zh) | 一种防止恶意篡改页面请求参数的方法和系统 | |
Hadpawat et al. | Analysis of prevention of XSS attacks at client side | |
CN110209959B (zh) | 信息处理方法和装置 | |
CN114157452B (zh) | 一种基于http连接平台的xxe漏洞的检测方法及系统 | |
CN108427763B (zh) | 一种网页显示装置 | |
KR20210076455A (ko) | Xss 공격 검증 자동화 방법 및 그 장치 | |
CN114168950B (zh) | 一种跨站脚本攻击漏洞的修复方法、装置、设备及产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |