发明内容
基于此,本发明的目的在于提出一种基于流量的业务逻辑漏洞检测方法及其系统,该方法根据收集的用户流量,对流量进行权限等级标记,根据权限等级选择进入垂直越权漏洞检测或者水平越权漏洞检测,不仅能实现垂直越权漏洞检测,还能同时实现水平越权漏洞检测。具体采用的技术方案如下:
一种基于流量的业务逻辑漏洞检测方法,包括以下步骤:
收集用户流量;
对所述用户流量进行权限等级标记;
判断所述用户流量对应的权限等级;若所述权限等级相同,进入水平越权漏洞检测;否则,进入垂直越权漏洞检测。
优选的,所述水平越权漏洞检测或者所述垂直越权漏洞检测包括以下步骤:
获取用户的操作接口;
获取目标接口;
对所述目标接口进行cookie替换访问;
根据返回值判断是否存在越权。
优选的,所述垂直越权漏洞检测包括以下步骤:
通过将所述用户流量保存在对应用户的集合中,获取所述用户的操作接口;
通过获取所述集合中,高权限用户独有的操作接口得到所述目标接口;
将登入所述目标接口的登录凭据由高权限cookie替换为低权限cookie后进行访问;
判断所述高权限cookie对应的返回值与所述低权限cookie对应的返回值是否相等;如果相等,则表明存在垂直越权。
优选的,所述水平越权漏洞检测包括以下步骤:
通过将所述用户流量保存在对应用户的集合中,获取所述用户的操作接口;
通过获取所述集合中,所述用户共享的操作接口得到所述目标接口;
利用所述用户对应的cookie访问所述目标接口,得到所述用户对应的正常返回值;
将某一所述用户对应的cookie替换为另一所述用户的cookie访问所述目标接口,得到替换返回值;
判断所述用户对应的正常返回值是否相等、并判断所述替换返回值与该用户对应的正常返回值是否相等;如果所述正常返回值不相等,且所述替换返回值与该用户对应的正常返回值相等,则表明存在水平越权。
一种基于流量的业务逻辑漏洞检测系统,包括以下模块:
流量收集模块,用于收集用户流量;
权限标记模块,用于对所述用户流量进行权限等级标记;
水平越权漏洞检测模块,用于对水平越权漏洞进行检测;
垂直越权漏洞检测模块,用于对垂直越权漏洞进行检测;
判断模块:用于判断所述用户流量对应的权限等级;若所述权限等级相同,进入所述水平越权漏洞检测模块;否则,进入所述垂直越权漏洞检测模块。
优选的,所述水平越权漏洞检测模块或者所述垂直越权漏洞检测模块包括以下单元:
操作接口获取单元,用于获取用户的操作接口;
目标接口获取单元,用于获取目标接口;
访问单元,用于对所述目标接口进行cookie替换访问;
越权判断单元,用于根据返回值判断是否存在越权。
优选的,在所述垂直越权漏洞检测模块中,所述操作接口获取单元通过将所述用户流量保存在对应用户的集合中,获取所述用户的操作接口;所述目标接口获取单元通过获取所述集合中,高权限用户独有的操作接口得到所述目标接口;所述访问单元将登入所述目标接口的登录凭据由高权限cookie替换为低权限cookie后进行访问;所述越权判断单元判断所述高权限cookie对应的返回值与所述低权限cookie对应的返回值是否相等;如果相等,则表明存在垂直越权。
优选的,在所述水平越权漏洞检测模块中,所述操作接口获取单元通过将所述用户流量保存在对应用户的集合中,获取所述用户的操作接口;所述目标接口获取单元通过获取所述集合中,所述用户共享的操作接口得到所述目标接口;所述访问单元利用所述用户对应的cookie访问所述目标接口,得到所述用户对应的正常返回值,并将某一所述用户对应的cookie替换为另一所述用户的cookie,得到替换返回值;所述越权判断单元判断所述用户对应的正常返回值是否相等、并判断所述替换返回值与该用户对应的正常返回值是否相等;如果所述正常返回值不相等,且所述替换返回值与该用户对应的正常返回值相等,则表明存在水平越权。
相比与背景技术,本发明提供的一种基于流量的业务逻辑漏洞检测方法,采用收集流量,标记流量权限的方法,根据权限等级选择进入垂直越权漏洞检测或者水平越权漏洞检测,同时兼顾水平和垂直越权漏洞检测,并且误报和漏洞均偏低。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,并可依照说明书的内容予以实施,以下以本发明的较佳实施例并配合附图详细说明如后。本发明的具体实施方式由以下实施例及其附图详细给出。
具体实施方式
下面,结合附图以及具体实施方式,对本发明做进一步描述,需要说明的是,在不相冲突的前提下,以下描述的各实施例之间或各技术特征之间可以任意组合形成新的实施例。
如图1所示,本发明提供了一种基于流量的业务逻辑漏洞检测方法,包括以下步骤:
步骤S1:收集用户流量;
步骤S2:对所述用户流量进行权限等级标记;
步骤S3:判断所述用户流量对应的权限等级;
步骤S4:水平越权漏洞检测;
步骤S5:垂直越权漏洞检测;
当步骤S3判断所述权限等级相同,进入步骤S4:水平越权漏洞检测;否则,进入步骤S5:垂直越权漏洞检测。
在一个具体实施例中,假设存在两个用户,分别为用户A和用户B。步骤S1具体为,用户A和用户B登录不同的账号,挂上指定的代理,正常的访问某应用系统时,漏洞检测引擎通过代理收集用户A和用户B访问该应用系统产生的全部流量。步骤S2具体为,流量收集完成后,对该用户流量进行根据用户的权限等级进行权限等级标记。步骤S3、S4、S5具体为,如果用户A和用户B标记的权限等级不同,则进入垂直越权漏洞检测,如果用户A和用户B标记的权限等级相同,则进入水平越权漏洞检测。
进一步的,所述水平越权漏洞检测或者所述垂直越权漏洞检测包括以下步骤:
获取用户的操作接口:获取需要判断是否发生越权的用户的操作接口;
获取目标接口:根据操作接口获取目标接口;
对所述目标接口进行cookie替换访问:当正常访问目标接口后,替换需要判断是否发生越权的用户的cookie,再次访问目标接口;
根据返回值判断是否存在越权:根据正常访问目标接口得到的返回值和替换cookie后访问目标接口得到的返回值进行比较,判断是否存在越权。
在一个实施例中,进一步的,如图3所示,所述垂直越权漏洞检测具体包括以下步骤:
步骤S51:保存用户流量至用户的集合中,获取操作接口,具体为,通过将所述用户流量保存在对应用户的集合中,获取所述用户的操作接口;
步骤S52:获取高权限用户独有的操作接口作为目标接口,具体为,通过获取所述集合中,高权限用户独有的操作接口,并得到所述目标接口;
步骤S53:替换cookie访问目标接口,具体为,将登入所述目标接口的登录凭据由高权限cookie替换为低权限cookie后进行访问;
步骤S54:判断访问后的返回值是否相等,具体为,判断所述高权限cookie对应的返回值与所述低权限cookie对应的返回值是否相等;如果相等,则表明存在垂直越权。
本实施例中,同样假设存在两个用户,分别为用户A和用户B,且权限等级为1-10,数值越大权限等级越大。假设用户A标记权限等级为2,用户B标记权限等级为1,对其用户A、B对应的用户流量的权限等级也分别为2、1。用户A的所有用户流量保存在集合Ra,Ra中包含了用户A所有的操作接口A1,A2,A3…An,用户B的所有用户流量保存在集合Rb,Rb中包含了用户B所有的操作接口B1,B2,B3…Bn。步骤S52获取高权限用户独有的操作接口,即用户A的接口集合Ra中用户B的接口集合Rb中不存在的接口,即为Rc,则Rc=Ra–(Ra∩Rb),Rc即为高权限用户独有的操作接口,称之为目标接头。如果不存在逻辑漏洞,低权限用户则没有权限访问目标接头。假设Rc中接口为C1,C2,C3…Cn,登录凭据都是用户A的cookie为CookieA。步骤S53包括遍历Rc中的C1目标接口进行交换cookie重放,例如用户A正常重新访问C1目标接头,得到返回值RES_a1,然后用户A将访问C1目标接口的登录凭据替换为用户B的cookie为CookieB,得到返回值RES_b1。步骤S54:如果RES_a1=RES_b1,则代表低权限用户可以访问高权限用户独有的操作接口,即C1目标接口存在漏洞;否则,C1目标接口不存在漏洞。按照此方法,可以遍历Rc中的所有的目标接头,即对所有请求(目标接口)进行遍历检测、扫描。
在一个实施例中,进一步的,如图2所示,所述水平越权漏洞检测包括以下步骤:
步骤S41:保存用户流量至用户的集合中,获取操作接口;具体为,通过将所述用户流量保存在对应用户的集合中,获取所述用户的操作接口;
步骤S42:获取用户共享的操作接口作为目标接口,具体为,通过获取所述集合中,所述用户共享的操作接口得到所述目标接口;
步骤S43:利用所述用户对应的cookie访问所述目标接口,得到所述用户对应的正常返回值;将某一所述用户对应的cookie替换为另一所述用户的cookie访问所述目标接口,得到替换返回值;
步骤S44:判断所述用户对应的正常返回值是否相等;如果不相等,进入步骤S45;否则,目标价接口不存在漏洞。
步骤S45:判断所述替换返回值与该用户对应的正常返回值是否相等;如果相等,则表明存在水平越权;否则不存在漏洞。
本实施例中,同样假设存在两个用户,为用户A和用户B,且权限等级为1-10,数值越大权限等级越大。假设用户A标记权限等级为1,用户B标记权限等级为1,则用户A的权限等级等于用户B的权限等级,用户A、B对应的用户流量的权限等级也都为1。用户A的所有用户流量保存在集合Ra,Ra中包含了用户A所有的接口A1,A2,A3…An,用户B的所有用户流量保存在集合Rb,Rb中包含了用户B所有的接口B1,B2,B3…Bn。步骤S42获取用户共享的操作接口作为目标接口为,获取用户A和用户B相同的接口Rd,则Rd=Ra∩Rb。假设Rd中的目标接口为D1,D2,D3…Dn。Rd中的接口是用户A和用户B共享的目标接口,以D1目标接口为例,步骤S43包括,用户A访问D1目标接口时传递的数据为data_a,使用的cookie为cookie_a,接收到的返回为res_a;用户B访问D1目标接口时传递的数据为data_b,使用的cookie为cookie_b,接收到的返回为res_b。接下来,交换cookie进行访问,即用户A使用用户B的cookie访问D1目标接口,传递的数据不变,为data_a,只有cookie变为cookie_b,假设此时接收到的返回值为res_fa。步骤S44具体为res_a与res_b是否相等的判断,如果相等,则D1目标接头不存在漏洞;否则,则进入步骤S45的判断,即判断res_a与res_fa是否相等,如果res_a=res_fa则代表接D1目标接口存在水平越权漏洞,导致cookie_a和cookie_b访问的结果相同,则代表用户B可以访问用户A的接口;如果res_a!=res_fa,则表明D1目标接头不存在漏洞。同样可以对Rd中所有的目标接口进行检测、扫描逻辑漏洞。
上述实施例中,实际应用中操作接口和目标接头可以为用户资料,订单等等业务信息对应的访问接口。
基于上述一种基于流量的业务逻辑漏洞检测方法,本发明还提供了一种基于流量的业务逻辑漏洞检测系统,如图4所示,包括流量收集模块11、权限标记模块12、判断模块13、水平越权漏洞检测模块14、垂直越权漏洞检测模块15。
其中,流量收集模块11,用于收集用户流量;权限标记模块12,用于对所述用户流量进行权限等级标记;水平越权漏洞检测模块14,用于对水平越权漏洞进行检测;垂直越权漏洞检测模块15,用于对垂直越权漏洞进行检测;判断模块13:用于判断所述用户流量对应的权限等级;若所述权限等级相同,进入所述水平越权漏洞检测模块;否则,进入所述垂直越权漏洞检测模块。
进一步的,所述水平越权漏洞检测模块或者所述垂直越权漏洞检测模块包括以下单元:
操作接口获取单元,用于获取用户的操作接口;
目标接口获取单元,用于获取目标接口;
访问单元,用于对所述目标接口进行cookie替换访问;
越权判断单元,用于根据返回值判断是否存在越权。
进一步的,在所述垂直越权漏洞检测模块中,所述操作接口获取单元通过将所述用户流量保存在对应用户的集合中,获取所述用户的操作接口;所述目标接口获取单元通过获取所述集合中,高权限用户独有的操作接口得到所述目标接口;所述访问单元将登入所述目标接口的登录凭据由高权限cookie替换为低权限cookie后进行访问;所述越权判断单元判断所述高权限cookie对应的返回值与所述低权限cookie对应的返回值是否相等;如果相等,则表明存在垂直越权,否则不存在漏洞。
进一步的,在所述水平越权漏洞检测模块中,所述操作接口获取单元通过将所述用户流量保存在对应用户的集合中,获取所述用户的操作接口;所述目标接口获取单元通过获取所述集合中,所述用户共享的操作接口得到所述目标接口;所述访问单元利用所述用户对应的cookie访问所述目标接口,得到所述用户对应的正常返回值,即用户利用正确的cookie进行访问后的返回值,并将某一所述用户对应的cookie替换为另一所述用户的cookie,得到替换返回值;所述越权判断单元判断所述用户对应的正常返回值是否相等、并判断所述替换返回值与该用户对应的正常返回值是否相等;如果所述正常返回值不相等,且所述替换返回值与该用户对应的正常返回值相等,则表明存在水平越权;否则不存在越权。
以上,仅为本发明的较佳实施例而已,并非对本发明作任何形式上的限制;凡本行业的普通技术人员均可按说明书附图所示和以上而顺畅地实施本发明;但是,凡熟悉本专业的技术人员在不脱离本发明技术方案范围内,利用以上所揭示的技术内容而做出的些许更动、修饰与演变的等同变化,均为本发明的等效实施例;同时,凡依据本发明的实质技术对以上实施例所作的任何等同变化的更动、修饰与演变等,均仍属于本发明的技术方案的保护范围之内。