XSS漏洞的检测方法、装置、设备及介质与流程

文档序号:28919739发布日期:2022-02-16 12:41阅读:548来源:国知局
XSS漏洞的检测方法、装置、设备及介质与流程
xss漏洞的检测方法、装置、设备及介质
技术领域
1.本技术涉及网络安全技术领域,尤其涉及一种xss漏洞的检测方法、装置、设备及介质。


背景技术:

2.跨站脚本攻击(cross-site scripting,xss)是一种安全漏洞,攻击者可以利用xss漏洞在网站上注入恶意的客户端代码。当用户(受害者)登陆该网站时,客户端就会自动运行这些恶意代码,攻击者可以突破网站的访问权限,对受害者采取资源窃取、会话劫持、钓欺骗等各种攻击,从而达到冒充受害者的目的。因此,对网站中的xss漏洞进行检测,是至关重要的。
3.现有技术中,对网站中的xss漏洞进行检测主要通过抓取超文本传输协议(hyper text transfer protocol,http)协议的全球广域网(world wide web,web)页面,然后对web页面进行解析,以获取web页面对应的文档对象模型(document object model,dom)树;同时,提取web页面中的嵌入式的url链接及调用参数,根据统一资源定位系统(uniform resource locator,url)链接及调用参数传递,检索对应的外部javascript文件集,以获取相关请求信息的脚本内容;之后,检索服务器返回的http响应信息,获取相关的脚本集,将获取到的响应信息中的脚本集和从url链接中检索到的请求信息中的脚本集进行相似性检测,通过是否检测到相似性来判断是否存在xss漏洞。
4.然而,现有技术需要单独收集url链接,在用户正常访问网站时无法无感的对网站进行xss漏洞检测,可能存在用户体验较差的问题。


技术实现要素:

