一种接口的权限测试方法、系统、设备以及介质与流程

文档序号:28742667发布日期:2022-02-07 22:36阅读:296来源:国知局
一种接口的权限测试方法、系统、设备以及介质与流程

1.本发明涉及测试领域,具体涉及一种接口的权限测试方法、系统、设备以及存储介质。


背景技术:

2.越权访问(broken access control,简称bac)是web应用程序中一种常见的漏洞,由于其存在范围广、危害大,被owasp列为web应用十大安全隐患的第二名。该漏洞是指应用在检查授权时存在纰漏,使得攻击者在获得低权限用户账户后,利用一些方式绕过权限检查,访问或者操作其他用户或者更高权限。越权漏洞的成因主要是因为开发人员在对数据进行增、删、改、查询时对客户端请求的数据过分相信而遗漏了权限的判定,一旦权限验证不充分,就易致越权漏洞。越权访问漏洞主要分为横向越权、纵向越权。
3.为减轻安全测评工程师的工作量,提高检测效率,工程师通常会开发自动化测试工具或脚本进行越权问题的检测。纵向越权问题检测只需要考虑接口地址、不同权限用户的认证信息即可,不需要考虑资源数据,因此只需要一个接口请求,通过对比响应内容便可判断该接口是否存在纵向越权问题。而横向越权考虑的不止这一点,还需要考虑不同权限的用户是否拥有同一个资源的访问权限,所以横向越权的检测更加复杂。
4.而现有的接口的权限检测方法仅适用于纵向越权问题,对于复杂的横向越权问题几乎无法检测,因此对于实际的安全测评来说,只能协助覆盖接口的纵向越权部分,剩下的横向越权还是要由安全测评工程师手动完成,测试效率较低。


技术实现要素:

5.有鉴于此,为了克服上述问题的至少一个方面,本发明实施例提出一种接口的权限测试方法,包括以下步骤:
6.获取接口权限表,其中所述接口权限表中记录了每一个待测接口的多个测试参数;
7.获取每一个待测接口的多个参数中的若干个参数对应的值;
8.利用每一个待测接口的多个参数和所述若干个参数对应的值生成请求并发送到对应的待测接口;
9.响应于接收到对应的待测接口返回的响应,获取并根据所述对应的待测接口的匹配规则和预期响应对所述对应的待测接口返回的响应进行校验。
10.在一些实施例中,获取每一个待测接口的多个参数中的若干个参数对应的值,进一步包括:
11.将若干个参数对应的值添加到所述接口权限表中以从所述接口权限表中获取所述若干个参数对应的值;或,
12.向预设接口发送辅助请求以获取所述若干个参数对应的值。
13.在一些实施例中,向预设接口发送辅助请求以获取所述若干个参数对应的值,进
一步包括:
14.通过表达式对所述预设接口返回的响应进行筛选以得到所述若干个参数对应的值。
15.在一些实施例中,获取预期响应,进一步包括:
16.将所述预期响应添加到所述接口权限表中以从所述接口权限表中获取所述预期响应;或,
17.向预设接口发送辅助请求以获取所述预期响应。
18.基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种接口的权限测试系统,包括:
19.第一获取模块,配置为获取接口权限表,其中所述接口权限表中记录了每一个待测接口的多个测试参数;
20.第二获取模块,配置为获取每一个待测接口的多个参数中的若干个参数对应的值;
21.请求模块,配置为利用每一个待测接口的多个参数和所述若干个参数对应的值生成请求并发送到对应的待测接口;
22.校验模块,配置为响应于接收到对应的待测接口返回的响应,获取并根据所述对应的待测接口的匹配规则和预期响应对所述对应的待测接口返回的响应进行校验。
23.在一些实施例中,第二获取模块还配置为:
24.将若干个参数对应的值添加到所述接口权限表中以从所述接口权限表中获取所述若干个参数对应的值;或,
25.向预设接口发送辅助请求以获取所述若干个参数对应的值。
26.在一些实施例中,第二获取模块还配置为:
27.通过表达式对所述预设接口返回的响应进行筛选以得到所述若干个参数对应的值。
28.在一些实施例中,校验模块还配置为:
29.将所述预期响应添加到所述接口权限表中以从所述接口权限表中获取所述预期响应;或,
30.向预设接口发送辅助请求以获取所述预期响应。
31.基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种计算机设备,包括:
32.至少一个处理器;以及
33.存储器,所述存储器存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时执行以下步骤:
34.获取接口权限表,其中所述接口权限表中记录了每一个待测接口的多个测试参数;
35.获取每一个待测接口的多个参数中的若干个参数对应的值;
36.利用每一个待测接口的多个参数和所述若干个参数对应的值生成请求并发送到对应的待测接口;
37.响应于接收到对应的待测接口返回的响应,获取并根据所述对应的待测接口的匹
配规则和预期响应对所述对应的待测接口返回的响应进行校验。
38.在一些实施例中,获取每一个待测接口的多个参数中的若干个参数对应的值,进一步包括:
39.将若干个参数对应的值添加到所述接口权限表中以从所述接口权限表中获取所述若干个参数对应的值;或,
40.向预设接口发送辅助请求以获取所述若干个参数对应的值。
41.在一些实施例中,向预设接口发送辅助请求以获取所述若干个参数对应的值,进一步包括:
42.通过表达式对所述预设接口返回的响应进行筛选以得到所述若干个参数对应的值。
43.在一些实施例中,获取预期响应,进一步包括:
44.将所述预期响应添加到所述接口权限表中以从所述接口权限表中获取所述预期响应;或,
45.向预设接口发送辅助请求以获取所述预期响应。
46.基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时执行以下步骤:
47.获取接口权限表,其中所述接口权限表中记录了每一个待测接口的多个测试参数;
48.获取每一个待测接口的多个参数中的若干个参数对应的值;
49.利用每一个待测接口的多个参数和所述若干个参数对应的值生成请求并发送到对应的待测接口;
50.响应于接收到对应的待测接口返回的响应,获取并根据所述对应的待测接口的匹配规则和预期响应对所述对应的待测接口返回的响应进行校验。
51.在一些实施例中,获取每一个待测接口的多个参数中的若干个参数对应的值,进一步包括:
52.将若干个参数对应的值添加到所述接口权限表中以从所述接口权限表中获取所述若干个参数对应的值;或,
53.向预设接口发送辅助请求以获取所述若干个参数对应的值。
54.在一些实施例中,向预设接口发送辅助请求以获取所述若干个参数对应的值,进一步包括:
55.通过表达式对所述预设接口返回的响应进行筛选以得到所述若干个参数对应的值。
56.在一些实施例中,获取预期响应,进一步包括:
57.将所述预期响应添加到所述接口权限表中以从所述接口权限表中获取所述预期响应;或,
58.向预设接口发送辅助请求以获取所述预期响应。
59.本发明具有以下有益技术效果之一:本发明提出的方案可以通过接口请求参数定制和响应匹配规则定制,实现接口横纵向越权的精确检测,代替复杂横向越权问题的手动
检测,提高了接口越权问题的自动化程度和覆盖率、检测效率。
附图说明
60.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
61.图1为本发明的实施例提供的接口的权限测试方法的流程示意图;
62.图2为本发明的实施例提供的接口的权限测试系统的结构示意图;
63.图3为本发明的实施例提供的计算机设备的结构示意图;
64.图4为本发明的实施例提供的计算机可读存储介质的结构示意图。
具体实施方式
65.为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
66.需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
67.在本发明的实施例中,接口越权指攻击者在获得低权限用户账户后,利用一些方式绕过权限检查,能够访问或者操作其他用户或者更高权限。
68.横向越权指水平越权,指攻击者尝试访问与他拥有相同权限的其他用户资源。例如,用户a和用户b属于同一角色,拥有相同的权限等级,他们能获取自己的私有数据(数据a和数据b),但如果系统只验证了能访问数据的角色,而没有对数据做细分或者校验,导致用户a能访问到用户b的数据(数据b),那么用户a访问数据b的这种行为就叫做水平越权访问。
69.纵向越权指垂直越权,又叫做权限提升攻击,指的是一个低级别攻击者尝试访问高级别用户的资源。由于后台应用没有做权限控制,或仅仅在菜单、按钮上做了权限控制,导致恶意用户只要猜测其他管理页面的url或者敏感的参数信息,就可以访问或控制其他角色拥有的数据或页面,达到权限提升的目的。
70.python:是一种跨平台的计算机程序设计语言,是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。
71.requests:是用python语言编写的,基于urllib3来改写的,采用apache2licensed来源协议的http库。
72.url:在www上,每一信息资源都有统一的且在网上唯一的地址,该地址就叫url(uniform resource locator,统一资源定位器),它是www的统一资源定位标志,就是指网络地址。
73.根据本发明的一个方面,本发明的实施例提出一种接口的权限测试方法,如图1所示,其可以包括步骤:
74.s1,获取接口权限表,其中所述接口权限表中记录了每一个待测接口的多个测试
参数;
75.s2,获取每一个待测接口的多个参数中的若干个参数对应的值;
76.s3,利用每一个待测接口的多个参数和所述若干个参数对应的值生成请求并发送到对应的待测接口;
77.s4,响应于接收到对应的待测接口返回的响应,获取并根据所述对应的待测接口的匹配规则和预期响应对所述对应的待测接口返回的响应进行校验。
78.本发明提出的方案通过该方案可以通过接口请求参数定制和响应匹配规则定制,实现接口横纵向越权的精确检测,代替复杂横向越权问题的手动检测,提高了接口越权问题的自动化程度和覆盖率、检测效率。
79.在一些实施例中,步骤s1中,获取接口权限表,其中所述接口权限表中记录了每一个待测接口的多个测试参数,具体的,接口权限表中的每个元素对应每个待测接口,而待测接口为字典格式,包括name、keyword、request等字段。
80.其中name字段表示接口名称;keyword表示横向越权或者纵向越权的测试关键字;request字段表示接口请求,包括url、method、header、body等接口请求字段。
81.在一些实施例中,获取每一个待测接口的多个参数中的若干个参数对应的值,进一步包括:
82.将若干个参数对应的值添加到所述接口权限表中以从所述接口权限表中获取所述若干个参数对应的值;或,
83.向预设接口发送辅助请求以获取所述若干个参数对应的值。
84.在一些实施例中,向预设接口发送辅助请求以获取所述若干个参数对应的值,进一步包括:
85.通过表达式对所述预设接口返回的响应进行筛选以得到所述若干个参数对应的值。
86.具体的,可以通过请求参数定制模块获取若干个参数的值,即自定义接口请求参数的模块,该模块提供了input或remote两种方式。其中input为变量定制方式,只需要在接口测试前给指定变量赋值,那么在接口测试时,这些变量就会自动填充到api或body的所需参数中;remote为请求定制方式,通过辅助请求获取响应结果,通过表达式组装响应结果并填充到api或body的所需参数中。例如,待测试接口发送请求时需要user id,而user id需要通过另一个接口获取,则可以利用remote方式向另一个接口发送辅助请求,以获取user id,由于另一个接口返回的响应可能不仅仅只包含user id,需要利用表达式从返回的响应中user id筛选出来。
87.其中,接口权限表中还可以记录每一个待测接口对应的若干个参数对应的值,这样,当对该接口进行测试时,可以通过input的方式将参数对应的值填充到api或body中。或者,通过remote方式向预设接口发送辅助请求,以获取该待测接口对应的若干个参数所对应的值。
88.在一些实施例中,步骤s3中,利用每一个待测接口的多个参数和所述若干个参数对应的值生成请求并发送到对应的待测接口,具体的,可以利用请求发送模块(即发送接口请求的模块)发送请求,该模块封装了python的requests库,通过读取每个接口request字段的内容,包括url、method、header、body等字段,将接口请求发送出去。
89.其中url字段表示请求路径,包括protocol、api等字段,protocol表示请求协议,一般为http或https,该字段不可为空;api表示请求接口路径,当接口路径需要额外参数值时,可通过input或remote两种方式指定。
90.其中method字段表示请求方法,一般为http方法,如get、post、put、delete等,该字段不可为空。
91.其中header字段表示请求头,即通过该字段可补充请求头内容,该字段可为空,也可补充如content-type头等内容。
92.其中body字段为请求体,即通过该字段可补充请求体的内容,该字段可为空,也可通过input或remote两种方式指定。
93.该模块分为主请求发送和辅助请求发送,其中主请求主要发送被测接口的请求,得到的响应用来做结果校验;而辅助请求主要为remote参数定制方式提供请求发送途径,得到的响应经过处理可放入主请求的api或body参数,或者放入匹配规则中作为表达式中的一个元素进行响应校验。一般横向越权问题需要将主请求响应结果与辅助请求响应结果进行对比,才能得到精确的权限测试结果。
94.在一些实施例中,获取预期响应,进一步包括:
95.将所述预期响应添加到所述接口权限表中以从所述接口权限表中获取所述预期响应;或,
96.向预设接口发送辅助请求以获取所述预期响应。
97.具体的,接口权限表中还具有response字段,该字段为期望响应的字段,该字段为数组格式,根据不同角色(用户)记录不同的期望响应。因此,可以通过接口权限表查询待测试接口的期望响应并与返回的响应进行对比。
98.在一些实施例中,接口权限表中还具有before字段,before表示辅助请求,用来获取响应比对数据,当待测试接口具有该字段时,可以通过remote方式发送辅助请求以获取期望响应。例如对于获取用户信息而言,期望响应为用户a的用户信息,则可以向利用remote方式向待测试即可获取a的信息,再将a的用户信息作为期望响应。需要说明的是,此时发送的辅助请求和发送的主请求中只有参数的值不同,其余参数均相同。
99.在一些实施例中,步骤s4中,响应于接收到对应的待测接口返回的响应,获取并根据所述对应的待测接口的匹配规则和预期响应对所述对应的待测接口返回的响应进行校验,具体的,可以利用匹配规则定制模块(即可自定义匹配规则的模块)制定匹配规则,通过response字段自定义匹配规则,匹配规则为python表达式,可任意自定义符合python语法的表达式,例如包含、大于、小于等等,表达式的执行结果会放入响应校验模块,来明确该接口是否具备权限。
100.其中,响应校验模块,即校验响应结果是否符合预期的模块,通过执行每个接口定制的匹配规则,匹配得到的响应数据,若符合预期响应,则返回true,否则返回false。每个接口的校验结果都保存在缓存中,当所有接口校验完毕后,把每个接口的name、keyword以及校验结果组装后统一输出。
101.例如,对于待测试接口m测试其是否横向越权,则可以将期望响应
‑‑
用户a的信息和实际返回的用户b的信息进行对比,判断用户信息b中是否存在用户a的信息,若不存在则说明没有横向越权。
102.基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种接口的权限测试系统400,如图2所示,包括:
103.第一获取模块401,配置为获取接口权限表,其中所述接口权限表中记录了每一个待测接口的多个测试参数;
104.第二获取模块402,配置为获取每一个待测接口的多个参数中的若干个参数对应的值;
105.请求模块403,配置为利用每一个待测接口的多个参数和所述若干个参数对应的值生成请求并发送到对应的待测接口;
106.校验模块404,配置为响应于接收到对应的待测接口返回的响应,获取并根据所述对应的待测接口的匹配规则和预期响应对所述对应的待测接口返回的响应进行校验。
107.在一些实施例中,第二获取模块402还配置为:
108.将若干个参数对应的值添加到所述接口权限表中以从所述接口权限表中获取所述若干个参数对应的值;或,
109.向预设接口发送辅助请求以获取所述若干个参数对应的值。
110.在一些实施例中,第二获取模块402还配置为:
111.通过表达式对所述预设接口返回的响应进行筛选以得到所述若干个参数对应的值。
112.在一些实施例中,校验模块404还配置为:
113.将所述预期响应添加到所述接口权限表中以从所述接口权限表中获取所述预期响应;或,
114.向预设接口发送辅助请求以获取所述预期响应。
115.本发明提出的方案通过该方案可以通过接口请求参数定制和响应匹配规则定制,实现接口横纵向越权的精确检测,代替复杂横向越权问题的手动检测,提高了接口越权问题的自动化程度和覆盖率、检测效率。
116.基于同一发明构思,根据本发明的另一个方面,如图3所示,本发明的实施例还提供了一种计算机设备501,包括:
117.至少一个处理器520;以及
118.存储器510,存储器510存储有可在处理器上运行的计算机程序511,处理器520执行程序时执行以下步骤:
119.s1,获取接口权限表,其中所述接口权限表中记录了每一个待测接口的多个测试参数;
120.s2,获取每一个待测接口的多个参数中的若干个参数对应的值;
121.s3,利用每一个待测接口的多个参数和所述若干个参数对应的值生成请求并发送到对应的待测接口;
122.s4,响应于接收到对应的待测接口返回的响应,获取并根据所述对应的待测接口的匹配规则和预期响应对所述对应的待测接口返回的响应进行校验。
123.在一些实施例中,获取每一个待测接口的多个参数中的若干个参数对应的值,进一步包括:
124.将若干个参数对应的值添加到所述接口权限表中以从所述接口权限表中获取所
述若干个参数对应的值;或,
125.向预设接口发送辅助请求以获取所述若干个参数对应的值。
126.在一些实施例中,向预设接口发送辅助请求以获取所述若干个参数对应的值,进一步包括:
127.通过表达式对所述预设接口返回的响应进行筛选以得到所述若干个参数对应的值。
128.在一些实施例中,获取预期响应,进一步包括:
129.将所述预期响应添加到所述接口权限表中以从所述接口权限表中获取所述预期响应;或,
130.向预设接口发送辅助请求以获取所述预期响应。
131.本发明提出的方案通过该方案可以通过接口请求参数定制和响应匹配规则定制,实现接口横纵向越权的精确检测,代替复杂横向越权问题的手动检测,提高了接口越权问题的自动化程度和覆盖率、检测效率。
132.基于同一发明构思,根据本发明的另一个方面,如图4所示,本发明的实施例还提供了一种计算机可读存储介质601,计算机可读存储介质601存储有计算机程序指令610,计算机程序指令610被处理器执行时执行以下步骤:
133.s1,获取接口权限表,其中所述接口权限表中记录了每一个待测接口的多个测试参数;
134.s2,获取每一个待测接口的多个参数中的若干个参数对应的值;
135.s3,利用每一个待测接口的多个参数和所述若干个参数对应的值生成请求并发送到对应的待测接口;
136.s4,响应于接收到对应的待测接口返回的响应,获取并根据所述对应的待测接口的匹配规则和预期响应对所述对应的待测接口返回的响应进行校验。
137.在一些实施例中,获取每一个待测接口的多个参数中的若干个参数对应的值,进一步包括:
138.将若干个参数对应的值添加到所述接口权限表中以从所述接口权限表中获取所述若干个参数对应的值;或,
139.向预设接口发送辅助请求以获取所述若干个参数对应的值。
140.在一些实施例中,向预设接口发送辅助请求以获取所述若干个参数对应的值,进一步包括:
141.通过表达式对所述预设接口返回的响应进行筛选以得到所述若干个参数对应的值。
142.在一些实施例中,获取预期响应,进一步包括:
143.将所述预期响应添加到所述接口权限表中以从所述接口权限表中获取所述预期响应;或,
144.向预设接口发送辅助请求以获取所述预期响应。
145.本发明提出的方案通过该方案可以通过接口请求参数定制和响应匹配规则定制,实现接口横纵向越权的精确检测,代替复杂横向越权问题的手动检测,提高了接口越权问题的自动化程度和覆盖率、检测效率。
146.最后需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。
147.此外,应该明白的是,本文的计算机可读存储介质(例如,存储器)可以是易失性存储器或非易失性存储器,或者可以包括易失性存储器和非易失性存储器两者。
148.本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个系统的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。
149.以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
150.应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
151.上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
152.本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
153.所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1