越权检测方法和辅助装置与流程

文档序号:21462365发布日期:2020-07-14 16:41阅读:252来源:国知局
越权检测方法和辅助装置与流程

本发明涉及安全测试相关技术领域,具体涉及一种越权检测方法和辅助装置。



背景技术:

随着业务的拓展,应用数量越来越多,应用的复杂度也越来越大。众多安全问题中,逻辑漏洞是自动化扫描工具所难以覆盖到的,而越权便是逻辑漏洞中常见的一个问题。

越权大致可分为三种类型:未授权访问、垂直越权和水平越权。

目前,安全测试中的越权检测主要还是要依靠人力手动去测试,对于一些复杂的业务系统,需要在不同身份之间切换,且分析大量请求的过程不仅对人力的需求很大,同时容易漏掉一些越权逻辑漏洞。



技术实现要素:

为至少在一定程度上克服相关技术中存在的问题,本申请提供一种越权检测方法和辅助装置。

基于本申请的第一方面,本申请提供一种越权检测方法,包括:

对待检测系统进行预设置,使得进行越权检测时,角色信息可以自动认证;

创建用于进行越权检测的工作空间;

对工作空间进行配置,以便于确定测试范围和越权检测时可以进行角色信息替换;

从redis队列中取得测试流量,流入与所述测试流量匹配的工作空间;其中,所述测试流量为测试人员在点击待测功能时,通过流量传输装置传入服务端在经过身份校验后存入redis服务器中;

使用工作空间,对所述测试流量以不通身份进行重放,得到响应信息;存储所述响应信息。

可选的,还包括:

|通过websocket或js轮询实时展示所述测试流量在不同角色下的响应信息。

可选的,轮询实时监听到所述测试流量在不同角色下的响应信息时,对响应信息完全一样的条目进行高亮标识。

可选的,获取第一控制指令;

基于第一获取的控制指令,重放、过滤和/或刷新测试操作中的操作。

可选的,获取第二控制指令;

基于第二获取的控制指令,改变控制该工作空间的状态为开始、暂停或完成。

可选的,首页解析包括:

使用chromeheadless去打开这个首页地址;

通过预先配置的账号模拟登录,模拟点击菜单,并记录下来所有流量;

根据流量获取到该工作空间需要测试的范围及一些必要的配置信息。

可选的,所述对待检测系统进行预设置包括:

若待检测系统为接入统一认证的系统,通过管理员账号进行一定的预配置,以便在扫描时完成角色的自动认证。

可选的,实现自动认证的方式包括:

与统一认证系统打通,以使得无需特殊配置即可完成身份认证;

或者,模拟统一认证的登录过程,通过预先获取的账号配置,保证在越权检测时自动完成身份认证;

或者,手动录入待测角色的必要的认证信息。

可选的,包括:

通过预设的redis数据库存放一些全局变量以便实现多机器分布式部署;其中所述变量包括:全局的session信息、用户标识、要扫描的任务队列;

通过mongodb数据库存放关系表;其中,所述关系表包括:工作空间、工作空间配置、测试流量;

通过es数据库存放在测试过程中完整的请求响应信息。

基于本申请的第二方面,本申请提供越权检测辅助装置,其特征在于,包括:

预设模块,用于对待检测系统进行预设置,使得进行越权检测时,进行越权检测的角色信息可以自动认证;

创建模块,用于创建用于进行越权检测的工作空间;

配置模块,用于以便于确定测试范围和越权检测时可以进行角色信息替换;

测试模块,用于从redis队列中取得测试流量,流入与所述测试流量匹配的工作空间;使用工作空间,对所述测试流量以不通身份进行重放,得到响应信息;其中,所述测试流量为测试人员在点击待测功能时,通过流量传输装置传入服务端在经过身份校验后存入redis服务器;

存储模块,用于存储所述响应信息。

本发明采用以上技术方案,可以实现如下技术效果:

本申请提供的方案中,针对需要进行越权检测的系统,采用了最预设的服务器内创建工作空间并对工作空间进行配置,由工作空间进行越权检测,只需相关人员查询响应信息便可以得到对该系统的越权检测结果,如此,本申请提供的方案对于人力的需求更低,同时由于本申请提供的方案中,使用工作空间,对所述测试流量以不通身份进行重放,得到响应信息,而非由人进行越权检测,越权检测的过程中,工作空间会严格按照测试流量对系统以不通身份进行越权检测,得到响应信息不易,漏掉越权逻辑漏洞。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的一种越权检测方法的流程示意图;

图2是本发明实施例提供的一种越权检测方法的部分流程示意图;

图3是本发明实施例提供的一种越权检测方法中首页解析的流程示意图;

图4是本执行本申请提供的越权检测方法的系统的架构图:

图5是本申请提供的越权检测辅助装置的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将对本发明的技术方案进行详细的描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施方式,都属于本发明所保护的范围。

一般的系统,随着业务的拓展,应用数量越来越多,应用的复杂度也越来越大,随之而来的便是各种各样的逻辑漏洞,而越权便是逻辑漏洞中常见的一个问题。

越权大致可分为三种类型:未授权访问、垂直越权、水平越权。未授权访问实际上可归结于垂直越权。在一个系统中,通常会为一些用户分配上不同的权限。而如果系统内部的某个接口没有做权限校验,导致可以被任何人请求,则该接口是存在未授权访问的。而低权限用户如果可以请求不属于他的接口,则该请求是存在垂直越权问题的,例如普通用户可以请求管理员的“添加账号”功能这就是垂直越权。水平越权则是某个用户可以修改/查看其它用户的数据,比如用户a可以越权删除用户b的订单,这就是水平越权。

在现有的安全测试中,主要还是依靠人力去手动测试。对于垂直越权,在测试时需要以不同身份登录,使用低权限用户的认证信息去替换掉高权限用户下的请求中的认证信息,并查看该请求是否可以得到正确的响应。对于一些复杂的业务系统,需要在不同身份之间切换,分析大量请求的过程不仅对人力的需求很大,同时容易漏掉一些越权逻辑漏洞。为了解决上述问题本申请提供一种越权检测方法和辅助装置,并结余下属各个实施例对本申请提供的越权检测方法和辅助装置进行说明。

实施例

图1是本发明实施例提供的一种越权检测方法的流程示意图。参照图1,本申请提供的越权检测方法包括:

s101,对待检测系统进行预设置,使得进行越权检测时,角色信息可以自动认证;

需要说明的是,对于接入统一认证的系统,需要管理员进行一定的预配置,以便在扫描时完成角色的自动认证。

具体的,若待检测系统为接入统一认证的系统,通过管理员账号进行一定的预配置,以便在扫描时完成角色的自动认证。

实现自动认证的方式包括:

与统一认证系统打通,以使得无需特殊配置即可完成身份认证;或者,模拟统一认证的登录过程,通过预先获取的账号配置,保证在越权检测时自动完成身份认证;或者,手动录入待测角色的必要的认证信息。

102,创建用于进行越权检测的工作空间;

需要说明的是,本申请提供的方案中,同一个服务器可以同时对多个系统进行越权检测。即:本申请提供的方案中可以创建多个工作空间分别对多个系统进行检测。当然,本申请提供的方案中还可以针对同一个系统创建多个工作空间。即:本申请提供的方案中可以创建多个工作空间分别对同一个系统进行检测,将同一个系统的需要进行越权检测的部分,进行拆分,由对应工作空间进行相对应部分的越权检测。

s103,对工作空间进行配置,以便于确定测试范围和越权检测时可以进行角色信息替换;

需要说明的是,对工作间进行配置,指的是确定该工作空间需要进行越权检测的测试流量;具体的可通过host来确定该工作空间会接收哪些流量,为了测试时的请求进行身份替换而进行的配置包括两类,第一类是为了实现自动登陆而进行配置;第二类是直接录入认证信息。

为了实现自动登陆而进行配置的思路为:传入待测站点的首页地址,进行一定的解析从而读取到一些认证规则,并保存至该工作空间中

直接录入认证信息的思路为:直接录入请求头、请求体中必要的身份认证信息(一般来说就是cookie或者请求头中的token),同样的,该过程可通过一些插件方式自动实现。需要说明的是本部分中,配置的方法与步骤s101中预配置的方法类似,但是步骤s101是针对整个服务器进行配置,步骤s103,中仅仅是针对该工作空间进行配置。

s104,从redis队列中取得测试流量,流入与所述测试流量匹配的工作空间;其中,所述测试流量为测试人员在点击待测功能时,通过流量传输装置传入服务端在经过身份校验后存入redis服务器中;

s105,使用工作空间,对所述测试流量以不通身份进行重放,得到响应信息;

s106,存储所述响应信息。

本申请提供的方案中,针对需要进行越权检测的系统,采用了最预设的服务器内创建工作空间并对工作空间进行配置,由工作空间进行越权检测,只需相关人员查询响应信息便可以得到对该系统的越权检测结果,如此,本申请提供的方案对于人力的需求更低,同时由于本申请提供的方案中,使用工作空间,对所述测试流量以不通身份进行重放,得到响应信息,而非由人进行越权检测,越权检测的过程中,工作空间会严格按照测试流量对系统以不通身份进行越权检测,得到响应信息不易,漏掉越权逻辑漏洞。

