web漏洞检测的方法及装置
技术领域
本发明涉及互联网技术领域,尤其涉及一种web漏洞检测的方法及装置。
背景技术
WEB漏洞通常是指网站程序上的漏洞,可能是由于代码编写者在编写代码时考虑不周全等原因而造成的漏洞。因此,测试人员需要对网站是否存在漏洞进行检查。常见的web漏洞检测方法,包括以下两种:1)采用网络蜘蛛形式的直接扫描方式,对web服务器进行全站扫描,将网站所有连接地址逐一进行采集测试;2)登录扫描方式,对用户登录内部系统进行扫描,这种扫描方式需要测试人员对每个功能模块都进行登录才能记录在扫描器的url库中,其相对于第一种扫描检测方式更具有针对性。
但是,对于第一种web漏洞扫描检测方法,在采用多线程扫描时,对于小流量网站容易造成网络无法访问,此时web服务器不能返回信息,从而导致web漏洞扫描失败。对于第二种web漏洞检测方法,当用户提交的用户名或密码出现异常时,会直接导致通信失败,导致扫描出现异常。且在进行后台扫描时,容易因登录会话超时导致web漏洞检测失败。
发明内容
基于此,有必要针对现有技术中,web漏洞检测收到的约束条件较多,易造成检测失败的问题,提供一种能够稳定进行web漏洞扫描检测的,web漏洞检测的方法及装置。
为实现本发明目的提供的一种web漏洞检测的方法,在代理扫描器中设置连接浏览器和web服务器的通信端口,所述浏览器能够通过所述通信端口发送信息到所述web服务器,所述方法包括以下步骤:
检测到浏览器向web服务器发送访问请求时,所述代理扫描器启动所述通信端口准备接收数据;
接收所述浏览器发送来的http数据包,并对所述http数据包进行采集;
修改已经采集到的某个所述http数据包为测试数据包,并将所述测试数据包通过所述通信端口发送到web服务器进行漏洞检测。
作为一种web漏洞检测的方法的可实施方式,还包括以下步骤:
根据所述浏览器接收到的所述web服务器返回的所述测试数据包的执行结果,判断所测试网站是否存在web漏洞。
作为一种web漏洞检测的方法的可实施方式,通过对所述执行结果使用正则表达式匹配是否存在漏洞特征,来判断所测试网站是否存在web漏洞。
作为一种web漏洞检测的方法的可实施方式,还包括以下步骤:在对所述http数据包进行采集之前,还包括以下步骤:
判断设定信号是通过状态还是阻断状态;
若所述设定信号是通过状态,则对所接收的http数据包进行采集;
若所述设定信号是阻断状态,则忽略当前接收的所述http数据包,并返回继续接收新的所述http数据包。
作为一种web漏洞检测的方法的可实施方式,所述修改已经采集到的某个所述http数据包,包括在所述http数据包中添加测试代码和/或修改所述http数据包的http提交路径。
作为一种web漏洞检测的方法的可实施方式,还包括以下步骤:
对不需要进行测试的所述http数据包不进行修改直接通过所述通信端口发送到所述web服务器。
基于同一发明构思的一种web漏洞检测的装置,包括浏览器、代理扫描器及结果确定模块;
所述代理扫描器中配置有连接所述浏览器及web服务器的通信端口,所述浏览器能够通过所述通信端口发送信息到所述web服务器;
所述代理扫描器中还包括信号检测模块、数据采集模块及数据处理发送模块,其中:
所述信号检测模块,被配置以检测到浏览器向web服务器发送访问请求时,启动所述通信端口准备接收数据;
所述数据采集模块,被配置以接收所述浏览器发送来的http数据包,并对所述http数据包进行采集;
所述数据处理发送模块,被配置以修改已经采集到的某个所述http数据包为测试数据包,并将所述测试数据包通过所述通信端口发送到web服务器进行漏洞检测;
所述浏览器向所述web服务器发送http数据包,并接收web服务器返回的所述测试数据包的执行结果;
所述结果确定模块,被配置以根据所述执行结果判断所测试的网站是否存在web漏洞。
作为一种web漏洞检测的装置的可实施方式,所述数据采集模块包括数据接收子模块、设定信号接收判断子模块、数据采集子模块及数据阻断子模块,其中:
所述数据接收子模块,被配置以接收所述浏览器发送的http数据包;
所述设定信号接收判断子模块,被配置以接收设定信号,并判断设定信号是通过状态还是阻断状态,并在所述设定信号为通过状态时,控制执行所述数据采集子模块,在所述设定信号为阻断状态时,控制执行所述数据阻断子模块;
所述数据采集子模块,被配置以采集所述数据接收子模块接收的所述http数据包,并存储;
所述数据阻断子模块,被配置以控制忽略所述数据接收子模块已经接收到的所述http数据包,并继续接收新的http数据包。
作为一种web漏洞检测的装置的可实施方式,所述修改已经采集到的某个所述http数据包,包括在所述http数据包中添加测试代码和/或修改所述http数据包的http提交路径。
作为一种web漏洞检测的装置的可实施方式,所述代理扫描器中还包括数据直接发送模块;
所述数据直接发送模块,被配置以对不需要进行测试的所述http数据包不进行修改而直接通过所述通信端口发送到所述web服务器。
本发明的有益效果包括:本发明提供的一种web漏洞检测的方法及装置,该方法通过浏览器和web服务器之间的通信端口对http数据包进行拦截,并对需要修改的数据包进行修改,从而进行web漏洞检测。其能够实现对用户登录内部系统的扫描,也避免了传统直接扫描方式对小流量网站容易出现无法访问的问题。且本发明实施例的方法中代理服务器与web服务器之间建立的通讯稳定,对于登录扫描,代理服务器接收到http数据包,并且会一直带着cookie字段进行扫描,保持与web服务器之间的工作(活动)状态,因此,本发明实施例的检测方法能够避免传统的扫描器因登录会话超时,而造成扫描失败的问题。所以说,本发明实施例的web漏洞检测的方法能够稳定的进行web漏洞检测,且可以有针对性的进行检测。
附图说明
图1为本发明一种web漏洞检测的方法的一具体实施例的应用环境示意图;
图2为本发明一种web漏洞检测的方法的一具体实施例的流程图;
图3为本发明一种web漏洞检测的方法的另一具体实施例的流程图;
图4为本发明一种web漏洞检测的装置的一具体实施例的结构图;
图5为本发明一种web漏洞检测的装置的另一具体实施例的结构图;
图6为本发明一种web漏洞检测的装置的一具体实施例中的数据采集模块构成示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图对本发明的web漏洞检测的方法及装置的具体实施方式进行说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明一实施例的web漏洞检测的方法,应用与通过浏览器对网站漏洞进行检测。如图1所示,该方法实现基于在浏览器001和web服务器100之间设置代理扫描器002,当然,该代理扫描器用于web漏洞检测。且在代理扫描器中设置连接浏览器和web服务器的通信端口,浏览器能够通过所述通信端口发送信息到所述web服务器。而代理扫描器和和浏览器都可运行在一个客户端200中,代理扫描器002发送的消息通过客户端200的网络端口201通过网络传送到web服务器100。相应的,web服务器100上设置有网络端口101,web服务器通过网络端口101与互联网连通,接收客户端及浏览器传输的信息。其中客户端为计算机或者能够连通网络进行通讯的移动终端。
如图2所示,使用该方法进行web漏洞检测时,包括以下步骤:
S100,检测到浏览器向web服务器发送访问请求时,所述代理扫描器启动所述通信端口准备接收数据。与传统技术不同,本发明实施例的web漏洞检测的方法通过代理扫描器中的通信端口对浏览器发送到web服务器的数据包进行接收。而不是直接对网站所有链接进行扫描。
S200,接收所述浏览器发送来的http数据包,并对所述http数据包进行采集。代理扫描器发现浏览器向web服务器发送的http数据包时,则进行socket通信拦截,使http数据包均传输到代理扫描器中的通信端口。从而代理扫描器可对接收到的浏览器的http数据包进行采集,并存储。以便网站测试人员对需要的http数据包进行编辑、修改,实现对web漏洞的检测。
S300,修改已经采集到的某个所述http数据包为测试数据包,并将所述测试数据包通过所述通信端口发送到web服务器进行漏洞检测。
网站漏洞测试人员选择所述采集到的http数据包中符合测试要求,或者有测试必要的数据包,对数据包进行修改,如添加测试代码,或者修改http提交路径等,从而将http数据包修改为测试数据包。当然,对数据包的修改,测试人员可根据需要进行,在任务不冲突的情况下,可对同一http数据包同时进行多种类型的修改。代理服务器将修改后的测试数据包发送给web服务器进行web漏洞检测。
本发明实施例的web漏洞检测的方法,通过浏览器和web服务器之间的通信端口对http数据包进行拦截,并对需要修改的数据包进行修改,从而进行web漏洞检测。其能够实现对用户登录内部系统的扫描,也避免了传统直接扫描方式对小流量网站容易出现无法访问的问题。且本发明实施例的方法中代理服务器与web服务器之间建立的通讯稳定,对于登录扫描,代理服务器接收到http数据包,并且会一直带着cookie字段进行扫描,保持与web服务器之间的工作(活动)状态,因此,本发明实施例的检测方法能够避免传统的登录扫描容易出现会话超时,而造成扫描失败的问题。所以说,本发明实施例的web漏洞检测的方法能够稳定的进行web漏洞检测,且可以有针对性的进行检测。
另外,本发明的方法中将修改后的http数据包发送到web服务器中后,web服务器会返回执行后的信息给浏览器。浏览器接收到所述web服务器返回的测试数据包的执行结构后,本发明的方法执行步骤下面的步骤S400。
S400,根据所述浏览器接收到的所述web服务器返回的所述测试数据包的执行结果,判断所测试网站是否存在web漏洞。
较佳地,可对web服务器返回的执行结果使用正则表达式匹配是否存在漏洞特征,来判断所测试网站是否存在web漏洞。
在另一实施例中,如图3所示,代理扫描器在对浏览器发送的http数据包进行采集之前,还包括对代理扫描器自身的设定信号判断的步骤S020。具体如下:
S020,判断设定信号是通过状态还是阻断状态,若所述设定信号是通过状态,则继续执行步骤S021;若所述设定信号是阻断状态,则执行步骤S022。
S021,则对所接收的http数据包进行采集;
S022,忽略当前接收的所述http数据包,并返回继续接收新的所述http数据包。也即阻断浏览器向web服务器发送的http数据包,使其不发送到web服务器。
如此,本发明实施例的方法中,对浏览器发送到web服务器的http数据包进行选择性通过。对一些非常常规的,对web漏洞检测没有任何帮助的http数据包直接进行忽略,而完全不用执行后续的步骤,也不用对数据包进行存储。从而节省代理服务器所使用的存储空间,也加快代理扫描器的扫描速度。当然也会相应提高web漏洞检测效率。
此处需要说明的是,可在代理扫描器中设置阻断或者通过的标签,并通过代理扫描器所在的客户端进行显示,供网站测试人员进行选择。网站测试人员可手动选择时对数据包进行阻断还是进行通过。而代理扫描器对所述通过的http数据包进行采集、存储。以便于测试人员使用。在另外一种实施方式中,也可以设置阻断的用例库,对接收到的http数据包进行比对,从而自动判断是否对当前的http数据包进行阻断,其可以实现对部分http数据自动进行过滤。
另外,从图3中也可以看出,当需要使用某些或者某个http数据包进行web漏洞检测时,测试人员可以手动对http数据包进行修改,并将修改后的测试数据包发送到web服务器。但是有时候也会将一些http数据包直接发送到web服务器执行,而不进行任何修改。此时则属于浏览器的正常网站访问。
本领域普通技术人员可以理解,实现上述实施例web漏洞检测的方法中的全部或部分流程可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
基于同一发明构思,本发明实施例提供一种web漏洞检测的装置,由于此装置解决问题的原理与前述一种web漏洞检测的方法相似,因此,该装置的实施可以按照前述方法的具体步骤实现,重复之处不再赘述。
本发明一实施例的web漏洞检测的装置,如图4所示,包括浏览器001、代理扫描器002及结果确定模块003。代理扫描器002中配置有连接所述浏览器及web服务器的通信端口,所述浏览器能够通过所述通信端口发送信息到所述web服务器。
所述代理扫描器002中还包括信号检测模块012、数据采集模块022及数据处理发送模块032。其中:信号检测模块012,被配置以检测到浏览器向web服务器发送访问请求时,启动所述通信端口准备接收数据;数据采集模块022,被配置以接收所述浏览器发送来的http数据包,并对所述http数据包进行采集;数据处理发送模块032,被配置以修改已经采集到的某个所述http数据包为测试数据包,并将所述测试数据包通过所述通信端口发送到web服务器进行漏洞检测。
浏览器001向所述web服务器发送http数据包,接收web服务器返回的所述测试数据包的执行结果。
结果确定模块003,被配置以根据所述执行结果判断所测试的网站是否存在web漏洞。
另外,如图5所示,所述结果确定模块003还可以设置在所述代理扫描器002中,并与放在所述代理扫描器外部起相同的作用。
本发明实施例的web漏洞检测的装置,通过代理扫描器中的浏览器和web服务器之间的通信端口对http数据包进行拦截,并对需要修改的数据包进行修改,从而进行web漏洞检测。其能够实现对用户登录内部系统的扫描,也避免了传统直接扫描方式对小流量网站容易出现无法访问的问题。且本发明实施例的方法中代理服务器与web服务器之间建立的通讯稳定,对于登录扫描,代理服务器接收到http数据包,并且会一直带着cookie字段进行扫描,保持与web服务器之间的工作(活动)状态,因此,本发明实施例的检测方法能够避免传统的登录扫描容易出现会话超时,而造成扫描失败的问题。所以其能够稳定的进行web漏洞检测,且可以有针对性的进行检测。
如图6所示,在本发明其中一个实施例的web漏洞检测的装置中,所述数据采集模块022包括数据接收子模块0221、设定信号接收判断子模块0222、数据采集子模块0223及数据阻断子模块0224。其中:数据接收子模块0221,被配置以接收所述浏览器发送的http数据包;设定信号接收判断子模块0222,被配置以接收设定信号,并判断设定信号是通过状态还是阻断状态,并在设定信号为通过状态时,控制执行数据采集子模块0223,在设定信号为阻断状态时,控制执行数据阻断子模块0224;数据采集子模块0223,被配置以采集所述数据接收子模块接收的所述http数据包,并存储;数据阻断子模块0224,被配置以控制忽略所述数据接收子模块已经接收到的所述http数据包,并继续接收新的http数据包。如此,对浏览器发送到web服务器的http数据包进行选择性通过。对一些非常常规的,对web漏洞检测没有任何帮助的http数据包直接进行忽略,而完全不用执行后续的步骤,也不用对数据包进行存储。从而节省代理服务器所使用的存储空间,也加快代理扫描器的扫描速度。当然也会相应提高本装置web漏洞检测效率。
其中,前述实施例中的修改已经采集到的某个所述http数据包,包括在所述http数据包中添加测试代码和/或修改所述http数据包的http提交路径。
另外,本发明其中一个实施例的装置中还设置有数据直接发送模块,其被配置以对不需要进行测试的所述http数据包不进行任何修改而直接通过所述通信端口发送到所述web服务器。此时,相当于浏览器通过代理扫描器中的通信端口正常访问网站。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。