检测WebSocket跨站请求伪造漏洞的方法和装置与流程

文档序号:12376892阅读:575来源:国知局
检测WebSocket跨站请求伪造漏洞的方法和装置与流程

本发明实施例涉及通信领域,尤其涉及一种检测WebSocket跨站请求伪造漏洞的方法和装置。



背景技术:

很多网站为了实现即时通讯,所用的技术都是轮询(英文称为polling)。轮询是在特定的的时间间隔(如每1秒),由浏览器对待测试服务器发出HTTP请求(英文称为HTTP request),然后由待测试服务器返回最新的数据给浏览器。这种传统的HTTP request的模式带来很明显的缺点:浏览器需要不断的向待测试服务器发出请求,然而HTTP request的头域(英文称为header)非常长,HTTP request中包含的有用数据可能只是一个很小的值,如此会占用很多的带宽。

基于上述内容,出现了一种新的网络套接字协议(英文称为WebSocket protocol),它实现了浏览器与待测试服务器全双工通信(full-duplex)。在WebSocket应用程序编程接口(Application Programming Interface,简称API),浏览器和待测试服务器只需要做一个握手的动作,然后,浏览器和待测试服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。

具体来说,浏览器与待测试服务器先进行HTTP协议进行握手链接,之后在HTTP握手链接已经成功的基础上,浏览器向待测试服务器发送基于WebSocket协议的握手连接请求,但是WebSocket协议没有规定待测试服务器在握手阶段应该如何认证用户身份,也就是说,现有技术中,不会对WebSocket协议的握手连接请求进行校验,如此,黑客可能伪造基于WebSocket协议的握手请求与待测试服务器建立WebSocket链接。

跨站请求伪造(Cross-site request forgery,简称CSRF)作为一种网络攻击方式,能够以受害者名义向受攻击待测试服务器发送伪造的访问请求,从而可能造成受害者个人信息的泄露,从而使受攻击待测试服务器的安全性受到威胁。

综上,亟需一种检测WebSocket跨站请求伪造漏洞的方法和装置,用于检测待测试服务器是否存在WebSocket跨站请求伪造的漏洞,进而使开发人员在待测试服务器存在WebSocket跨站请求伪造漏洞时,对待测试服务器的漏洞进行修复,从而提升待测试服务器的安全性。



技术实现要素:

本发明实施例提供检测WebSocket跨站请求伪造漏洞的方法和装置,用于检测待测试服务器是否存在WebSocket跨站请求伪造的漏洞,进而使开发人员在待测试服务器存在WebSocket跨站请求伪造漏洞时,对待测试服务器的漏洞进行修复,从而提升待测试服务器的安全性。

本发明实施例提供一种检测WebSocket跨站请求伪造漏洞的方法,包括:

获取待测试服务器接收到的握手链接请求;

在确定握手链接请求为基于WebSocket协议的握手链接请求时,根据握手连接请求生成基于WebSocket协议的至少一个伪造请求;

根据至少一个伪造请求,对待测试服务器进行至少一项测试,得到至少一项测试的测试结果;

根据至少一项测试的测试结果,确定待测试服务器存在漏洞的风险等级。

可选地,根据至少一个伪造请求,对待测试服务器进行至少一项测试,得到至少一项测试的测试结果,包括:

针对至少一个伪造请求中的每个伪造请求,执行:

将该伪造请求发送给待测试服务器;

确定待测试服务器的反馈;

若待测试服务器的反馈为:未反馈针对该伪造请求的响应消息,或者待测试服务器对该伪造请求鉴权失败时反馈的响应消息;则,确定根据该伪造请求进行的测试的测试结果为:测试不通过;

若待测试服务器的反馈为:待测试服务器对该伪造请求鉴权成功时反馈的响应消息;则,确定根据该伪造请求进行的测试的测试结果为:测试通过。

可选地,根据至少一个伪造请求,对待测试服务器进行的至少一项测试,得到至少一项测试的测试结果,包括:

获取握手链接请求中的源origin域信息;

将origin域信息进行修改,生成第一伪造请求;

将第一伪造请求发送给待测试服务器,以对待测试服务器进行进行同源测试;

若确定未接收到待测试服务器基于第一伪造请求反馈的第一响应,或者确定接收到的第一响应与待测试服务器向客户端反馈的握手连接响应不相同时,则确定待测试服务器的同源测试的结果为:测试通过;