图2是本发明实施例提供的一种越权检测方法的部分流程示意图。参照图2,本申请提供的越权检测方法包括:

进一步的,本申请提供的方案中,越权检测的方法还包括:|

s201,通过websocket或js轮询实时展示所述测试流量在不同角色下的响应信息。

如此设置,相关人员可以随时查看响应结果:便于相关人员及时发现越权逻辑漏洞。

具体的,轮询实时监听到所述测试流量在不同角色下的响应信息时,对响应信息完全一样的条目进行高亮标识。

当然本申请中高亮标识仅仅只是为了突出显示响应信息完全一样的条目,本申请提供的方案可以但不限于采用高亮标识。也可以通过字体类别、大小、粗细和颜色等多种方式进行突出显示以便于相关人员及时发现响应信息完全一样的条目。(需要说明的是,当出现响应信息完全一样的条目时,极有可能出现了越权)

s202,获取第一控制指令;

s203,基于第一获取的控制指令,重放、过滤和/或刷新测试操作中的操作。

如此设置,相关人员可以通过第一控制指令控制工作表空间进行重放、过滤和/或刷新测试等操作,以便于相关人员确定是否存在了越权逻辑漏洞。

s204,获取第二控制指令;

s205,基于第二获取的控制指令,改变控制该工作空间的状态为开始、暂停或完成。

如此设置,相关人员可以通过第一控制指令控制工作表空间进行重放、过滤和/或刷新测试等操作,以便于相关人员确定是否存在了越权逻辑漏洞。

图3是本发明实施例提供的一种越权检测方法中首页解析的流程示意图。参照图3,本申请提供的越权检测中首页解析包括:

s301,使用chromeheadless去打开这个首页地址;

s302,通过预先配置的账号模拟登录,模拟点击菜单,并记录下来所有流量;

s303,根据流量获取到该工作空间需要测试的范围及一些必要的配置信息。

为了方便配置,在配置工作空间时只传入了首页地址和要使用的账号信息。这就需要在后台根据首页地址解析出要测试的host列表以及实现自动登录的一些必要信息。因为现在的系统大部分都是前后端分离,以及多个系统嵌套,所以简单的从url中获取要测试的请求的host是行不通的。这里使用chromeheadless去打开这个首页url,并用预先配置的账号中的某个模拟登录进去,模拟点击里面的几个菜单,记录下来所有流量,取出host列表并进行去重以及黑名单过滤

具体的,本申请提供的方案中;

通过预设的redis数据库存放一些全局变量以便实现多机器分布式部署;其中所述变量包括:全局的session信息、用户标识、要扫描的任务队列;

通过mongodb数据库存放关系表;其中,所述关系表包括:工作空间、工作空间配置、测试流量;

通过es数据库存放在测试过程中完整的请求响应信息。

需要说明的是redis数据库、mongodb数据库和es数据库的特性不同,这3中数据库均具有自己的优势。

redis数据库支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。所以通过预设的redis数据库存放一些全局变量以便实现多机器分布式部署;其中所述变量包括:全局的session信息、用户标识、要扫描的任务队列;redis支持主从同步。

mongodb是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。所以通过mongodb数据库存放关系表;其中,所述关系表包括:工作空间、工作空间配置、测试流量;

elasticsearch简写es,es数据库是一个高扩展、开源的全文检索和分析引擎,它可以准实时地快速存储、搜索、分析海量的数据。所以通过es数据库存放在测试过程中完整的请求响应信息。以便于对响应信息进行分析。

图4是本执行本申请提供的越权检测方法的系统的架构图:参照图4,对本申请提供的越权检测方法进行进一步的说明:

图4是本执行本申请提供的越权检测方法的系统的架构图:参照图4,对本申请提供的越权检测方法进行进一步的说明:

本发明针对的系统主要有两种,便于实现批量自动登录的系统(一般就是接入统一认证的系统)和不方便批量实现自动登录的系统;针对便于实现批量自动登录的系统,在配置时只需要传入待测站点的首页地址并选好要使用的角色信息对于不方便批量实现自动登录的系统,在配置时需要配置host列表并录入要使用的角色的认证信息

一、预配置

对于接入统一认证的系统,需要管理员进行一定的预配置,以便在扫描时完成角色的自动认证。

实现自动认证的方式有两种,一种是与统一认证系统打通,这样无需特殊配置即可完成身份认证。另一种是模拟统一认证的登录过程,这样需要一定的账号配置比如账号密码才可保证在越权检测时自动完成身份认证

二、流量传输

