September 24, 2026
From Admin to Owner: How I Discovered a Critical Full Organization Takeover
Summary

By Ankit Rathva aka Gujarati Hacker
5 min read
How a simple role parameter manipulation lead to a Critical Broken Access Control vulnerability
While testing a web application, I came across an interesting authorization issue in the organization management functionality.
At first, everything appeared to be working as expected. โ
The application allowed organization administrators to invite new users, but the available roles were restricted to Admin and User.
The Owner role was not available when an administrator invited a new member.
However, when I started looking at the underlying API request rather than relying only on the frontend, things became interesting. ๐
I discovered that the backend was not properly enforcing the role restriction.
By modifying a single parameter, an administrator could invite another account with Owner privileges. ๐จ
The newly created Owner could then remove the legitimate organization Owner.
The result?
๐ฅComplete organization takeover.
๐ Who Am I?
Hi everyone! I'm Ankit Rathva aka Gujarati Hacker, a security researcher and bug bounty hunter who enjoys finding vulnerabilities in web applications. ๐ต๏ธโโ๏ธ๐
I mainly focus on areas such as:
- ๐ Authentication & Authorization
- ๐ช Broken Access Control
- ๐ง Business Logic Vulnerabilities
- ๐ Race Conditions
- ๐ค Account Takeover
- ๐ Web Application Security
For me, bug bounty hunting isn't just about finding a bug. It's about understanding how an application is supposed to work, where its security boundaries are, and what happens when those boundaries are tested in unexpected ways.
This write-up is about one such finding.
During a security assessment, I discovered a Critical Broken Access Control vulnerability that allowed an organization administrator to escalate their privileges to Owner by manipulating a single parameter in an API request.
The vulnerability ultimately allowed the newly created Owner to remove the legitimate Owner and take complete control of the organization. ๐ฅ
Let's break down how I found it. ๐
Connect with me: https://linkedin.com/in/ankitrathva
๐The Initial Observation
The application had an organization management feature where users could invite other members.
There were multiple roles within the organization, including:
- ๐ Owner
- ๐ก๏ธ Admin
- ๐ค User
The important restriction was that an Admin could invite users as Admin or User, but should not be able to create another Owner.
From the frontend, this restriction appeared to be correctly implemented. โ
As an administrator, when I opened the invitation functionality, the Owner role wasn't available as an option.
At this point, the application appeared secure from a normal user-interface perspective.
But there was one important question:
_๐ค _Was this restriction actually enforced by the backend?
So I decided to inspect the API request.
๐ต๏ธ Intercepting the Request
I created an organization and configured the accounts required to reproduce the issue.
The basic setup was:
๐ Account A โ Organization Owner
โ
๐ก๏ธ Account B โ Organization Admin๐ Account A โ Organization Owner
โ
๐ก๏ธ Account B โ Organization AdminThe Owner invited Account B as an Administrator. I then logged in as Account B.
As an Admin, I attempted to manage/invite users and captured the relevant request using Burp Suite. ๐ฆ The request contained a parameter controlling the user's organization role.
Conceptually, the request looked like:
{
"role": "admin"
}{
"role": "admin"
}The frontend only allowed the administrator to select permitted roles. But instead of trusting the UI, I decided to modify the request manually.
I changed:
"role": "admin""role": "admin"to:
"role": "owner""role": "owner"and forwarded the request. ๐
๐ฎ The Interesting Part
I expected the server to reject the request. For example, I expected something similar to:
403 Forbidden403 Forbiddenor an authorization error indicating that an Admin was not allowed to create an Owner. Insteadโฆ
The server accepted the modified request. ๐ณ
The invitation was successfully created with the Owner role.
This was the key authorization failure. ๐ฅ
The backend trusted a client-controlled role value without verifying whether the requesting user was actually authorized to assign that role.
โ๏ธ Accepting the Invitation
Next, I switched to the invited account. The invitation could be accepted normally. โ
After accepting it, the account was added to the organization with Owner privileges. ๐ The privilege escalation flow was now:
๐ก๏ธ Admin
โ
๐ Modify API request
โ
๐ง role = owner
โ
โ๏ธ Accept invitation
โ
๐ Organization Owner๐ก๏ธ Admin
โ
๐ Modify API request
โ
๐ง role = owner
โ
โ๏ธ Accept invitation
โ
๐ Organization OwnerAn administrator who should never have been able to create an Owner account could now do exactly that.
๐ฅ From Privilege Escalation to Organization Takeover
At this point, the vulnerability was already a serious privilege-escalation issue. But I wanted to understand the real-world impact.
As the newly created Owner, I checked the organization management functionality. The Owner had the ability to manage organization members, including the legitimate Owner.
The newly created Owner could therefore remove the original Owner from the organization. The complete attack chain became:
๐ก๏ธ Compromised/low-privileged Admin
โ
๐ง Manipulate invitation role
โ
๐ Create unauthorized Owner
โ
โ๏ธ Accept invitation
โ
๐ Gain Owner privileges
โ
โ Remove legitimate Owner
โ
๐ฅ Full organization control๐ก๏ธ Compromised/low-privileged Admin
โ
๐ง Manipulate invitation role
โ
๐ Create unauthorized Owner
โ
โ๏ธ Accept invitation
โ
๐ Gain Owner privileges
โ
โ Remove legitimate Owner
โ
๐ฅ Full organization controlThis transformed what initially looked like a simple role-manipulation issue into a full organization takeover scenario.
๐จ Impact
The vulnerability could allow a malicious administrator to:
- โฌ๏ธ Escalate from Admin โ Owner
- ๐ Create unauthorized Owner accounts
- ๐ Obtain full organization-level privileges
- โ Remove the legitimate organization Owner
- ๐ฅ Take complete control of the organization
- โ๏ธ Modify organization settings
- ๐ฅ Manage organization members
- โ Invite additional privileged users
Depending on the application's organization model and the resources connected to the organization, this could potentially expose or affect a significant amount of organizational data and functionality.
The company ultimately classified the vulnerability as Critical. ๐จ
๐ฉ Reporting the Vulnerability
I reported the issue to the company with a detailed proof of concept, including:
- ๐ The affected functionality
- ๐ก The original request
- ๐ ๏ธ The modified request
- ๐ง The role parameter manipulation
- โ๏ธ The invitation flow
- ๐ The resulting Owner privileges
- โ The ability to remove the legitimate Owner
- ๐ฅ The resulting organization takeover impact
The security team investigated the report and confirmed the vulnerability.
They classified it as Critical ๐จ and recognized the finding by adding me to their Hall of Fame ๐.
I really appreciate the security team's response and the opportunity to contribute to improving the security of their platform. ๐
๐ Final Thoughts
This was a great reminder that some of the most impactful vulnerabilities can come from a very small difference between what the frontend allows and what the backend actually enforces.
The application correctly hid the Owner role from administrators.
But hiding the option wasn't enough.
The real security boundary was the API โ and the API accepted a role assignment that should never have been permitted.
A single parameter change turned:
๐ก๏ธ Admin โ Admin๐ก๏ธ Admin โ Admininto:
๐ก๏ธ Admin โ ๐ Owner๐ก๏ธ Admin โ ๐ Ownerand ultimately:
๐ก๏ธ Admin
โ
๐ Owner
โ
โ Remove Original Owner
โ
๐ฅ Full Organization Takeover๐ก๏ธ Admin
โ
๐ Owner
โ
โ Remove Original Owner
โ
๐ฅ Full Organization TakeoverFor bug bounty hunters, this is why testing authorization boundaries and business logic is so important. ๐ต๏ธโโ๏ธ
For developers, the lesson is equally important:
_๐ _If a user isn't authorized to perform an action, the backend must reject it โ even when the request is manually crafted.
๐ Thanks for Reading!
If you enjoy practical web application security and bug bounty write-ups, follow me for more vulnerability research, methodology, and real-world findings. ๐
๐ Keep Hunting. Keep Learning. Keep Securing.