Skip to content
Security
Skill

/access-control-test

Test a web app's authorization: IDOR/BOLA, missing function-level access control, privilege escalation (horizontal and vertical), and forced browsing. Use to validate OWASP A01 on an authorized target — the most prevalent web risk.

From plugin
awesome-claude-security
6111 skills17 agents13 commands1 MCP
Install
$ npx -y skills add jassics/awesome-claude-security --skill access-control-test --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/access-control-test

Context preview

The summary Claude sees to decide when to auto-load this skill.

Test a web app's authorization: IDOR/BOLA, missing function-level access control, privilege escalation (horizontal and vertical), and forced browsing. Use to validate OWASP A01 on an authorized target — the most prevalent web risk.

SKILL.md

access-control-test.SKILL.md
name: access-control-test
description: >-
  Test a web app's authorization: IDOR/BOLA, missing function-level access control,
  privilege escalation (horizontal and vertical), and forced browsing. Use to
  validate OWASP A01 on an authorized target — the most prevalent web risk.

Goal

Evidence on whether the app enforces authorization server-side on every object and function, tied to the authenticated user — or whether a user can reach data/actions they shouldn't.

Prerequisites

  • Authorization to test, ideally two accounts at different privilege levels (User

A, User B, and an admin) with identifiable resources.

Test cases

1. **IDOR / BOLA (horizontal)** — as User A, manipulate object identifiers (IDs, UUIDs, filenames, GUIDs in URLs/bodies/JWT) to access User B's resources. 2. **Function-level (vertical)** — call admin/privileged endpoints as a normal user; check hidden/undocumented functions and HTTP-method overrides. 3. **Forced browsing** — request resources/pages not linked for your role. 4. **Privilege escalation** — tamper with role/tenant claims (JWT, cookies, hidden fields, mass-assignment) to elevate. 5. **Missing ownership checks on writes** — update/delete another user's object.

Steps

1. Map roles and sensitive objects/functions. 2. Run cases as the lower-privilege identity; never use the higher account's session to "prove" access. 3. Record per case: enforced / leaked / action-performed, with request+response evidence (redact secrets). 4. Identify the gap: client-side-only checks, IDs trusted from the request, missing server-side ownership/role enforcement.

Output

A results table: case · object/function · result · evidence · remediation (deny-by-default, server-side authz tied to identity). Confirmed issues → `security-reporting:finding` (rate high+ for cross-user data access).

Notes

Authorization must be enforced on the **server**, per object and per function, against the authenticated identity — never trust IDs, roles, or tenant hints from the client. This is the same class as API `BOLA/BFLA` — see `api-security`.

Read more
Ships withawesome-claude-security

A Claude Code plugin marketplace for the full cybersecurity & GenAI-security lifecycle — from recon and threat modeling to detection engineering, GRC, and CISO-level strategy. A pentester knows which OWASP test bends a broken-access-control endpoint.

Get the whole plugin

Other skills on awesome-claude-security.