若确定接收到的第一响应与握手连接响应相同时,则确定待测试服务器的同源测试的结果为:测试不通过。

可选地,根据至少一个伪造请求,对待测试服务器进行的至少一项测试,得到至少一项测试的测试结果,包括:

获取握手链接请求中携带的cookie信息;

根据cookie信息,生成携带cookie信息的第二伪造请求;

将第二伪造请求发送给待测试服务器,以对待测试服务器进行进行cookie认证测试;

若确定未接收到待测试服务器基于第二伪造请求反馈的第二响应,或者确定第二响应为待测试服务器对cookie信息鉴权失败时所反馈的,则确定待测试服务器的cookie认证测试的结果为:测试通过;

若确定接收到的第二响应为待测试服务器对cookie信息鉴权成功后所反馈的,则确定待测试服务器的cookie认证测试的结果为:测试不通过。

可选地,根据至少一个伪造请求,对待测试服务器进行的至少一项测试,得到至少一项测试的测试结果,包括:

获取握手链接请求中携带的电子令牌token信息;

根据token信息,生成携带token信息的第三伪造请求;

将第三伪造请求发送给待测试服务器,以对待测试服务器进行进行token认证测试;

若确定未接收到待测试服务器基于第三伪造请求反馈的第三响应,或者确定第三响应为待测试服务器对token信息鉴权失败时所反馈的,则确定待测试服务器的token认证测试的结果为:测试通过;

若确定接收到的第三响应为待测试服务器对token信息鉴权成功后所反馈的,则确定待测试服务器的token认证测试的结果为:测试不通过。

可选地,根据至少一项测试的测试结果,确定待测试服务器存在漏洞的风险等级,包括:

若确定待测试服务器同源测试不通过和/或cookie认证测试不通过,则确定待测试服务器存在严重风险的漏洞;

若确定待测试服务器的同源测试通过、cookie认证测试通过,且token认证测试不通过,则确定待测试服务器存在中等风险的漏洞;

若确定待测试服务器的同源测试通过、cookie认证测试通过,且token认证测试通过,则确定待测试服务器无漏洞。

本发明实施例提供一种检测网络套接字WebSocket跨站请求伪造漏洞的装置,包括:

获取单元,用于获取待测试服务器接收到的握手链接请求;

处理单元,用于在确定握手链接请求为基于WebSocket协议的握手链接请求时,根据握手连接请求生成基于WebSocket协议的至少一个伪造请求;根据至少一个伪造请求,对待测试服务器进行至少一项测试,得到至少一项测试的测试结果;

评估单元,用于根据至少一项测试的测试结果,确定待测试服务器存在漏洞的风险等级。

可选地,处理单元,用于:

针对至少一个伪造请求中的每个伪造请求,执行:

将该伪造请求发送给待测试服务器;

确定待测试服务器的反馈;

若待测试服务器的反馈为:未反馈针对该伪造请求的响应消息,或者待测试服务器对该伪造请求鉴权失败时反馈的响应消息;则,确定根据该伪造请求进行的测试的测试结果为:测试不通过;

若待测试服务器的反馈为:待测试服务器对该伪造请求鉴权成功时反馈的响应消息;则,确定根据该伪造请求进行的测试的测试结果为:测试通过。

可选地,处理单元,用于:

获取握手链接请求中的源origin域信息;

将origin域信息进行修改,生成第一伪造请求;

将第一伪造请求发送给待测试服务器,以对待测试服务器进行进行同源测试;

若确定未接收到待测试服务器基于第一伪造请求反馈的第一响应,或者确定接收到的第一响应与待测试服务器向客户端反馈的握手连接响应不相同时,则确定待测试服务器的同源测试的结果为:测试通过;

若确定接收到的第一响应与握手连接响应相同时,则确定待测试服务器的同源测试的结果为:测试不通过。

可选地,处理单元,用于:

获取握手链接请求中携带的cookie信息;

根据cookie信息,生成携带cookie信息的第二伪造请求;

将第二伪造请求发送给待测试服务器,以对待测试服务器进行进行cookie认证测试;

若确定未接收到待测试服务器基于第二伪造请求反馈的第二响应,或者确定第二响应为待测试服务器对cookie信息鉴权失败时所反馈的,则确定待测试服务器的cookie认证测试的结果为:测试通过;

若确定接收到的第二响应为待测试服务器对cookie信息鉴权成功后所反馈的,则确定待测试服务器的cookie认证测试的结果为:测试不通过。

