越权分类

  • A+
所属分类:安全文章

言:

为什么要写这个呢?

求越权漏洞具体场景或定义补充~~~~欢迎拍砖

因为我在阿里负责越权漏洞治理,目标针对白盒领域,黑盒领域希望提升扫描能力建设。

为了合理的区分哪些场景可以兜的住,哪些场景可以做到扫描能力覆盖,提升工作效率,降低人力投入成本。

里面的部分细节分类,非标准化内容,需要各位大佬给予补充,希望微信沟通。

如果有换工作意向的,同样欢迎勾搭~

我个人调研了CWE/OWASP等内容,发现官方只有越权这个分类,但是细节中,并没有细化场景。

越权漏洞绝对是业务逻辑漏洞,但是鉴于【凡有要求,必有检出】的要求,我们需要做这块的能力建设。

注意:

如:http 请求入口、websocket 入口 就不用补充了

请求方式:HTTPMethod 7种不用补充了

入参内容:json/xml/form表单,http request header上数据就不用补充了

更多考虑,服务端的问题

越权漏洞大分类:

【PS】
为何要区分有用户场景和无用户场景,因为越权问题是基于URL来进行研判的,非应用维度。
我们需要区分出:
哪些URL是客户场景发起的请求,导致的越权问题。
哪些URL是服务器端发起的请求这个请求中没有用户身份。

需要分开针对增,删改,查不同的定义。
增:常规是数据库中无数据,进行数据增加。另一种是有关联关系绑定场景,需要判断关联数据是否为当前用户。
删改:理论上,删改一定要有用户身份或进行权限校验。不能直接通过某资源ID进行数据删改导致稳定性问题
「注意:」增删改如果是黑盒通过流量进行触发,会对生产环境造成脏数据影响,并且影响线上业务稳定性。

查:需要区分业务场景:区分信息对外公开、部分公开、非公开。
除公开数据外,部分公开或非公开都需要进行权限验证。

未授权访问

客户端发起的请求,服务器端没有任何的验证。

导致了数据增、数据删改、数据查导致敏感信息透出的场景。

标签值:未授权访问

水平越权

区分为2个业务场景

  1. 有用户场景
    1. 无用户身份标识,无权限归属判断(通过传入uid,rid进行查询)
      1. 注:批量rid时,需要对所有的rid进行校验。
      2. 多个资源ID,rid1&rid2,&rid3 才可以获取到具体数据场景
      3. 标签值:水平越权-有客户-无身份无鉴权
    1. 有用户身份标识,无资源归属判断(安全的uid,不安全的rid)
      1. 注:批量rid时,需要对所有的rid进行校验。
      2. 多个资源ID,rid1&rid2,&rid3 才可以获取到具体数据场景
      3. 操作其他人的rid时,业务逻辑中将该rid设置为当前登录用户的信息。
      4. 标签值:水平越权-有客户-有身份无鉴权
    1. 无用户身份标识,有资源归属判断(不安全的uid)
      1. 注:批量rid时,需要对所有的rid进行校验。
      2. 多个资源ID,rid1&rid2,&rid3 才可以获取到具体数据场景
      3. 操作其他人的rid时,业务逻辑中将该rid设置为当前登录用户的信息。
      4. 标签值:水平越权-有客户-无身份有鉴权
    1. RBAC场景中,权限归属在数据库中,无法覆盖
      1. 标签值:水平越权-有客户-RBAC存库场景
    1. 业务强相关逻辑,导致的水平越权。如:Oauth授权认证问题。
      1. 标签值:水平越权-有客户-业务强相关逻辑漏洞如OAuth认证绕过场景
  1. 无用户场景(工具类发起的请求)
    1. 回调接口(无用户身份,但是可以进行数据增删改查)
      1. 标签值:水平越权-无客户-ServertoServer(S2S)工具类callback场景缺失加签验签
    1. 特殊业务工具类场景,直接发起请求,进行数据增删改查
      1. 标签值:水平越权-无客户-加签被绕过导致权限控制失效

垂直越权

角色不同导致的垂直越权

  1. 硬编码导致的垂直越权漏洞:
    1. 如:google.com/manager/getUserInfo?uid=mzh&isadmin=codemzh
    2. 标签值:垂直越权-无客户-后端硬编码问题
  1. 前端无入口,通过拼接URL后,可以直接访问。导致了越权
    1. 标签值:垂直越权-有客户-后端缺失用户角色身份未鉴权
  1. RBAC场景中,在Cookie中,种下 roleId=1;导致超管权限信息泄露。
    1. 标签值:垂直越权-有客户-RBAC场景弱管理

无法兜底的场景:

    • 标签值:无法兜底的场景-特殊语言问题
  • 动态代理场景,白盒,黑盒扫描器无法覆盖。
    • 标签值:无法兜底的场景-流量无法覆盖
    • 如:
    1. google.com/doit?appname=getUserInfo
    2. google.com/doit?appname=editUserInfo
  • 很多多级业务连带场景下,算作业务逻辑问题。非常规的越权漏洞,无法覆盖。
    • 标签值:无法兜底的场景-业务逻辑漏洞
  • 业务URL上,通过 ../ 绕过身份访问控制场景(这种权限控制绕过扛不住啊...)
    • 标签值:无法兜底的场景-突破ACL访问控制

越权标签数据:

  • 未授权访问
  • 水平越权-有客户-无身份无鉴权
  • 水平越权-有客户-有身份无鉴权
  • 水平越权-有客户-无身份有鉴权
  • 水平越权-有客户-RBAC存场景
  • 水平越权-有客户-业务强相关逻辑漏洞如OAuth认证绕过场景
  • 水平越权-无客户-ServertoServer(S2S)工具类callback场景缺失加签验签
  • 水平越权-无客户-加签被绕过导致权限控制失效
  • 垂直越权-无客户-后端硬编码问题
  • 垂直越权-有客户-后端缺失用户角色身份未鉴权
  • 垂直越权-有客户-RBAC场景弱管理
  • 无法兜底的场景-特殊语言问题
  • 无法兜底的场景-流量无法覆盖
  • 无法兜底的场景-业务逻辑漏洞
  • 无法兜底的场景-突破ACL访问控制

朋友圈帮忙补充的内容:

https://github.com/ldbfpiaoran/springboot-acl-bypass  service间调用 基于path区分是否鉴权

https://github.com/MIMAZHAN/PVD-HACK  基于burp history,进行参数修改的,越权检测

http://security.vipkid.com.cn/notice/17/  VIPKID基于数据流的越权漏洞检测

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: