← Back to list

🔓 Broken Access Control: The Quiet Killer in Web Applications

Hidden tokens, endpoints led to large compromise

Aashif in InfoSec Write-ups · 2025-05-28 05:44 · 31 claps · 2.9 min read
#broken-access-control #idor #jwt-exploitation #admin-access #bug-bounty
Open on Medium ↗
Wiki topics: FT · Fine-tuning & Adaptation 🌐 · Web Development

🔓 Broken Access Control: The Quiet Killer in Web Applications

"I didn’t bypass the firewall, I bypassed trust."

When I started bug bounty hunting, I was captivated by XSS and SQLi—the flashy vulnerabilities. But over time, I learned that real money often lies in something far quieter: Broken Access Control.

It lets users do things they should never be allowed to do.

🧠 What Is Broken Access Control?

Access control dictates what authenticated users are allowed to do. When those rules aren’t enforced properly, users can:

  • Access other users’ data
  • Perform admin-only actions
  • Escalate privileges by tweaking requests

It’s a silent issue. There's no error, no crash. Things just… work, when they shouldn’t.

🕵️‍♂️ Case #1 — Unauthorized Data Access via IDOR

During a private program, I noticed the following request while viewing my own invoice:

GET /api/invoice/45289 

The ID looked incrementally generated. Classic red flag.

How it works?

How it works?

I incremented it manually:

GET /api/invoice/45290 

To my surprise, another user's invoice was returned—no authorization check, no access control logic. I now had access to PII: names, emails, billing info.

Impact: A simple change in the URL let me read thousands of users’ financial data. Reward: $2,500 bounty.

💡 Pro tip: IDOR isn’t just about changing numbers—look for UUIDs, usernames, slugs, or even timestamps.

🎭 Case #2 — Elevating to Admin by Guessing an Endpoint

In one engagement, I found a hidden admin endpoint referenced in JavaScript:

fetch('/admin/deleteUser?uid=934') 

As a regular user, the button wasn’t shown to me—but the endpoint still existed. I fired the request manually:

curl -X POST "https://target.com/admin/deleteUser?uid=934" -b "session=your_cookie_here" 

Boom. 200 OK. The user was deleted. No RBAC (Role-Based Access Control), no validation.

Impact: Anyone could delete any account. Reward: $1,800 bounty.

🔎 Just because an action is hidden from the UI doesn’t mean it’s protected.

🧪 Case #3 — JWT Role Manipulation

JWTs are widely used for stateless authentication, but they’re often misconfigured.

I once found a site using unsigned JWTs with the "alg": "none" vulnerability. Here was the original decoded payload:

{ "username": "n00b_hunter", "role": "user" } 

I changed it to:

{ "username": "n00b_hunter", "role": "admin" } 

Re-encoded it, sent the token:

curl -H "Authorization: Bearer <modified_token>" https://target.com/admin/dashboard 

And just like that—I was in the admin panel.

Impact: Full administrative access. Reward: $4,000 bounty.

🚨 Always validate JWT signatures. Never trust client-side tokens blindly.

🔐 How to Prevent Broken Access Control

From what I’ve seen across dozens of programs, here’s what helps:

✅ Enforce server-side access control checks

Don’t rely on client-side logic or hidden buttons.

✅ Use RBAC (Role-Based Access Control)

Every endpoint should verify the user’s role before granting access.

✅ Validate object ownership

Just because someone is authenticated doesn’t mean they own the resource they’re requesting.

✅ Log all access control failures

Failed access attempts should trigger alerts, not just return a 403.

🧰 Tools I Use While Hunting

  • Burp Suite Pro – Intercept and manipulate requests
  • Postman – For structured API testing
  • jwt.io – Decode, edit, and re-sign JWTs
  • ffuf / dirsearch – Brute-force hidden endpoints
  • Param Miner – Discover hidden parameters

🎯 Final Thoughts

Broken Access Control is not glamorous—but it’s quietly powerful. It’s about understanding how systems manage trust, and spotting where that trust is misapplied.

These aren’t flashy bugs—but they can be fatal.

📌 Follow me for more stories from the field: recon, bounty wins, and subtle bugs that break the web.

🔁 Found this helpful?

Clap 👏, share, or leave a comment

Thank you guys…


메타데이터
post_id
79cb85f72cd8
slug
broken-access-control-the-quiet-killer-in-web-applications-79cb85f72cd8
url
https://infosecwriteups.com/broken-access-control-the-quiet-killer-in-web-applications-79cb85f72cd8
canonical_url
https://infosecwriteups.com/broken-access-control-the-quiet-killer-in-web-applications-79cb85f72cd8
author_url
https://medium.com/@Cyb3rX7u
status
ok
fetched_at
2026-06-09 15:37:30