为了更有效地发现问题,需要在尽可能少的请求中发现尽可能多的问题。因此,当获得请求
时,并非所有请求都按原样处理,而是采用批量获取,然后根据接口名称对其进行分组,对每
一个请求按其返回的内容进行优先级排序,基本的优先级规则是:正常返回>异常返回>信息返
回>较小。按图表所示组成列表:最终根据设定的抽样值,根据优先级选择需要回放的接口尺寸
。这样,尽可能让有信息多、质量高的请求进入回放过程,避免由于某些空值或异常返回而导
致不能判断的越权检查,减少人工介入排查的成本。
超越权限判断请求参数。
预检时,将检查水平越权的参数,以确定是否存在安全隐患。参数是一种重要的安全特性,我
们需要知道请求访问的是哪种类型的对象,以便更好地判断该接口是否存在安全问题。在请求
中有很多不同的参数,但我们真正关心的是具有注入风险的参数,例如用户id,订单号,商店
id等等。给出了一个简单参数模型。把参数分成系统参数,通用对象,业务对象。若所请求的
入参不包含任何对象信息,例如,只传递pageno、pagesize等系统参数以供列表查询,则所
请求的对象默认为自己的账户,没有任何风险;如果所请求的参数是一些对象参数,如订单
号和上传模版,则需要区分是否存在风险,例如,上传模版是所有商店都能获得的统一公共信
息,那么谁都可以访问该查询,这不构成越权;与订单号相对应的订单信息,是商店私有的数
据,其他商店无法获得。当前有针对公共信息的白名单配置,不在白名单中的对象参数都被默
认为业务对象,如果至少有一个业务对象存在,则需要进一步检查。
们需要知道请求访问的是哪种类型的对象,以便更好地判断该接口是否存在安全问题。在请求
中有很多不同的参数,但我们真正关心的是具有注入风险的参数,例如用户id,订单号,商店
id等等。给出了一个简单参数模型。把参数分成系统参数,通用对象,业务对象。若所请求的
入参不包含任何对象信息,例如,只传递pageno、pagesize等系统参数以供列表查询,则所
请求的对象默认为自己的账户,没有任何风险;如果所请求的参数是一些对象参数,如订单
号和上传模版,则需要区分是否存在风险,例如,上传模版是所有商店都能获得的统一公共信
息,那么谁都可以访问该查询,这不构成越权;与订单号相对应的订单信息,是商店私有的数
据,其他商店无法获得。当前有针对公共信息的白名单配置,不在白名单中的对象参数都被默
认为业务对象,如果至少有一个业务对象存在,则需要进一步检查。
垂直越权的检查相对简单,不需要关注返回的业务数据的具体内容,而只需要关注返回的cod
e,因为无论业务逻辑是否能够正常处理,都先进行权限检查,如果没有权限,则应该返回权
限校验失败的错误code。如果在权限平台上配置了该接口,那么查询权限平台将告知是否允
许该操作,如果是无权限的帐户进行了该接口的访问操作,则查询权限平台的结果是无权限
的,说明该接口至少已进行了权限配置,接下来需要检查实际配置是否生效,是否返回了无
权限错误代码。在实际扫描过程中,曾发现很多界面都在权限平台上进行过配置,但是配置
有误,实际上并没有起到作用。还有,考虑到可能有部分接口自己做了权限判断,那么对于
有权限和无权限的帐户,如果返回的代码不一致,则会对权限判断进行比较。
e,因为无论业务逻辑是否能够正常处理,都先进行权限检查,如果没有权限,则应该返回权
限校验失败的错误code。如果在权限平台上配置了该接口,那么查询权限平台将告知是否允
许该操作,如果是无权限的帐户进行了该接口的访问操作,则查询权限平台的结果是无权限
的,说明该接口至少已进行了权限配置,接下来需要检查实际配置是否生效,是否返回了无
权限错误代码。在实际扫描过程中,曾发现很多界面都在权限平台上进行过配置,但是配置
有误,实际上并没有起到作用。还有,考虑到可能有部分接口自己做了权限判断,那么对于
有权限和无权限的帐户,如果返回的代码不一致,则会对权限判断进行比较。