为了能更好的覆盖整个系统或者系统内的某个模块,需要测试人员手动点击待测系统界面上的菜单。为了把流量实时传输至权限检测工具,需要用到流量传输装置41。包括但不限于burp插件、代理服务器、浏览器插件等。

以burp插件为例,为了能标识测试人员的身份,在加载插件后,所有的请求均会重定向至权限检查工具的登录页面,在登录成功后,权限检查工具会返回一个与该账号相关联的uuid,后续流量传输装置41下的所有流量都会带上这个uuid,以便权限检查工具能识别测试人员身份

权限检测工具在收到burp插件传来的流量后,将流量推入redis数据库43的队列中,由权限检测工具的后台服务消费

三、测试过程

测试时,需要为待测系统新建一个工作空间,工作空间可以关联上其他的一些信息,比如安全测试申请单、待测系统名称、待测系统部门等。

创建了工作空间后,需要为工作空间进行一定的配置。针对接入统一认证的系统,只需要录入待测系统的首页地址后,选择第一步预配置中的事先录入的几个不同的账号即可完成配置。而对于不方便批量实现自动登录的系统,需要手动输入待测系统的host列表,并录入不同账号的cookie、header等认证信息

之后通过开始、暂停、完成状态来控制该工作空间的状态

如果需要实时监控,可以进入该工作空间,使用监听按钮,通过websocket或js轮询实时监听到每个请求在不同角色下的响应信息。并对响应包完全一样的条目进行高亮标识。同时允许重放、过滤、刷新(相当于重新登录一遍待测系统)操作

四、技术细节-存储

用到了三个数据库:redis数据库43、mongodb数据库44、es数据库45

redis数据库43中存放一些全局变量以便实现多机器分布式部署。比如全局的session信息、用户标识(流量传输装置41登录时用到的uuid与登录成功的用户身份的关联关系)、要扫描的任务队列

mongodb数据库44用来存放一些关系表,比如工作空间、工作空间配置、流量包等

es数据库45中用来存放在测试过程中完整的请求响应包

五、技术细节-后台服务

越权检测服务器会将流量传输装置41传来的请求压入redis数据库43队列中,而后台服务为一个线程池,持续从该队列中取出待测请求,根据待测请求的host以及流量所属人流入与之对应的打开状态下的工作空间进行处理

六、技术细节-工作空间

工作空间会带有一个属性用来标识待测系统的系统类型,手动录入认证信息或统一认证或是其他类型的统一认证。根据系统类型的不同,关联上不同的角色信息。在扫描时,根据工作空间内的不同的系统类型,使用不同的角色认证流程,实现多个角色的扫描

七、技术细节-首页解析

为了方便配置,在配置工作空间时只传入了首页地址和要使用的账号信息。这就需要在后台根据首页地址解析出要测试的host列表以及实现自动登录的一些必要信息。因为现在的系统大部分都是前后端分离,以及多个系统嵌套,所以简单的从url中获取要测试的请求的host是行不通的。这里使用chromeheadles数据库45s去打开这个首页url,并用预先配置的账号中的某个模拟登录进去,模拟点击里面的几个菜单,记录下来所有流量,取出host列表并进行去重以及黑名单过滤

八、技术细节-重放

为了便于复测及验证,添加了重放功能。使用之前存入es数据库45中的请求包,重新走一遍测试流程。

图5是本申请提供的越权检测辅助装置的结构示意图,参照图5,本申请提供的越权检测辅助装置包括:

预设模块501,用于对待检测系统进行预设置,使得进行越权检测时,进行越权检测的角色信息可以自动认证;

创建模块502,用于创建用于进行越权检测的工作空间;

配置模块503,用于以便于确定测试范围和越权检测时可以进行角色信息替换;

测试模块504,用于从redis队列中取得测试流量,流入与所述测试流量匹配的工作空间;使用工作空间,对所述测试流量以不通身份进行重放,得到响应信息;其中,所述测试流量为测试人员在点击待测功能时,通过流量传输装置传入服务端在经过身份校验后存入redis服务器;

存储模块505,用于存储所述响应信息。

本发明实施例提供的越权检测辅助装置的具体执行步骤,可以参照上述相关实施例,在此不再一一赘述。

本发明实施例还提供了一种存储介质,该存储介质存储有计算机程序,计算机程序被处理器执行时,能够实现本发明实施例中越权检测方法中的各个步骤,其中,该方法应用于终端设备。

可以理解的是,上述各实施例中相同或相似部分可以相互参考,在一些实施例中未详细说明的内容可以参见其他实施例中相同或相似的内容。

需要说明的是,在本发明的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是指至少两个。

流程示意图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。

应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。

上述提到的存储介质可以是只读存储器,磁盘或光盘等。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

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