业务逻辑错误——通过操纵GraphQL请求删除项目所有者
引言
大家好👋我是Black,一名安全研究员和漏洞赏金猎人,热衷于发现现代Web应用中深藏的逻辑缺陷。在本文中,我将分享在测试过程中发现的一个业务逻辑漏洞——这个微妙但影响重大的漏洞允许具有编辑者权限的用户通过操纵GraphQL请求来删除项目所有者。
漏洞描述
在测试项目权限管理功能时,我发现了一个业务逻辑漏洞,允许具有编辑者角色的用户删除项目所有者。
Web界面正确阻止了此操作,并显示消息: “无法编辑项目所有者的角色。请先转移项目所有权。”
然而,后端GraphQL API并未强制执行相同的验证。通过修改API请求中的单个字段,编辑者可以绕过UI限制删除所有者。
漏洞请求
|
|
🧠 复现步骤
- 以具有编辑者权限的用户身份登录
- 在UI中正常删除低权限用户——这会触发GraphQL请求
- 使用Burp Suite(或其他代理工具)拦截请求
- 将低权限用户的userId替换为所有者的userId
- 转发修改后的请求
结果:尽管UI阻止了此操作,但所有者仍被成功删除。
影响
- 编辑者可以删除项目所有者,实际上接管项目控制权
- 可能导致所有权丢失、权限提升和完全的项目接管
联系方式
LinkedIn — https://www.linkedin.com/in/ali-abbas-b405a4333/ X — https://x.com/BL4ckSec
相关标签
Bug Bounty | Bug Bounty Tips | Hacking | Bug Bounty Writeup | Bugs