可选地,处理单元,用于:

获取握手链接请求中携带的电子令牌token信息;

根据token信息,生成携带token信息的第三伪造请求;

将第三伪造请求发送给待测试服务器,以对待测试服务器进行进行token认证测试;

若确定未接收到待测试服务器基于第三伪造请求反馈的第三响应,或者确定第三响应为待测试服务器对token信息鉴权失败时所反馈的,则确定待测试服务器的token认证测试的结果为:测试通过;

若确定接收到的第三响应为待测试服务器对token信息鉴权成功后所反馈的,则确定待测试服务器的token认证测试的结果为:测试不通过。

可选地,评估单元,用于:

若确定待测试服务器同源测试不通过和/或cookie认证测试不通过,则确定待测试服务器存在严重风险的漏洞;

若确定待测试服务器的同源测试通过、cookie认证测试通过,且token认证测试不通过,则确定待测试服务器存在中等风险的漏洞;

若确定待测试服务器的同源测试通过、cookie认证测试通过,且token认证测试通过,则确定待测试服务器无漏洞。

本发明实施例中,获取待测试服务器接收到的握手链接请求;在确定握手链接请求为基于WebSocket协议的握手链接请求时,根据握手连接请求生成基于WebSocket协议的至少一个伪造请求;根据至少一个伪造请求,对待测试服务器进行至少一项测试,得到至少一项测试的测试结果;根据至少一项测试的测试结果,确定待测试服务器存在漏洞的风险等级。由于确定握手链接请求为基于WebSocket协议的握手链接请求时,根据握手连接请求生成基于WebSocket协议的至少一个伪造请求,进而可通过将伪造请求发送给待测试服务器的方式,判断待测试服务器是否会被基于WebSocket协议的伪造请求骗过,从而可验证待测试服务器是否存在WebSocket跨站请求伪造漏洞。进一步在确定待测试服务器存在WebSocket跨站请求伪造漏洞时,向开发人员上报,可使开发人员根据测试结果对应的基于WebSocket协议的伪造请求,对待测试服务器的WebSocket跨站请求伪造漏洞进行修复,进而提高待测试服务器的安全性。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍。

图1为本发明实施例提供的一种通信系统的示意性架构图;

图2为本发明实施例提供的一种检测WebSocket跨站请求伪造漏洞的方法的流程示意图;

图2a为本发明实施例提供的另一种检测WebSocket跨站请求伪造漏洞的方法的流程示意图;

图3为本发明实施例提供的一种检测WebSocket跨站请求伪造漏洞的装置的结构示意图。

具体实施方式

为了使本发明的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

应理解,本发明实施例的技术方案可以应用于各种通信系统,例如:全球移动通讯(Global System of Mobile Communication,简称GSM)系统、码分多址(Code Division Multiple Access,简称CDMA)系统、宽带码分多址(Wideband Code Division Multiple Access,简称WCDMA)通用分组无线业务(General Packet Radio Service,简称GPRS)系统、长期演进(Long Term Evolution,简称LTE)系统、LTE频分双工(Frequency Division Duplex,简称FDD)系统、LTE时分双工(Time Division Duplex,简称TDD)、通用移动通信系统(Universal Mobile Telecommunication System,简称UMTS)、全球互联微波接入(Worldwide Interoperability for Microwave Access,简称WiMAX)通信系统,以及未来的5G通信系统等。

图1示出了应用本发明实施例的一种通信系统的示意性架构图。如图1所示,该通信系统可以包括通过无线链接或有线链接或其它方式链接的待测试服务器101和客户端102和客户端104。

本发明实施例中浏览器可安装于客户端102、客户端104或者待测试服务器101上,本发明实施例中检测WebSocket跨站请求伪造漏洞的装置104可安装于客户端102、客户端104或者待测试服务器101上。用户或者开发人员通过在客户端的浏览器中输入待测试服务器的网址,则可访问待测试服务器上的数据。本发明实施例中,一种可能的实施方式中,用户或者开发人员可在客户端上利用检测WebSocket跨站请求伪造漏洞的装置对待测试服务器进行检测,以便判断待测试服务器存在漏洞的风险等级,如此,检测WebSocket跨站请求伪造漏洞的装置向客户端上报待测试服务器存在漏洞的风险等级。另一种可能的实施方式中,用户或者开发人员在待测试服务器上利用检测WebSocket跨站请求伪造漏洞的装置对待测试服务器进行检测,以便判断待测试服务器存在漏洞的风险等级,如此,检测WebSocket跨站请求伪造漏洞的装置向待测试服务器上报待测试服务器存在漏洞的风险等级。

