记录某SRC邀请处逻辑越权到组织管理员漏洞
字数 531 2025-08-29 08:30:19

某SRC邀请处逻辑越权漏洞分析报告

漏洞概述

在挖掘某企业SRC时发现其小程序存在权限逻辑缺陷,攻击者可利用邀请功能的role_id参数越权提升为组织管理员权限,并存在公司ID遍历风险。


漏洞复现步骤

  1. 环境准备

    • 获取两个测试账号(A:正常用户,B:攻击者)
    • 登录小程序后创建测试公司项目
  2. 正常流程操作

    graph TD
      A[注册公司账户] --> B[新建项目]
      B --> C[进入公司管理]
      C --> D[邀请成员]
      D --> E[选择招聘专员权限生成链接]
    
  3. 关键攻击点

    • 测试账号B访问邀请链接时抓包,发现以下可控参数:
      POST /api/invite/join HTTP/1.1
      {
        "company_id": "12345",
        "role_id": "2"  // 原值为低权限角色ID
      }
      
    • 修改role_id为管理员权限值(如1)后重放请求
  4. 权限验证

    • 返回success后,账号B在A的公司中显示为组织管理员
    • 可执行管理员专属操作(如成员管理、项目配置等)

漏洞原理

  1. 后端缺陷

    • 未校验邀请链接的权限一致性
    • 未对role_id进行服务端二次验证
    • 公司ID采用连续数字,存在遍历风险
  2. 攻击面扩展

    • 通过爆破company_id可加入任意企业
    • 结合CSRF可构造恶意邀请链接

修复建议

  1. 服务端加固
    # 伪代码示例
    def join_company(request):
        invite = get_invite_link(request.invite_token)
        if request.role_id != invite.role_id:  # 强制匹配原始权限
            return error("权限篡改检测")
    
  2. 其他措施:
    • 使用JWT签名邀请链接
    • 公司ID改为UUID等不可预测值
    • 增加操作日志审计

时间线

  • 2025-03-05 漏洞提交至SRC平台
  • 2025-03-07 厂商确认中危漏洞
  • 2025-03-10 完成热修复

(注:实际漏洞细节已脱敏处理,关键参数名称经过修改)

某SRC邀请处逻辑越权漏洞分析报告 漏洞概述 在挖掘某企业SRC时发现其小程序存在 权限逻辑缺陷 ,攻击者可利用邀请功能的 role_id 参数越权提升为组织管理员权限,并存在公司ID遍历风险。 漏洞复现步骤 环境准备 获取两个测试账号(A:正常用户,B:攻击者) 登录小程序后创建测试公司项目 正常流程操作 关键攻击点 测试账号B访问邀请链接时抓包,发现以下可控参数: 修改 role_id 为管理员权限值(如 1 )后重放请求 权限验证 返回 success 后,账号B在A的公司中显示为 组织管理员 可执行管理员专属操作(如成员管理、项目配置等) 漏洞原理 后端缺陷 未校验邀请链接的权限一致性 未对 role_id 进行服务端二次验证 公司ID采用连续数字,存在遍历风险 攻击面扩展 通过爆破 company_id 可加入任意企业 结合CSRF可构造恶意邀请链接 修复建议 服务端加固 其他措施: 使用JWT签名邀请链接 公司ID改为UUID等不可预测值 增加操作日志审计 时间线 2025-03-05 漏洞提交至SRC平台 2025-03-07 厂商确认中危漏洞 2025-03-10 完成热修复 (注:实际漏洞细节已脱敏处理,关键参数名称经过修改)