5.本技术提供一种xss漏洞的检测方法、装置、设备及介质,以解决在用户正常访问网站时无法无感的对网站进行xss漏洞检测,存在用户体验较差的问题。
6.第一方面,本技术实施例提供一种xss漏洞的检测方法,包括:
7.将第一请求包中的任一用户属性参数删除,并在被删除的所述用户属性参数的原先位置处添加对应的请求包标识,生成至少一个第二请求包,所述第一请求包是待检测全球广域网web应用程序生成的,所述第一请求包包括至少一个用户属性参数;
8.将所述至少一个第二请求包发送给所述待检测web应用程序对应的服务器;
9.接收所述服务器返回的至少一个第一响应包,在任一第一响应包中存在目标请求包标识时,从第一请求包中获取所述目标请求包标识对应的目标第一请求包,每个第一响应包是所述服务器根据一个第二请求包处理得到的;
10.将所述目标第一请求包中的目标请求包标识删除,并根据所述目标第一请求包中的参数组织形式,在所述目标第一请求包中添加可以使跨站脚本攻击xss漏洞攻击成功的负载,生成目标请求包;
11.将所述目标请求包发送至所述服务器;
12.接收所述服务器返回的第二响应包,并控制所述待检测web应用程序渲染所述第二响应包,获得第一检测结果,所述第一检测结果包括所述服务器存在xss漏洞或所述服务器不存在xss漏洞。
13.在第一方面的一种可能设计中,所述控制所述待检测web应用程序渲染所述第二响应包,获得第一检测结果,包括:
14.向所述待检测web应用程序所在的终端设备发送渲染指令,所述渲染指令用于指示所述待检测web应用程序对所述第二响应包进行渲染;
15.接收所述终端设备发送的第一检测结果,所述第一检测结果是所述待检测web应用程序执行所述渲染指令后,根据渲染结果得到的。
16.在第一方面的另一种可能设计中,所述控制所述待检测web应用程序渲染所述第二响应包,获得第一检测结果,包括:
17.控制所述待检测web应用程序渲染所述第二响应包;
18.利用所述待检测web应用程序中预先安装的浏览器插件获取所述文档对象模型dom树的当前数据值;
19.在所述当前数据值与所述dom树的原始数据不一致时,所述第一检测结果为所述服务器存在xss漏洞;
20.在所述当前数据值与所述dom树的原始数据一致时,所述第一检测结果为所述服务器不存在xss漏洞。
21.可选的,所述待检测web应用程序中预先安装有代理插件,所述代理插件用于对所述待检测web应用程序的超文本传输协议http流量进行代理。
22.在第一方面的再一种可能设计中,所述接收所述服务器返回的至少一个第一响应包之后,所述方法还包括:
23.在任一第一响应包中均不存在请求包标识时,生成第二检测结果,所述第二检测结果用于指示所述服务器不存在xss漏洞。
24.在第一方面的又一种可能设计中,所述遍历第一请求包中的用户属性参数之前,所述方法还包括:
25.获取所述第一请求包。
26.可选的,所述获取所述第一请求包,包括:
27.接收所述待检测web应用程序发送的第一请求包;
28.或,
29.响应于用户对于所述待检测web应用程序中控件的点击操作,生成第一请求包。
30.可选的,所述方法还包括:
31.根据所述第一请求包中的数据的数据类型,获取所述第一请求包中的用户属性参数。
32.第二方面,本技术实施例提供一种xss漏洞的检测装置,包括:
33.处理模块,用于将第一请求包中的任一用户属性参数删除,并在被删除的所述用户属性参数的原先位置处添加对应的请求包标识,生成至少一个第二请求包,所述第一请求包是待检测全球广域网web应用程序生成的,所述第一请求包包括至少一个用户属性参数;
34.发送模块,用于将所述至少一个第二请求包发送给所述待检测web应用程序对应的服务器;
35.获取模块,用于接收所述服务器返回的至少一个第一响应包,在任一第一响应包中存在目标请求包标识时,从第一请求包中获取所述目标请求包标识对应的目标第一请求包,每个第一响应包是所述服务器根据一个第二请求包处理得到的;
36.所述处理模块,还用于将所述目标第一请求包中的目标请求包标识删除,并根据所述目标第一请求包中的参数组织形式,在所述目标第一请求包中添加可以使跨站脚本攻击xss漏洞攻击成功的负载,生成目标请求包;
37.所述发送模块,还用于将所述目标请求包发送至所述服务器;
38.所述处理模块,还用于接收所述服务器返回的第二响应包,并控制所述待检测web应用程序渲染所述第二响应包,获得第一检测结果,所述第一检测结果包括所述服务器存在xss漏洞或所述服务器不存在xss漏洞。
39.在第二方面的一种可能设计中,所述处理模块,具体用于:
40.向所述待检测web应用程序所在的终端设备发送渲染指令,所述渲染指令用于指示所述待检测web应用程序对所述第二响应包进行渲染;
41.接收所述终端设备发送的第一检测结果,所述第一检测结果是所述待检测web应用程序执行所述渲染指令后,根据渲染结果得到的。
42.在第二方面的另一种可能设计中,所述处理模块,具体用于:
43.控制所述待检测web应用程序渲染所述第二响应包;
44.利用所述待检测web应用程序中预先安装的浏览器插件获取所述文档对象模型dom树的当前数据值;
45.在所述当前数据值与所述dom树的原始数据不一致时,所述第一检测结果为所述服务器存在xss漏洞;
46.在所述当前数据值与所述dom树的原始数据一致时,所述第一检测结果为所述服务器不存在xss漏洞。
47.可选的,所述待检测web应用程序中预先安装有代理插件,所述代理插件用于对所述待检测web应用程序的超文本传输协议http流量进行代理。
48.在第二方面的再一种可能设计中,所述接收所述服务器返回的至少一个第一响应包之后,所述处理模块,还用于在任一第一响应包中均不存在请求包标识时,生成第二检测结果,所述第二检测结果用于指示所述服务器不存在xss漏洞。
49.在第二方面的又一种可能设计中,所述遍历第一请求包中的用户属性参数之前,所述获取模块,还用于获取所述第一请求包。
50.可选的,所述获取模块,具体用于:接收所述待检测web应用程序发送的第一请求包;
51.或,
52.响应于用户对于所述待检测web应用程序中控件的点击操作,生成第一请求包。
53.可选的,所述获取模块,还用于根据所述第一请求包中的数据的数据类型,获取所述第一请求包中的用户属性参数。
54.第三方面,本技术实施例提供一种电子设备,包括:处理器、收发器、存储器及存储
在所述存储器上并可在处理器上运行的计算机程序指令,所述处理器执行所述计算机程序指令时用于实现第一方面以及各可能设计提供的方法。
55.第四方面,本技术实施例可提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现第一方面以及各可能设计提供的方法。
56.第五方面,本技术实施例提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时用于实现第一方面以及各可能设计提供的方法。
57.本技术实施例提供的xss漏洞的检测方法、装置、设备及介质,通过将第一请求包中的任一用户属性参数删除,并在被删除的用户属性参数的原先位置处添加对应的请求包标识,生成至少一个第二请求包,将至少一个第二请求包发送给待检测web应用程序对应的服务器,接收服务器返回的至少一个第一响应包,在任一第一响应包中存在目标请求包标识时,从第一请求包中获取目标请求包标识对应的目标第一请求包,将目标第一请求包中的目标请求包标识删除,并根据目标第一请求包中的参数组织形式,在目标第一请求包中添加可以使跨站脚本攻击xss漏洞攻击成功的负载,生成目标请求包,将目标请求包发送至服务器,接收服务器返回的第二响应包,并控制待检测web应用程序渲染第二响应包,获得第一检测结果。能够在用户日常使用web应用程序时对web应用程序对应的服务器进行xss漏洞检测,提高了用户的使用感受。同时,本技术还利用第二请求包判断服务器存在xss漏洞的可能性,在服务器可能存在xss漏洞时,对其进行进一步检测,有效提高了xss漏洞检测的效率。
附图说明
58.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本技术的实施例,并与说明书一起用于解释本技术的原理。
59.图1为本技术实施例提供的xss漏洞的检测方法的一种应用场景示意图;
60.图2为本技术实施例提供的xss漏洞的检测方法实施例一的流程示意图;
61.图3为本技术实施例提供的xss漏洞的检测方法实施例二的流程示意图;
62.图4为本技术实施例提供的xss漏洞的检测装置的结构示意图;
63.图5为本技术实施例提供的电子设备的结构示意图。
64.通过上述附图,已示出本公开明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本公开的概念。
具体实施方式
65.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
66.在介绍本技术的实施例之前,首先对本技术实施例的应用背景进行解释:
67.xss是一种安全漏洞,xss漏洞能够使得攻击者嵌入恶意脚本代码到正常用户会访
问到的页面中,当正常用户访问该页面时,则可导致嵌入的恶意脚本代码的执行,从而达到恶意攻击用户的目的。
68.其中,xss漏洞主要分为以下三类:
69.存储型xss:存储型xss的脚本属于注入型脚本,是永久存储在目标服务器上的,如存在于个人信息或发表文章等地方,如果没有过滤或过滤不严,那么这些代码将储存到服务器中。当浏览器请求数据时,脚本会从服务器传输至浏览器并执行。
70.反射型xss:攻击者事先制作好攻击链接,需要欺骗用户自己去点击链接才能触发xss代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面。当用户点击一个恶意链接,或者提交一个表单,或者进入一个恶意网站时,web服务器将注入脚本(比如一个错误信息,搜索结果等)返回到用户的浏览器上。由于浏览器认为这个响应来自“可信任”的服务器,所以浏览器会执行这段脚本。
71.dom型xss:通过修改原始的客户端代码,从而改变受害者浏览器中的dom环境,导致有效负载的执行。也就是说,页面本身并没有变化,但由于dom环境被恶意修改,有客户端代码被包含进了页面,并且意外执行。
72.在一种具体的应用场景中,用户在浏览网站、使用即时通讯软件、甚至在阅读电子邮件时,通常会点击其中的链接。攻击者通过在链接中插入恶意代码,就能够盗取用户信息。攻击者通常会用十六进制(或其他编码方式)将链接编码,以免用户怀疑它的合法性。网站在接收到包含恶意代码的请求之后会产成一个包含恶意代码的页面,而这个页面看起来就像是那个网站应当生成的合法页面一样。例如,许多论坛程序允许用户发表包含html和javascript的帖子,假设用户甲发表了一篇包含恶意脚本的帖子,那么用户乙在浏览这篇帖子时,恶意脚本就会执行,从而盗取用户乙的个人信息,达到冒充用户乙的目的。
73.攻击者可以使用户在浏览器中执行其预定义的恶意脚本,其导致的危害可想而知,如劫持用户会话,插入恶意内容、重定向用户、使用恶意软件劫持用户浏览器、繁殖xss蠕虫,甚至破坏网站、修改路由器配置信息等。因此,对网站中的xss漏洞进行检测,是至关重要的。
74.现有技术中,对网站中的xss漏洞进行检测主要通过抓取http协议的web页面,然后对web页面进行解析,以获取web页面对应的dom树;同时,提取web页面中的嵌入式的url链接及调用参数,根据url链接及调用参数传递,检索对应的外部javascript文件集,以获取相关请求信息的脚本内容;之后,检索服务器返回的http响应信息,获取相关的脚本集,将获取到的响应信息中的脚本集和url链接中检索到的请求信息中的脚本集进行相似性检测,通过是否检测到相似性来判断是否存在xss漏洞。
75.然而,现有技术需要单独收集url链接,在用户正常访问网站时无法无感的对网站进行xss漏洞检测,可能存在用户体验较差的问题。
76.针对上述问题,本技术的发明构思如下:由于现有技术只能在对网站进行测试时对网站中的xss漏洞进行检测,而在测试期间用户无法正常访问该网站,存在用户体验较差的问题。基于此,发明人发现,若在用户正常访问网站时,通过对http流量进行代理获取相应的请求包,并将请求包中的用户属性参数(如用户名、手机号码、密码等)用请求包标识进行替代,若服务器返回的响应包中存在该请求包标识,则认为该服务器可能存在xss漏洞。进一步的,将请求包中的请求包标识用可以使xss漏洞攻击成功的负载进行替代,并发送给
服务器,在接受到服务器返回的响应包后,控制待检测web应用程序渲染第二响应包,从而就能在用户无感的情况下得到检测结果,就能解决现有技术中用户体验较差的问题。
77.示例性的,本技术实施例提供的xss漏洞的检测方法可以应用于图1所示的一种应用场景示意图中。图1为本技术实施例提供的xss漏洞的检测方法的一种应用场景示意图,用以解决上述技术问题。如图1所示,该应用场景可以包括:用户终端设备11、代理服务器12、和web服务器13,代理服务器12分别与用户终端设备11和web服务器13进行通讯连接。
78.在本实施例中,用户终端设备中预先安装有待检测web应用程序,在用户日常使用待检测web应用程序时,响应于用户对待检测web应用程序中控件的点击操作,生成请求包,并发送给代理服务器12。
79.可选的,代理服务器12接收用户终端设备发送的请求包后,执行xss漏洞的检测方法的程序代码,并将处理后的请求包发送给web服务器13。web服务器13接收代理服务器12发送的请求包,并对该请求包进行处理,生成对应的响应包,并发送给代理服务器12。
80.可选的,代理服务器12还可以控制待检测web应用程序对响应包进行渲染,从而得到检测结果。
81.在实际应用中,由于安装有待测试web应用程序的用户终端设备也是具有数据处理能力的处理设备,因而,上述图1所示应用场景中的代理服务器可以由用户终端设备实现。其中,代理服务器还可以由没有安装待测试web应用程序的终端设备(也称为检测终端设备)实现。在本技术的实施例中,可以将服务器、用户终端设备和检测终端设备统称为电子设备。
82.下面,通过具体实施例对本技术的技术方案进行详细说明。
83.需要说明的是,下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
84.图2为本技术实施例提供的xss漏洞的检测方法实施例一的流程示意图。如图2所示,该xss漏洞的检测方法可以包括如下步骤:
85.s21:将第一请求包中的任一用户属性参数删除,并在被删除的用户属性参数的原先位置处添加对应的请求包标识,生成至少一个第二请求包。
86.在本技术实施例中,本实施例的执行主体为电子设备。其中电子设备可以为服务器,还可以为用户终端设备或检测终端设备,将在下述步骤中对执行主体分别为服务器、用户终端设备或检测终端设时的具体实现方式进行详细展开说明。
87.应理解,在执行主体为用户终端设备时,该待检测web应用程序需要预先安装有代理插件,代理插件用于对待检测web应用程序的超文本传输协议http流量进行代理。
88.可选的,用户终端设备还可以预先内置自签名证书,利用自签名证书对用户终端设备中的待检测web应用程序的超文本传输安全协议(hyper text transfer protocol over securesocket layer,https)流量进行代理。
89.示例性的,代理插件可以为burpsuite插件,还可以为其他现有技术中的代理插件,可以根据实际情况进行选择,本技术实施例对此不进行限定。
90.可选的,待检测web应用程序还可以通过mitmproxy等现成的工具或模块对待检测web应用程序的https和/或http流量进行代理。
91.在本步骤中,电子设备可以对预先获取的第一请求包进行处理,生成至少一个第
二请求包,以便于后续利用至少一个第二请求包获取服务器存在xss漏洞的可能性。
92.其中,第一请求包是待检测web应用程序生成的,第一请求包包括至少一个用户属性参数;
93.示例性的,用户属性参数可以为用户名,可以为用户身份证号,电话号码,还可以为用户的社交账号密码,银行卡密码,还可以包含其它需要保护的,与用户信息有关的参数,本技术实施例对此不进行具体限制。
94.可选的,请求包标识可以为通用唯一识别码(universally unique identifier,uuid)。
95.示例性的,以第一请求包中包含两个用户属性及对应的用户属性参数(分别为用户名:admin;密码:123456),请求包标识为uuid为例进行举例说明。电子设备将首先将admin删除,并在被删除的admin的所在的位置添加对应的请求包标识(uuid1),从而获取一个第二请求包,该第二请求包中的两个用户属性及对应的用户属性参数分别为用户名:uuid1;密码123456。同样的,电子设备还需要将123456删除,并在被删除的123456的所在的位置添加对应的请求包标识(uuid2),从而获取另一个第二请求包,该第二请求包中的两个用户属性及对应的用户属性参数分别为用户名:admin;密码uuid2。
96.s22:将至少一个第二请求包发送给待检测web应用程序对应的服务器。
97.其中,待检测web应用程序对应的服务器也就是图1对应实施例中的web服务器。
98.对于服务器来说,则接收电子设备发送的至少一个第二请求包,针对每个第二请求包进行处理,从而生成至少一个第一响应包,并将至少一个第一响应包发送给电子设备。
99.其中,每个第一响应包是服务器根据一个第二请求包处理得到的。
100.s23:接收服务器返回的至少一个第一响应包,在任一第一响应包中存在目标请求包标识时,从第一请求包中获取目标请求包标识对应的目标第一请求包。
101.在本步骤中,电子设备需要对每个第一响应包中的内容进行检索,查看其中是否存在目标请求包标识。在任一第一响应包中存在目标请求包标识时,则代表该第一响应包可能为产生xss漏洞的接口,因此需要从第一请求包中获取目标请求包标识对应的目标第一请求包,该目标请求包标识在目标第一请求包的位置处可能存xss漏洞。
102.其中,第一响应包的数量与第二请求包的数量一致。
103.s24:将目标第一请求包中的目标请求包标识删除,并根据目标第一请求包中的参数组织形式,在目标第一请求包中添加可以使跨站脚本攻击xss漏洞攻击成功的负载,生成目标请求包;
104.在本步骤中,在确定目标第一请求包可能产生xss漏洞的接口后,需要对其进一步检测,确定服务器是否存在xss漏洞。
105.示例性的,以目标第一请求包中的两个用户属性及对应的用户属性参数分别为用户名:uuid1;密码:123456为例进行举例说明。在目标第一请求包中,用户属性为用户名处可能存在产生xss漏洞的接口。电子设备将uuid1进行删除,并将代码《svg/onload="alert(1)"》(也就是负载)添加至目标第一请求包中,获得目标请求包,目标请求包中的用户属性及对应的用户属性参数分别为用户名:《svg/onload="alert(1)"》;密码:123456。
106.示例性的,负载(英文:payload)可以根据目标第一请求包中的参数组织形式(英文:content-type)进行确定,具体实现过程可以参照现有技术中存在的实现方式,在此不
再赘述。
107.示例性的,确定负载后还可以对目标第一请求包进行处理,以便于后续将负载的添加至目标第一请求包中,以下为5种对目标第一请求包进行处理的示例。
108.1),目标第一请求包的参数组织形式为js,且目标请求包标识包含在双引号或单引号变量中,则尝试闭合引号,并注入js中xss payload。
109.2),目标第一请求包的参数组织形式为js,且目标请求包标识包含在多行注释符中,则反向闭合注释符,并注入js中xss payload。
110.3),目标第一请求包的参数组织形式为js,且目标请求包标识直接包含在js中,注入js中xss payload。
111.4),目标第一请求包的参数组织形式为html,且目标请求包标识直接包含在body标签中,则注入html中标签形式的xss payload,举例来说,xss payload可以为如《svg/onload="alert(1)"》,《img src=x onerror=alert(1)》、《script》alert(1);《/script》等。
112.5),目标第一请求包的参数组织形式为html,且目标请求包标识包含在任一标签的属性中,目标请求包标识包含在双引号或单引号变量中,则闭合引号,并注入标签属性的xss payload,举例来说,xss payload可以为"onmouseover="alert(1)"。
113.s25:将目标请求包发送至服务器;
114.对于服务器来说,则接收电子设备发送的目标请求包,针对目标请求包进行处理,从而生成第二响应包,并将第二响应包发送给电子设备。
115.s26:接收服务器返回的第二响应包,并控制待检测web应用程序渲染第二响应包,获得第一检测结果,
116.在本步骤中,电子设备需要接收服务器发送的第二响应包,以便于控制待检测web应用程序渲染第二响应包,从而验证服务器中是否存在xss漏洞。
117.其中,第一检测结果包括服务器存在xss漏洞或服务器不存在xss漏洞。
118.以执行主体为服务器或者检测终端设备为例进行具体说明。服务器或者检测终端设备向待检测web应用程序所在的用户终端设备发送渲染指令,渲染指令用于指示待检测web应用程序对第二响应包进行渲染。同时对于待检测web应用程序所在的用户终端设备来说,则根据渲染指令利用第二响应包对待检测web应用程序进行渲染,并根据渲染结果得到第一检测结果,将第一检测结果发送给服务器或者检测终端设备。服务器或者检测终端设备接收用户终端设备发送的第一检测结果。
119.以执行主体为用户终端设备为例进行举例说明。用户终端设备控制待检测web应用程序渲染第二响应包,利用待检测web应用程序中预先安装的浏览器插件获取dom树的当前数据值,在当前数据值与dom树的原始数据不一致时,第一检测结果为服务器存在xss漏洞,在当前数据值与dom树的原始数据一致时,第一检测结果为服务器不存在xss漏洞。
120.其中,浏览器插件可以为用户自行开发的插件,也可以是现有技术中存在的插件,可以根据实际需求进行确定,本技术实施例对此不进行具体限制。浏览器插件主要用于在待检测web应用程序中的每个页面上添加js代码来增强待检测web应用程序使用性,并对dom树中的数据进行监控。
121.本技术实施例提供的xss漏洞的检测方法,通过将第一请求包中的任一用户属性
参数删除,并在被删除的用户属性参数的原先位置处添加对应的请求包标识,生成至少一个第二请求包,将至少一个第二请求包发送给待检测web应用程序对应的服务器,接收服务器返回的至少一个第一响应包,在任一第一响应包中存在目标请求包标识时,从第一请求包中获取目标请求包标识对应的目标第一请求包,将目标第一请求包中的目标请求包标识删除,并根据目标第一请求包中的参数组织形式,在目标第一请求包中添加可以使跨站脚本攻击xss漏洞攻击成功的负载,生成目标请求包,将目标请求包发送至服务器,接收服务器返回的第二响应包,并控制待检测web应用程序渲染第二响应包,获得第一检测结果。本方案能够在用户日常使用待检测web应用程序时对待检测web应用程序对应的服务器进行xss漏洞检测,提高了用户的使用感受。同时,本技术还利用第二请求包判断服务器存在xss漏洞的可能性,在服务器可能存在xss漏洞时,对其进行进一步检测,有效提高了xss漏洞检测的效率。
122.可选的,在一些实施例中,电子设备在接收服务器返回的至少一个第一响应包之后,xss漏洞的检测方法还包括在任一第一响应包中均不存在请求包标识时,生成第二检测结果,第二检测结果用于指示服务器不存在xss漏洞。
123.可选的,在一些实施例中,在s21之前,xss漏洞的检测方法还包括获取第一请求包。
124.以执行主体为服务器或者检测终端设备为例进行具体说明,服务器或检测终端设备接收待检测web应用程序发送的第一请求包,从而获取第一请求包。
125.以执行主体为用户终端设备为例进行举例说明,用户终端设备响应于用户对于待检测web应用程序中控件的点击操作,生成第一请求包。
126.可选的,在一些实施例中,在获取第一请求包之后,电子设备还可以根据第一请求包中的数据的数据类型,获取第一请求包中的用户属性参数。
127.示例性的,用户属性参数可以为get型参数或post型参数,以post型参数为例进行举例说明,电子设备可以利用mime header判断post主体的参数组织形式,参数组织形式可以为json或xml等,并根据参数组织形式获取对应的用户属性参数。
128.在本实施例中,请求包中的数据可以通过代码形式进行表示。如请求包中包含两个用户属性及对应的用户属性参数分别为用户名:admin;密码:123456,则可以通过代码username=admin&password=123456进行表示,应理解,电子设备还可以通过其他的代码形式对请求包中的数据进行表示,本技术实施例对此不进行具体限制。
129.图3为本技术实施例提供的xss漏洞的检测方法实施例二的流程示意图。如图3所示,该xss漏洞的检测方法可以包括如下步骤:
130.s31:响应于用户对于待检测web应用程序中控件的点击操作,生成第一请求包,并将第一请求包发送给代理服务器。
131.对于代理服务器来说,则接收用户终端设备发送的第一请求。
132.s32:将第一请求包中的任一用户属性参数删除,并在被删除的用户属性参数的原先位置处添加对应的请求包标识,生成至少一个第二请求包,并将第二请求包发送给web服务器。
133.对于web服务器来说,则接收代理服务器发送的至少一个第二请求包,并根据至少一个第二请求包生成至少一个第一响应包,并发送给代理服务器。
134.s32:接收web服务器返回的至少一个第一响应包,判断是否有第一响应包中存在目标请求包标识。若没有,则生成第二检测结果,第二检测结果用于指示服务器不存在xss漏洞;若有,则执行s33。
135.s33:将存在目标请求包标识的第一响应包确定为目标第一请求包,将目标第一请求包中的目标请求包标识删除,并根据目标第一请求包中的参数组织形式,在目标第一请求包中添加可以使跨站脚本攻击xss漏洞攻击成功的负载,生成目标请求包,并将目标请求包发送给web服务器。
136.对于web服务器来说,则接收代理服务器发送的目标请求包,并根据目标请求包生成第二响应包,并发送给代理服务器。
137.s34:接收web服务器发送的第二响应包,并向用户终端设备发送渲染指令。
138.渲染指令用于指示待检测web应用程序对第二响应包进行渲染。
139.对于用户终端设备来说,则接收代理服务器发送的渲染指令。
140.s35:待检测web应用程序利用预先安装的浏览器插件根据渲染指令对第二响应包进行渲染,并获得渲染结果。
141.s36:将渲染结果发送给代理服务器。
142.下述为本技术装置实施例,可以用于执行本技术方法实施例。对于本技术装置实施例中未披露的细节,请参照本技术方法实施例。
143.图4为本技术实施例提供的xss漏洞的检测装置的结构示意图。如图4所示,该xss漏洞的检测装置包括:
144.处理模块41,用于将第一请求包中的任一用户属性参数删除,并在被删除的用户属性参数的原先位置处添加对应的请求包标识,生成至少一个第二请求包,第一请求包是待检测全球广域网web应用程序生成的,第一请求包包括至少一个用户属性参数;
145.发送模块42,用于将至少一个第二请求包发送给待检测web应用程序对应的服务器;
146.获取模块43,用于接收服务器返回的至少一个第一响应包,在任一第一响应包中存在目标请求包标识时,从第一请求包中获取目标请求包标识对应的目标第一请求包,每个第一响应包是服务器根据一个第二请求包处理得到的;
147.处理模块41,还用于将目标第一请求包中的目标请求包标识删除,并根据目标第一请求包中的参数组织形式,在目标第一请求包中添加可以使跨站脚本攻击xss漏洞攻击成功的负载,生成目标请求包;
148.发送模块42,还用于将目标请求包发送至服务器;
149.处理模块41,还用于接收服务器返回的第二响应包,并控制待检测web应用程序渲染第二响应包,获得第一检测结果,第一检测结果包括服务器存在xss漏洞或服务器不存在xss漏洞。
150.在本技术实施例的一种可能设计中,处理模块41,具体用于:
151.向待检测web应用程序所在的终端设备发送渲染指令,渲染指令用于指示待检测web应用程序对第二响应包进行渲染;
152.接收终端设备发送的第一检测结果,第一检测结果是待检测web应用程序执行渲染指令后,根据渲染结果得到的。
153.在本技术实施例的另一种可能设计中,处理模块41,具体用于:
154.控制待检测web应用程序渲染第二响应包;
155.利用待检测web应用程序中预先安装的浏览器插件获取dom树的当前数据值;
156.在当前数据值与dom树的原始数据不一致时,第一检测结果为服务器存在xss漏洞;
157.在当前数据值与dom树的原始数据一致时,第一检测结果为服务器不存在xss漏洞。
158.可选的,待检测web应用程序中预先安装有代理插件,代理插件用于对待检测web应用程序的超文本传输协议http流量进行代理。
159.在本技术实施例的再一种可能设计中,接收服务器返回的至少一个第一响应包之后,处理模块41,还用于在任一第一响应包中均不存在请求包标识时,生成第二检测结果,第二检测结果用于指示服务器不存在xss漏洞。
160.在本技术实施例的又一种可能设计中,遍历第一请求包中的用户属性参数之前,获取模块43,还用于获取第一请求包。
161.可选的,获取模块43,具体用于:接收待检测web应用程序发送的第一请求包;
162.或,
163.响应于用户对于待检测web应用程序中控件的点击操作,生成第一请求包。
164.可选的,获取模块43,还用于根据第一请求包中的数据的数据类型,获取第一请求包中的用户属性参数。
165.本技术实施例提供的xss漏洞的检测装置,可用于执行上述任一实施例中的xss漏洞的检测方法,其实现原理和技术效果类似,在此不再赘述。
166.需要说明的是,应理解以上装置的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块通过处理元件调用软件的形式实现,部分模块通过硬件的形式实现。此外,这些模块全部或部分可以集成在一起,也可以独立实现。这里所述的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
167.图5为本技术实施例提供的电子设备的结构示意图。如图5所示,该电子设备可以包括:处理器51、收发器52、存储器53及存储在所述存储器53上并可在处理器51上运行的计算机程序指令,所述处理器51执行所述计算机程序指令时实现前述任一实施例提供的xss漏洞的检测方法。
168.可选的,电子设备还可以包括与其他设备进行交互的接口。
169.可选的,该电子设备的上述各个器件之间可以通过系统总线连接。
170.可选的,收发器52用于和其他计算机进行通信,该收发器52构成通信接口。
171.可选的,在硬件实现上,上述图4所示实施例中的:发送模块42和获取模块43对应于本实施例中的收发器52,上述图4所示实施例中的处理模块41对应于本实施例中的处理器51。
172.存储器53可以是单独的存储单元,也可以是集成在处理器中的存储单元。处理器
的数量为一个或者多个。
173.应理解,处理器51可以是中央处理单元(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本技术所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
174.系统总线可以是外设部件互连标准(peripheral component interconnect,pci)总线或扩展工业标准结构(extended industry standard architecture,eisa)总线等。系统总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。存储器可能包括随机存取存储器(random access memory,ram),也可能还包括非易失性存储器(non-volatile memory,nvm),例如至少一个磁盘存储器。
175.实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一可读取存储器中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储器(存储介质)包括:只读存储器(read-only memory,rom)、ram、快闪存储器、硬盘、固态硬盘、磁带(英文:magnetic tape)、软盘(英文:floppy disk)、光盘(英文:optical disc)及其任意组合。
176.本技术实施例提供的电子设备,可用于执行上述任一方法实施例提供的xss漏洞的检测方法,其实现原理和技术效果类似,在此不再赘述。
177.本技术实施例提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机指令,当该计算机指令在计算机上运行时,使得计算机执行上述xss漏洞的检测方法。
178.上述的计算机可读存储介质,上述可读存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器,电可擦除可编程只读存储器,可擦除可编程只读存储器,可编程只读存储器,只读存储器,磁存储器,快闪存储器,磁盘或光盘。可读存储介质可以是通用或专用计算机能够存取的任何可用介质。
179.可选的,将可读存储介质耦合至处理器,从而使处理器能够从该可读存储介质读取信息,且可向该可读存储介质写入信息。当然,可读存储介质也可以是处理器的组成部分。处理器和可读存储介质可以位于专用集成电路(application specific integrated circuits,asic)中。当然,处理器和可读存储介质也可以作为分立组件存在于设备中。
180.本技术实施例还提供一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序存储在计算机可读存储介质中,至少一个处理器可以从该计算机可读存储介质中读取该计算机程序,所述至少一个处理器执行所述计算机程序时可实现上述xss漏洞的检测方法。
181.应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求书来限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1