客户端102可以经无线接入网(Radio Access Network,简称RAN)与一个或多个核心网进行通信,客户端可以指用户装置(User Equipment,简称UE)、接入终端、用户单元、用户站、移动站、移动台、远方站、远程终端、移动装置、用户终端、终端、无线通信装置、用户代理或用户装置。接入终端可以是蜂窝电话、无绳电话、会话启动协议(Session Initiation Protocol,简称SIP)电话、无线本地环路(Wireless Local Loop,简称WLL)站、个人数字处理(Personal Digital Assistant,简称PDA)、具有无线通信功能的手持装置、计算装置或链接到无线调制解调器的其它处理装置、车载装置、可穿戴装置,未来5G网络中的客户端等。

待测试服务器101可以是一个网站或者一个应用的服务器,可以是用于与客户端进行通信的装置,例如,可以是GSM系统或CDMA中的基站(Base Transceiver Station,简称BTS),也可以是WCDMA系统中的基站(NodeB,简称NB),还可以是LTE系统中的演进型基站(Evolutional Node B,简称eNB或eNodeB),或者该待测试服务器可以为中继站、接入点、车载装置、可穿戴装置以及未来5G网络中的网络侧装置或未来演进的PLMN网络中的待测试服务器等。

本发明实施例中,检测WebSocket跨站请求伪造漏洞的装置104用于检测待测试服务器101中是否存在WebSocket跨站请求伪造漏洞。检测WebSocket跨站请求伪造漏洞的装置104可以位于待测试服务器101中,也可以位于客户端102或者客户端103中。

图2示例性示出了本发明实施例提供的一种检测WebSocket跨站请求伪造漏洞的方法的流程示意图。

基于图1所示的系统架构,如图2所示,本发明实施例提供的一种检测网络套接字WebSocket跨站请求伪造漏洞的方法,包括:

步骤201,检测WebSocket跨站请求伪造漏洞的装置获取待测试服务器接收到的握手链接请求;

步骤202,检测WebSocket跨站请求伪造漏洞的装置在确定握手链接请求为基于WebSocket协议的握手链接请求时,根据握手连接请求生成基于WebSocket协议的至少一个伪造请求;

步骤203,检测WebSocket跨站请求伪造漏洞的装置根据至少一个伪造请求,对待测试服务器进行至少一项测试,得到至少一项测试的测试结果;

步骤204,检测WebSocket跨站请求伪造漏洞的装置根据至少一项测试的测试结果,确定待测试服务器存在漏洞的风险等级。

为了更清楚的描述本发明实施例所提供的方法流程,图2a示例性示出了本发明实施例提供的另一种检测WebSocket跨站请求伪造漏洞的方法,如图2a所示,

步骤2101,浏览器与待测试服务器建立HTTP连接;具体来说,浏览器向待测试服务器发送HTTP握手连接请求,待测试服务器向浏览器返回HTTP握手连接响应。

步骤2102,浏览器向待测试服务器发送握手连接请求,待测试服务器接收到握手链接请求之后,向浏览器返回握手链接响应;

步骤2103,检测WebSocket跨站请求伪造漏洞的装置获取待测试服务器接收到的握手链接请求和握手链接响应。该握手链接请求可以是用户通过客户端的浏览器输入的,待测试服务器接收到的,检测WebSocket跨站请求伪造漏洞的装置从客户端或者待测试服务器获取的;或者,该握手链接请求可以是检测WebSocket跨站请求伪造漏洞的装置自己产生的、且通过浏览器向待测试服务器发送的握手链接请求;或者,该握手链接请求可以是开发人员自己设置的一个用于测试的握手链接请求,并通过浏览器向待测试服务器发送的。浏览器可以位于客户端或者待测试服务器。该握手链接请求为待测试服务器的url,该待测试服务器可为待测试的Web应用。

步骤2104,检测WebSocket跨站请求伪造漏洞的装置对握手连接请求和握手链接响应进行分析,确定该握手链接请求是否为基于WebSocket协议的握手链接请求,在确定是时,执行步骤2105;

步骤2105,检测WebSocket跨站请求伪造漏洞的装置对待测试服务器进行至少一项测试,具体测试方法如上述内容步骤202和步骤203所示;

步骤2106,检测WebSocket跨站请求伪造漏洞的装置根据至少一项测试的测试结果,评估待测试服务器存在漏洞的风险等级;

步骤2107,检测WebSocket跨站请求伪造漏洞的装置向开发人员反馈评估出的漏洞的风险等级,以及相关测试的信息。

一种可能的实施方式中,开发人员可在客户端上利用检测WebSocket跨站请求伪造漏洞的装置对待测试服务器进行检测,以便判断待测试服务器存在漏洞的风险等级,如此,检测WebSocket跨站请求伪造漏洞的装置向客户端上报待测试服务器存在漏洞的风险等级。另一种可能的实施方式中,开发人员可在待测试服务器上利用检测WebSocket跨站请求伪造漏洞的装置对待测试服务器进行检测,以便判断待测试服务器存在漏洞的风险等级,如此,检测WebSocket跨站请求伪造漏洞的装置向待测试服务器上报待测试服务器存在漏洞的风险等级。

可选地,上述步骤2104中,对握手连接请求进行检测,确定握手链接请求是否为基于WebSocket协议的握手链接请求,有多种实现方式,一种实现方式为获取握手链接请求中包括的特征字符;在确定特征字符为WebSocket协议所规定的特征字符时,确定握手链接请求为基于WebSocket协议的握手链接请求。举个例子,比如握手链接请求中包括“Upgrade:websocket”特征字符时,确定握手链接请求为基于WebSocket协议的握手链接请求。另一种实现方式为,获取握手连接响应,并分析握手链接响应的页面上是否包括WebSocket协议中的关键特征信息,比如,分析握手链接响应的页面上是否包括“ws://”或“wss://”协议符号特征,如果包括,则说明握手连接请求为基于WebSocket协议的握手链接请求。

可选地,根据至少一个伪造请求,对待测试服务器进行至少一项测试,得到至少一项测试的测试结果,包括:

针对至少一个伪造请求中的每个伪造请求,执行:

将该伪造请求发送给待测试服务器;确定待测试服务器的反馈;

若待测试服务器的反馈为:未反馈针对该伪造请求的响应消息,或者待测试服务器对该伪造请求鉴权失败时反馈的响应消息;则,确定根据该伪造请求进行的测试的测试结果为:测试不通过;

若待测试服务器的反馈为:待测试服务器对该伪造请求鉴权成功时反馈的响应消息;则,确定根据该伪造请求进行的测试的测试结果为:测试通过。

第一种可选地实施方式中,根据至少一个伪造请求,对待测试服务器进行的至少一项测试,得到至少一项测试的测试结果,包括:

获取握手链接请求中的源(origin)域信息;将origin域信息进行修改,生成第一伪造请求;将第一伪造请求发送给待测试服务器,以对待测试服务器进行进行同源测试;

若确定未接收到待测试服务器基于第一伪造请求反馈的第一响应,或者确定接收到的第一响应与待测试服务器向客户端反馈的握手连接响应不相同时,则确定待测试服务器的同源测试的结果为:测试通过。

可选地,确定接收到的第一响应与待测试服务器向客户端反馈的握手连接响应不相同,具体来说,握手链接响应可为一个页面,与待测试服务器向客户端反馈的握手连接响应不相同的第一响应可为与握手链接响应的页面不相同的另一个页面,比如第一响应对应的页面上显示“信息错误”等字样。

如此,则说明对握手链接请求进行origin域修改之后,待测试服务器可以识别出来,进而反馈回错误的响应信息,或者不反馈任何信息,说明待测试服务器对基于WebSocket协议的握手链接请求的origin域会进行检测,降低了待测试服务器存在WebSocket跨站请求伪造漏洞的风险。

若确定接收到的第一响应与握手连接响应相同时,则确定待测试服务器的同源测试的结果为:测试不通过。举个例子,比如向待测试服务器发送握手链接请求和第一伪造请求,待测试服务器均返回101状态码,此时,待测试服务器的同源测试的结果为:测试不通过。

可选地,确定接收到的第一响应与待测试服务器向客户端反馈的握手连接响应相同,具体来说,握手链接响应可为一个页面,与待测试服务器向客户端反馈的握手连接响应相同的第一响应可为与握手链接响应的页面相同的一个页面,比如第一响应对应的页面上的内容与握手链接响应的页面上的内容一致。

如此,则说明对握手链接请求进行origin域修改之后,待测试服务器识别不出来,仍然反馈与握手连接响应相同的第一响应,说明待测试服务器对基于WebSocket协议的握手链接请求的origin域不进行检测,或者说待测试服务器对基于WebSocket协议的握手链接请求的origin域检测无效,待测试服务器存在WebSocket跨站请求伪造漏洞的风险。

本发明实施例中origin域信息可为域名、协议、端口等信息。本发明实施例中,若待测试服务器通过同源测试,则可以在一定程度上确保握手链接请求的origin域信息为同一个,比如为同一个域名、协议和端口,从而降低待测试服务器存在WebSocket跨站请求伪造漏洞的风险。

第二种可选地实施方式中,根据至少一个伪造请求,对待测试服务器进行的至少一项测试,得到至少一项测试的测试结果,包括:

获取握手链接请求中携带的cookie信息;根据cookie信息,生成携带cookie信息的第二伪造请求;将第二伪造请求发送给待测试服务器,以对待测试服务器进行进行cookie认证测试;其中,cookie信息可为用户身份认证的相关信息;

若确定未接收到待测试服务器基于第二伪造请求反馈的第二响应,或者确定第二响应为待测试服务器对cookie信息鉴权失败时所反馈的,则确定待测试服务器的cookie认证测试的结果为:测试通过。

可选地,握手链接响应可为一个页面,待测试服务器对cookie信息鉴权失败时所反馈的第二响应的页面可为与握手链接响应的页面不相同的另一个页面,比如第二响应对应的页面上显示“信息错误”等字样。

如此,则说明即使第三人窃取了该握手链接请求中的cookie信息,并根据该握手链接请求中的cookie信息伪造了携带该握手链接请求中的cookie信息的、且基于WebSocket协议的握手链接请求时,待测试服务器也可以识别出该携带了合法cookie信息的握手链接请求是伪造的,进而反馈错误的响应信息,或者不反馈任何信息,说明待测试服务器对基于WebSocket协议的握手链接请求的cookie信息会进行检测,降低了待测试服务器存在WebSocket跨站请求伪造漏洞的风险。

若确定接收到的第二响应为待测试服务器对cookie信息鉴权成功后所反馈的,则确定待测试服务器的cookie认证测试的结果为:测试不通过。

可选地,待测试服务器对cookie信息鉴权成功后所反馈的第二响应,可为与握手链接响应的页面相同的一个页面,也可为与握手链接响应的页面不相同的另一个页面。举个例子,比如握手链接请求向待测试服务器请求页面1的内容,握手链接响应即为页面1的内容,握手链接请求中携带cookie信息。第二伪造请求向待测试服务器请求页面2的内容,待测试服务器对第二伪造请求中携带的cookie信息鉴权成功时,会反馈第二响应,第二响应即为页面2的内容。

如此,则说明如果第三人窃取了该握手链接请求中的cookie信息,并根据该握手链接请求中的cookie信息伪造了基于WebSocket协议的握手链接请求时,待测试服务器识别不出该携带了合法cookie信息的握手链接请求是伪造的,待测试服务器仍然反馈与握手连接响应相同的第二响应,说明待测试服务器对基于WebSocket协议的握手链接请求的cookie信息不进行检测,或者说待测试服务器对基于WebSocket协议的握手链接请求的cookie信息检测无效,待测试服务器存在WebSocket跨站请求伪造漏洞的风险。

第三种可选地实施方式中,根据至少一个伪造请求,对待测试服务器进行的至少一项测试,得到至少一项测试的测试结果,包括:

获取握手链接请求中携带的电子令牌(token)信息;根据token信息,生成携带token信息的第三伪造请求;将第三伪造请求发送给待测试服务器,以对待测试服务器进行进行token认证测试;

若确定未接收到待测试服务器基于第三伪造请求反馈的第三响应,或者确定第三响应为待测试服务器对token信息鉴权失败时所反馈的,则确定待测试服务器的token认证测试的结果为:测试通过。

可选地,握手链接响应可为一个页面,待测试服务器对token信息鉴权失败时所反馈的第三响应的页面可为与握手链接响应的页面不相同的另一个页面,比如第三响应对应的页面上显示“信息错误”等字样。

如此,则说明即使第三人窃取了握手链接请求中的token信息,并根据token信息伪造了基于WebSocket协议的握手链接请求时,待测试服务器也可以识别出该携带了握手链接请求中的token信息的握手链接请求是伪造的,进而反馈错误的响应信息,或者不反馈任何信息,说明待测试服务器对基于WebSocket协议的握手链接请求的token信息会进行检测,降低了待测试服务器存在WebSocket跨站请求伪造漏洞的风险。

若确定接收到的第三响应为待测试服务器对token信息鉴权成功后所反馈的,则确定待测试服务器的token认证测试的结果为:测试不通过。

可选地,待测试服务器对token信息鉴权成功后所反馈的第三响应,可为与握手链接响应的页面相同的一个页面,也可为与握手链接响应的页面不相同的另一个页面。举个例子,比如握手链接请求向待测试服务器请求页面1的内容,握手链接响应即为页面1的内容,握手链接请求中携带token信息。第二伪造请求向待测试服务器请求页面2的内容,待测试服务器对第二伪造请求中携带的该握手链接请求中携带token信息鉴权成功时,会反馈第二响应,第二响应即为页面2的内容。

如此,则说明如果第三人窃取了握手链接请求中的token信息,并根据握手链接请求中的token信息伪造了携带该握手链接请求中的token信息的基于WebSocket协议的握手链接请求时,待测试服务器识别不出该携带了该握手链接请求中的token信息的握手链接请求是伪造的,待测试服务器仍然反馈与握手连接响应相同的第二响应,说明待测试服务器对基于WebSocket协议的握手链接请求的token信息不进行检测,或者说待测试服务器对基于WebSocket协议的握手链接请求的token信息检测无效,待测试服务器存在WebSocket跨站请求伪造漏洞的风险。

本发明实施例中,可选地,根据至少一项测试的测试结果,确定待测试服务器存在漏洞的风险等级,包括:

若确定待测试服务器同源测试不通过和/或cookie认证测试不通过,则确定待测试服务器存在严重风险的漏洞;

若确定待测试服务器的同源测试通过、cookie认证测试通过,且token认证测试不通过,则确定待测试服务器存在中等风险的漏洞;

若确定待测试服务器的同源测试通过、cookie认证测试通过,且token认证测试通过,则确定待测试服务器无漏洞。

从上述内容可看出,本发明实施例中,获取待测试服务器接收到的握手链接请求;在确定握手链接请求为基于WebSocket协议的握手链接请求时,根据握手连接请求生成基于WebSocket协议的至少一个伪造请求;根据至少一个伪造请求,对待测试服务器进行至少一项测试,得到至少一项测试的测试结果;根据至少一项测试的测试结果,确定待测试服务器存在漏洞的风险等级。由于确定握手链接请求为基于WebSocket协议的握手链接请求时,根据握手连接请求生成基于WebSocket协议的至少一个伪造请求,进而可通过将伪造请求发送给待测试服务器的方式,判断待测试服务器是否会被基于WebSocket协议的伪造请求骗过,从而可验证待测试服务器是否存在WebSocket跨站请求伪造漏洞。进一步在确定待测试服务器存在WebSocket跨站请求伪造漏洞时,向开发人员上报,可使开发人员根据测试结果对应的基于WebSocket协议的伪造请求,对待测试服务器的WebSocket跨站请求伪造漏洞进行修复,进而提高待测试服务器的安全性。

图3为本发明实施例提供的一种检测WebSocket跨站请求伪造漏洞的装置的结构示意图。

基于相同构思,本发明实施例提供一种检测WebSocket跨站请求伪造漏洞的装置,用于执行上述方法流程,如图3所示,检测WebSocket跨站请求伪造漏洞的装置300包括获取单元301、处理单元302和评估单元303;

获取单元301,用于获取待测试服务器接收到的握手链接请求;

处理单元302,用于在确定握手链接请求为基于WebSocket协议的握手链接请求时,根据握手连接请求生成基于WebSocket协议的至少一个伪造请求;根据至少一个伪造请求,对待测试服务器进行至少一项测试,得到至少一项测试的测试结果;

评估单元303,用于根据至少一项测试的测试结果,确定待测试服务器存在漏洞的风险等级。

可选地,获取单元301可连接浏览器304,获取单元301从浏览器304中获取浏览器向待测试服务器发送的握手链接请求;或者获取单元301连接待测试服务器305,获取单元301从待测试服务器305中获取待测试服务器接收到的握手链接请求。

可选地,处理单元302可连接待测试服务器305,用于根据至少一个伪造请求,对待测试服务器进行至少一项测试,得到至少一项测试的测试结果。

