# 越权自动化测试方案

# 方案1:纯被动代理模式

  1. 测试人员将bp代理指向passiveproxy,或者浏览器代理设置为passiveproxy
  2. passiveproxy实现2个功能
    1. 监听用户的请求数据,将cookie信息缓存到redis服务器
    2. 每隔10s将缓存的cookie信息主动请求服务器,判断cookie有效性,失效移除redis服务器
  3. 发送越权测试请求报文,发包程序将每个请求批量的替换为redis中缓存的cookie请求发送数据包
  4. 通过响应的数据判断是否存在越权

# 方案2:被动代理模式+IAST辅助

  1. 测试人员将bp代理指向passiveproxy,或者浏览器代理设置为passiveproxy
  2. passiveproxy实现2个功能
    1. 监听用户的请求数据,将cookie信息缓存到redis服务器
    2. 每隔10s将缓存的cookie信息主动请求服务器,判断cookie有效性,失效移除redis服务器
  3. 发送越权测试请求报文,发包程序将每个请求批量的替换为redis中缓存的cookie请求发送数据包(1,2,3步同方案1)
  4. 引入IAST插桩辅助完成:
    1. 通过IAST获取执行SQL的语句
    2. IASThook语句的分类:
      1. 请求报文的api接口只hook到一条执行语句 --- 不存在越权
      2. 请求的报文的api接口hook到>=2条执行语句:
        1. 语句完全一致 --- 存在越权
        2. 语句不一致 --- 不存在越权

# 总结

  • 方案1模式:
    • 优点:简单粗暴,实现简单,无脑发包,根据响应结果判断
    • 缺点:不支持删除/修改操作判断,误判多
  • 方案2模式:
    • 缺点:需IAST辅助判断,成本较高,适合IAST已推广部署的场景
    • 优点:增/删/改/查 均支持,但是如果增/改模式中引入时间戳参数,可能存在发现不了的问题