记录某SRC邀请处逻辑越权到组织管理员漏洞
字数 531 2025-08-29 08:30:19
某SRC邀请处逻辑越权漏洞分析报告
漏洞概述
在挖掘某企业SRC时发现其小程序存在权限逻辑缺陷,攻击者可利用邀请功能的role_id参数越权提升为组织管理员权限,并存在公司ID遍历风险。
漏洞复现步骤
-
环境准备
- 获取两个测试账号(A:正常用户,B:攻击者)
- 登录小程序后创建测试公司项目
-
正常流程操作
graph TD A[注册公司账户] --> B[新建项目] B --> C[进入公司管理] C --> D[邀请成员] D --> E[选择招聘专员权限生成链接] -
关键攻击点
- 测试账号B访问邀请链接时抓包,发现以下可控参数:
POST /api/invite/join HTTP/1.1 { "company_id": "12345", "role_id": "2" // 原值为低权限角色ID } - 修改
role_id为管理员权限值(如1)后重放请求
- 测试账号B访问邀请链接时抓包,发现以下可控参数:
-
权限验证
- 返回
success后,账号B在A的公司中显示为组织管理员 - 可执行管理员专属操作(如成员管理、项目配置等)
- 返回
漏洞原理
-
后端缺陷
- 未校验邀请链接的权限一致性
- 未对
role_id进行服务端二次验证 - 公司ID采用连续数字,存在遍历风险
-
攻击面扩展
- 通过爆破
company_id可加入任意企业 - 结合CSRF可构造恶意邀请链接
- 通过爆破
修复建议
- 服务端加固
# 伪代码示例 def join_company(request): invite = get_invite_link(request.invite_token) if request.role_id != invite.role_id: # 强制匹配原始权限 return error("权限篡改检测") - 其他措施:
- 使用JWT签名邀请链接
- 公司ID改为UUID等不可预测值
- 增加操作日志审计
时间线
- 2025-03-05 漏洞提交至SRC平台
- 2025-03-07 厂商确认中危漏洞
- 2025-03-10 完成热修复
(注:实际漏洞细节已脱敏处理,关键参数名称经过修改)