可选地,评估单元303可连接浏览器304,用于将确定的待测试服务器存在漏洞的风险等级返回给浏览器304。

可选地,处理单元302,用于:

针对至少一个伪造请求中的每个伪造请求,执行:

将该伪造请求发送给待测试服务器;

确定待测试服务器的反馈;

若待测试服务器的反馈为:未反馈针对该伪造请求的响应消息,或者待测试服务器对该伪造请求鉴权失败时反馈的响应消息;则,确定根据该伪造请求进行的测试的测试结果为:测试不通过;

若待测试服务器的反馈为:待测试服务器对该伪造请求鉴权成功时反馈的响应消息;则,确定根据该伪造请求进行的测试的测试结果为:测试通过。

可选地,处理单元302,用于:

获取握手链接请求中的源origin域信息;

将origin域信息进行修改,生成第一伪造请求;

将第一伪造请求发送给待测试服务器,以对待测试服务器进行进行同源测试;

若确定未接收到待测试服务器基于第一伪造请求反馈的第一响应,或者确定接收到的第一响应与待测试服务器向客户端反馈的握手连接响应不相同时,则确定待测试服务器的同源测试的结果为:测试通过;

若确定接收到的第一响应与握手连接响应相同时,则确定待测试服务器的同源测试的结果为:测试不通过。

可选地,处理单元302,用于:

获取握手链接请求中携带的cookie信息;

根据cookie信息,生成携带cookie信息的第二伪造请求;

将第二伪造请求发送给待测试服务器,以对待测试服务器进行进行cookie认证测试;

若确定未接收到待测试服务器基于第二伪造请求反馈的第二响应,或者确定第二响应为待测试服务器对cookie信息鉴权失败时所反馈的,则确定待测试服务器的cookie认证测试的结果为:测试通过;

若确定接收到的第二响应为待测试服务器对cookie信息鉴权成功后所反馈的,则确定待测试服务器的cookie认证测试的结果为:测试不通过。

可选地,处理单元302,用于:获取握手链接请求中携带的电子令牌token信息;根据token信息,生成携带token信息的第三伪造请求;将第三伪造请求发送给待测试服务器,以对待测试服务器进行进行token认证测试;

若确定未接收到待测试服务器基于第三伪造请求反馈的第三响应,或者确定第三响应为待测试服务器对token信息鉴权失败时所反馈的,则确定待测试服务器的token认证测试的结果为:测试通过;

若确定接收到的第三响应为待测试服务器对token信息鉴权成功后所反馈的,则确定待测试服务器的token认证测试的结果为:测试不通过。

可选地,评估单元303,用于:

若确定待测试服务器同源测试不通过和/或cookie认证测试不通过,则确定待测试服务器存在严重风险的漏洞;

若确定待测试服务器的同源测试通过、cookie认证测试通过,且token认证测试不通过,则确定待测试服务器存在中等风险的漏洞;

若确定待测试服务器的同源测试通过、cookie认证测试通过,且token认证测试通过,则确定待测试服务器无漏洞。

从上述内容可看出,本发明实施例中,获取待测试服务器接收到的握手链接请求;在确定握手链接请求为基于WebSocket协议的握手链接请求时,根据握手连接请求生成基于WebSocket协议的至少一个伪造请求;根据至少一个伪造请求,对待测试服务器进行至少一项测试,得到至少一项测试的测试结果;根据至少一项测试的测试结果,确定待测试服务器存在漏洞的风险等级。由于确定握手链接请求为基于WebSocket协议的握手链接请求时,根据握手连接请求生成基于WebSocket协议的至少一个伪造请求,进而可通过将伪造请求发送给待测试服务器的方式,判断待测试服务器是否会被基于WebSocket协议的伪造请求骗过,从而可验证待测试服务器是否存在WebSocket跨站请求伪造漏洞。进一步在确定待测试服务器存在WebSocket跨站请求伪造漏洞时,向开发人员上报,可使开发人员根据测试结果对应的基于WebSocket协议的伪造请求,对待测试服务器的WebSocket跨站请求伪造漏洞进行修复,进而提高待测试服务器的安全性。

本领域内的技术人员应明白,本发明的实施例可提供为方法、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理装置的处理器以产生一个机器,使得通过计算机或其他可编程数据处理装置的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理装置以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理装置上,使得在计算机或其他可编程装置上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程装置上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1