视频笔记

  • 前面讲了什么是IDOR,以及IDOR有多频繁,分类,略。

image.png
image.png

  • 越权可能产生在多个不同的方式(攻击树)

image.png

  • 一种越权绕过的场景:加了一个ignore_auth(此类后门),假如后门为1的时候就不会做权限校验。

image.png

  • 另一种可能是如果skip_auth 不等于1的时候,才做校验,否则默认不做校验
    • 或者当取不到uid时候,默认作为超级管理员账号处理
    • 或者当取不到uid时候,默认取弱登陆身份(另外字段)

image.png

  • 第三种可能:权限验证用的函数,完全没有验证,假的骗人。

image.png

  • 怎么修复呢?

image.png

  • 典型的检测方法
      1. 考虑被突破后怎么办(容侵),风险如何控制最低。
      1. 做限流,然后人工看超过频率。
      1. 人工枚举所有SAST规则。
      1. 最终:攻击尝试 不等于 攻击成功(每天一堆误报)

image.png

  • 典型的修复方法
      1. 重新实现一种验权函数,然后规定所有人都用它(配合SAST,即使误报高)。
      1. 花很长时间,人工CodeReview。
      1. Case By Case 地与人安全评审。
      1. 问题:如何提高可扩展性?

image.png

  • 对整体问题有个定义
    • 这是一个接口分类问题
      • 到底这个接口有没有鉴权?有?还是没有?
      • 导致的结果是什么?
    • 根据接口的请求和返回内容,进行分类接口
    • 鉴权方法:即使你一个个硬编码,你没法枚举和跟上所有越权的情况。

image.png

  • 我们如何改进
    • 了解与表达请求数据流
    • 从可能被利用出发
    • 如何通用地预测越权的结果?

image.png

  • 如何改进-2
    • 正常流量是什么样子?
    • 执行环境是什么样子(如DB等)
  • 收口验证逻辑
  • 预测访问结果是否一致

image.png

  • 我们可以尝试使用监督式模型来干!
    • 训练集:请求 - 结果 -> 模型
    • 预测集:请求 - 模型 -> 预测(是否OK) -> 是否告警/阻止

image.png

  • 训练用的素材
    • 验证结果Log - IAST执行流日志
    • DB行为Log - DB日志
    • 返回结果Log - 流量日志

image.png

  • 把特殊信息作为参数添加到Request之中

image.png

  • 有些复杂的业务逻辑不好收口
  • 应用不一定像期待的那样执行

image.png

  • 需要收集请求中的一些信息(IAST)

image.png

  • 例如以下2个请求中的Log信息(IAST)
  • 访问成功与失败是不同的

image.png

  • 请求的次数特征和请求response长度,请求操作次数,是不同的。

image.png

  • 有了数据,我们就可以用决策树模型了自动预测是否有越权漏洞。

image.png

  • 决策树提升方案
    • 避免过拟合
    • 使用随机森林
    • 使用GBM

image.png

  • 使用决策树的问题
  • 准确率55%

image.png

  • 使用后端日志特征的局限:
    • 同质化的信号
      • 譬如查询次数一模一样,譬如每次都是先查询数据,然后再检查身份是否一致,一致再输出,这样就有漏报了。

image.png

  • 根据试验结果
    • 准确率52%
    • 召回率54%

image.png

  • 提高的方案:
    • 解决这个问题的方案,是把response信息也加上,譬如response的content-type,和content-Size。

image.png

image.png

  • 关于Reponse信息需要注意要点
    • 合规问题 — PCI不允许
    • 结果可能被加密
    • 有些用户自定义Response(如算法自动化推荐)

image.png

  • 匿名化数据
    • 脱敏数据 / 删除数据字段。

image.png

  • 不知道说的是啥东西,似乎用代号来hashing返回结果?
  • SSDEEP看起来是一种hashing差分算法?

image.png

  • 使用SSDEEP这种算法处理Response信息,好处是你可以识别编辑距离变化有多大,而不用操作content本身。

image.png

  • 进而可以转化成图像相似问题来解答。

image.png

  • 我们使用了一些相似度对比算法,最后发现一些没屌用的,一些有用的,还有待验证的如上。

image.png

  • 对于Json返回,也可以生成Baghashing

image.png

  • 然后使用GBMs方法干。

image.png

  • 到现在我们搞定两种情况
      1. 使用后端日志数据干活的方法(IAST)
      1. 使用response数据干活的方法(ReponseData)
  • 以上两种方案,都是我们明确能够得到鉴权日志的情况
  • 回答的是‘这个鉴权操作是否成功’的问题(依然需要有人发起恶意攻击尝试)
    • 识别我返回鉴权失败,但是又给你返回了客户信息。

image.png

  • 如果auth_checks_list没有,我们可以看db查询select的字段是否在response的字段里

image.png

  • 用户a,请求用户b的数据,可以看所有结果,然后检查资源与请求的关系。它可能是隐私数据,也可能是公开数据。

image.png

  • 怎么表达和解决这类问题呢?
    • 可以生成一个行为序列新模型,然后用到WAF这种产品中,进行实时训练和预警(不同应用不一样)

image.png

image.png

  • 可以阻止越权写操作

image.png

  • 然后分享后面都是说的是自己做的Demo,略。