具体实施方式
有关本发明的前述及其他技术内容、特点及功效,在以下配合参考图式的较佳实施例详细说明中将可清楚的呈现。通过具体实施方式的说明,当可对本发明为达成预定目的所采取的技术手段及功效得以更加深入且具体的了解,然而所附图式仅是提供参考与说明之用,并非用来对本发明加以限制。
本发明实施例所述的统一资源定位符(Uniform Resource Locator,URL)是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
本发明实施例提出一种网页重定向漏洞检测方法及装置,用于检测通过URL访问网络时可能产生的网页重定向漏洞,其可以通过模拟浏览器的方式实现对URL的检测。请参见图1,其为上述的方法及装置的运行环境示意图。一个或多个漏洞检测服务器100(图1中仅示出一个)可通过网络与一个或多个网站服务器200(图1中仅示出一个)相连。上述的网络例如可为互联网、局域网、企业内部网等。
进一步参阅图2,其为上述的漏洞检测服务器100的一个实施例的结构框图。如图2所示,漏洞检测服务器100包括:存储器102、存储控制器104、一个或多个(图中仅示出一个)处理器106、外设接口108以及网络控制器112。可以理解,图2所示的结构仅为示意,其并不对漏洞检测服务器100的结构造成限定。例如,漏洞检测服务器100还可包括比图2中所示更多或者更少的组件,或者具有与图2所示不同的配置。
存储器102可用于存储软件程序以及模块,如本发明实施例中的网页重定向漏洞检测方法及装置对应的程序指令/模块,处理器104通过运行存储在存储器102内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的方法。
存储器102可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器102可进一步包括相对于处理器106远程设置的存储器,这些远程存储器可以通过网络连接至漏洞检测服务器100。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。处理器106以及其他可能的组件对存储器102的访问可在存储控制器104的控制下进行。
外设接口108将各种输入/输入装置耦合至处理器106。处理器106运行存储器102内的各种软件、指令,以及进行数据处理。在一些实施例中,外设接口108、处理器106以及存储控制器104可以在单个芯片中实现。在其他一些实例中,他们可以分别由独立的芯片实现。
网络控制器112用于接收以及发送网络信号。上述网络信号可包括无线信号或者有线信号。在一个实例中,上述网络信号为有线网络信号。此时,网络控制器112可包括处理器、随机存储器、转换器、晶体振荡器等元件。
上述的软件程序以及模块包括:操作系统122、浏览器引擎124以及漏洞检测模块126。其中操作系统122例如可为LINUX,UNIX,WINDOWS,其可包括各种用于管理系统任务(例如内存管理、存储设备控制、电源管理等)的软件组件和/或驱动,并可与各种硬件或软件组件相互通讯,从而提供其他软件组件的运行环境。浏览器引擎124以及漏洞检测模块126运行在操作系统122的基础上。浏览器引擎124例如可为Webkit浏览器引擎。漏洞检测模块126可以通过浏览器引擎124具体实现本发明实施例的网页重定向漏洞检测方法。
进一步参阅图3,其为图1中的网站服务器200的一个实施例的结构框图。如图3所示,其与漏洞检测服务器100的结构相似,其不同之处在于,网站服务器200可不包括浏览器引擎124以及漏洞检测模块126,而包括网站服务器模块224。网站服务器模块224运行在操作系统122的基础上,并通过操作系统122的网络服务监听来自网络的网页访问请求,根据网页访问请求完成相应的数据处理,并返回结果网页或者其他格式的数据给客户端。上述的网站服务器模块224例如可包括动态网页脚本以及脚本解释器等。上述的脚本解释器例如可为Apache网站服务器程序,其用于将动态网页脚本处理成客户端可以接受的格式,例如超文本标记(HTML)语言格式或者可扩展标记语言(XML)格式等。
请参见图4,其为本发明实施例的一种网页重定向漏洞检测方法的流程图,其包括以下步骤:
S401,识别待检测的URL中的传递参数。
S402,当识别到所述URL中存在传递参数,以预设的地址信息分别且逐一替换识别到的每个传递参数,获得至少一个新的URL。
S403,根据新的URL,发出网络访问请求。
S404,接收服务器返回的返回包,并根据所述返回包的内容判断是否包括目标网址为所述预设的地址信息的网页重定向。
S405,若检测到目标网址为所述预设的地址信息的网页跳转则记录对应的传递参数存在网页重定向漏洞。
步骤S401中,所述传递参数是指用于从网络服务器上获取数据或者向网络服务器传送数据的参数,通常,传递参数即是指get参数和post参数。
检测URL中的传递参数时,可以通过URL中包含的特定符号如“=”号来检测传递参数。例如,对于“http://www.xxx.com/login.php?url=success.php”这个URL,可以检测出其中包含“url”一个传递参数(其中的“success.php”表示一个正常的参数或
地址);又如,对于“http://www.xxx.com/login.php?a=xxx&b=xxx”这个URL,可以检测出其中包含“a”和“b”两个传递参数(其中的“xxx”表示正常的参数或地址)。
步骤S402中,所述的预设的地址信息可以是任意已知的网站地址。假设预设的地址信息为“http://xxx.hack.com”,对于“http://www.xxx.com/login.php?url=success.php”这个URL,替换其中的传递参数后可以得到“http://www.xxx.com/login.php?url=http://xxx..hack.com”这个新的URL。对于“http://www.xxx.com/login.php?a=xxx&b=xxx”这个URL,替换其中的传递参数后可以得到“http://www.xxx.com/login.php?a=http://xxx.hack.com&b=xxx”和“http://www.xxx.com/login.php?a=xxx&b=http://xxx.hack.com”这两个新的URL。
步骤S403中,以替换获得的新的URL发出http访问请求。
步骤S404中,所述返回包是指网站服务器根据访问请求反馈回来的数据包,可以通过检测网络访问返回包中是否包含跳转返回码来判断访问过程中是否发生了重定向。所述的跳转即是指页面访问重定向,所述跳转返回码是指网站服务器返回的代表HTTP访问发生跳转的代码,例如“301码”表示永久性跳转、“302码”表示暂时性跳转。如果一个网络访问返回包中包含跳转返回码,则说明基于相应URL的网络访问发生了跳转。
在判断出发生了跳转的情况下,可以根据网络访问返回包中访问页面的内容来判别是否发生了与预设的地址信息对应的跳转,具体来说,预设的地址信息对应的页面内容需要是预知的(例如可以是一个测试页面或一个恶意网站的页面),通过比较返回包中是否存在与该预设的地址信息所对应的页面内容一致的页面内容,从而可以判断出该替换后的URL是否跳转到了与预设地址信息对应的页面,如果是,则说明待检测的URL存在网页重定向漏洞。例如预设地址信息对应的页面上包含一段已知的文字,如果检测出返回包中有该段文字的信息,则说明网络访问跳转到了预设地址对应的页面,即待检测的URL存在网页重定向漏洞。
或者,也可以从返回包的头信息中解析出网络访问过程中的目标网址,并检测是否存在与预设地址信息匹配的目标网址,如果存在,则说明网络访问过程中曾经被重定向到预设的页面进行访问,也即是该待检测的URL存在网页重定向漏洞。具体来说,可以先根据预设的地址信息构造一个特征字符串,例如window.location.href=“http://xxx.hack.com”。然后检测返回包中是否包含该特征字符串,如果包含则说明网络访问过程中被重定向到了预设的地址,存在重定向漏洞。
可见,只要待检测的URL存在网页重定向漏洞,不管是一次跳转或多次跳转的漏洞,只要检测出替换后的新URL发生了与预设的地址信息对应的跳转,就可以找出该漏洞所在。
步骤S405中,所述网页重定向漏洞检测结果可以包括存在网页重定向漏洞的URL(即存在漏洞的待检测URL)、存在网页重定向漏洞的传递参数以及网页重定向漏洞的跳转类型等。
下面以多次跳转为例来进行说明,请参见图5,其为本发明实施例的另一种网页重定向漏洞检测方法的流程图,其包括以下步骤:
S501,识别待检测的URL中的传递参数。
S502,当识别到所述URL中存在传递参数,以预设的地址信息分别且逐一替换识别到的每个传递参数,获得至少一个新的URL。
S503,根据新的URL,发出网络访问请求。
S504,接收网络访问返回包。
S505,检测跳转类型。所述跳转类型包括javascript跳转,meta标签跳转,SRC标签属性跳转,HTTP头部跳转中的一种。
S506,根据跳转类型对所述网络访问返回包中的内容进行检测,并过滤掉没有跳转到预设地址页面的新URL。
针对不同类型的跳转,过滤的过程需要采用不同的代码来编译。具体来说,假设与“http://www.xxx.com/login.php?a=http://xxx.hack.com&b=yyy”这个新URL对应的网络访问返回包中包含两个跳转返回码(其中http://xxx.hack.com表示预设地址信息,“yyy”表示正常的参数),如果该网络访问先跳转至“http://www.xxx.com/login_check.php”(表示正常的网络地址),然后才跳转至预设地址:“http://xxx.hack.com”,则从网络访问返回包中可以检测出预设地址的相关页面内容,即说明待检测的URL存在网页重定向漏洞。反之,如果从网络访问返回包中检测不到与预设地址的相关页面内容,则说明基于该新URL的网络访问没有跳转到预设地址:“http://xxx.hack.com”,则过滤掉该新URL。
S507,根据过滤结果记录对应的传递参数存在网页重定向漏洞。所述网页重定向漏洞检测结果可以包括:存在网页重定向漏洞的统一资源定位符、存在网页重定向漏洞的传递参数以及网页重定向漏洞的跳转类型。
假设“http://www.xxx.com/login.php?a=xxx&b=xxx”这个待检测的URL,通过替换传递参数后的新URL:“http://www.xxx.com/login.php?a=http://xxx.hack.com&b=xxx”,检测出存在网页重定向漏洞(预设地址信息为“http://xxx.hack.com”),则针对该待检测URL的该网页重定向漏洞,所述存在网页重定向漏洞的统一资源定位符为:“http://www.xxx.com/login.php?a=xxx&b=xxx”;所述存在网页重定向漏洞的传递参数为a。
通过本发明实施例的方法,可以准确地检测出URL中存在的网页重定向漏洞,可以有效提高网络访问的安全性,且本发明实施例的方法可以支持多次跳转的检测,以及支持javascript跳转、meta标签跳转、SRC标签属性跳转、HTTP头部跳转的检测,具有较大的适用范围。
本发明还提出一种网页重定向漏洞检测装置,用于URL网页重定向漏洞的检测,请参见图6,该网页重定向漏洞检测装置包括:传递参数识别模块61、参数替换模块62、访问请求发送模块63、返回包接收模块64、跳转判断模块65以及记录模块66。
传递参数识别模块31用于识别待检测的URL中的传递参数。所述传递参数是指用于从网络服务器上获取数据或者向网络服务器传送数据的参数,通常,传递参数即是指get参数和post参数。检测URL中的传递参数时,可以通过URL中包含的特定符号如“=”号来检测传递参数。
参数替换模块62用于当传递参数识别模块61识别到URL中存在传递参数时,以预设的地址信息分别且逐一替换识别到的每个传递参数,获得至少一个新的统一资源定位符。所述的预设的地址信息可以是任意已知的网站地址,例如可以是一个测试网页的地址。
访问请求发送模块63用于根据经过参数替换模块62替换得到的新URL,发出网络访问请求。
返回包接收模块64用于接收网络访问返回包。所述网络访问返回包是指网络服务器根据访问请求反馈回来的数据包。
跳转判断模块65用于根据返回包的内容判断是否包括目标网址为所述预设的地址信息的网页重定向。跳转判断模块65可以通过检测网络访问返回包中是否包含跳转返回码来判断访问过程中是否发生了跳转,而在判断出发生了跳转的情况下,跳转判断模块65可以根据网络访问返回包中访问页面的内容或者访问过的目标网址的信息来判别是否发生了与预设的地址信息对应的跳转。
检测结果输出模块66用于当检测到目标网址为所述预设的地址信息的网页跳转则记录对应的传递参数存在网页重定向漏洞。所述网页重定向漏洞检测结果可以包括存在网页重定向漏洞的URL(即存在漏洞的待检测URL)、存在网页重定向漏洞的传递参数以及网页重定向漏洞的跳转类型等。
请参见图7,其为本发明实施例的另一种网页重定向漏洞检测装置的结构图,与图6的实施例相比,本实施例的跳转判断模块65进一步包括:解析单元651、匹配单元652,所述匹配单元652进一步包括构造子单元6521以及字符串检测子单元6522。
解析单元651用于当所述返回包的头信息中包括用于网页重定向的跳转码则从所述头信息中解析出对应的目标网址,并传送给匹配单元652。
匹配单元652接收到目标网址后,判断所述目标网址是否与所述预设的地址信息匹配。具体来说,构造子单元6521会先根据所述预设的地址信息构造用于匹配目标网址为所述预设的地址信息的网页重定向的特征字符串。然后字符串检测子单元6522会检测所述返回包中是否包括所述特征字符串,如果返回包中存在该特征字符串,则说明发生过对预设地址对应页面的访问,即待检测的URL存在重定向漏洞。
前述通过返回包中的页面内容来检测重定向漏洞,检测准确性高,而相对地,本实施例通过匹配目标网址的重定向漏洞检测方式,由于只需要对字符串进行匹配,因而计算量较小,占用较少的系统资源。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明实施例可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或网络设备等)执行本发明实施例各个实施场景所述的方法。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本申请技术方案范围内,当可利用上述揭示的技术内容作出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本申请技术方案内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。