Skip to content
Skillpedia
Security48k · #3260

hunt-graphql

Makes your agent search for vulnerabilities in GraphQL systems. It improves the security of applications using this technology.

What it does

This tool helps find security flaws in systems using GraphQL. It looks for ways to access information or perform actions that shouldn't be allowed, by exploiting how GraphQL interacts with other parts of the system.

When to use it

  • ✓When testing the security of a website or application.
  • ✓To check if a GraphQL system is protected against unauthorized access.
  • ✓To understand the security risks in GraphQL APIs.

Example of what to ask your AI

“Hunt for security vulnerabilities in the GraphQL API at https://example.com/graphql”

Want more? Open the sections below.

How to use

The easiest way: copy the message below and paste it into Claude, ChatGPT, Cursor or any AI. It reads the skill and follows the instructions.

Skill link

https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/hunt-graphql/SKILL.md

Ready-to-paste message

Use this skill to help me: https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/hunt-graphql/SKILL.md Read the SKILL.md file at that link and follow its instructions for my task.
How it works

The tool analyzes patterns in URLs, responses, and code to identify a GraphQL endpoint. It then tries to interact with this endpoint to discover sensitive information or flaws, such as incorrect permissions or race conditions.

Installation

Easiest way: copy the skill link and paste it into Claude, ChatGPT or Cursor asking it to follow the instructions.

In the terminal (Claude Code, Codex, Cursor), in your project folder:

npx skills add sickn33/agentic-awesome-skills --skill hunt-graphql

Or download just the file:

curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/hunt-graphql/SKILL.md -o SKILL.md
Technical content (original SKILL.md)

Original text by the author, straight from GitHub.

⚠️ AUTHORIZED USE ONLY This skill is for educational purposes or authorized security assessments only. You must have explicit, written permission from the system owner before using this tool. Misuse of this tool is illegal and strictly prohibited.

Mandatory confirmation gate Before running any command that probes, exploits, changes, persists on, extracts data from, or attempts credential access against a target:

  1. Ask the user to state the exact target URL, IP, account, or resource.
  2. Ask the user to confirm written authorization and the permitted scope.
  3. Show the exact command(s) and explain their expected effect.
  4. Wait for explicit confirmation in the current conversation.

Without that confirmation, remain read-only and provide defensive guidance only. Prefer a sandbox, disposable VM, or controlled lab.

Crown Jewel Targets

GraphQL vulnerabilities are high-value because the attack surface is both broad and deep — a single endpoint can expose entire data models, privilege escalation paths, and cross-API state confusion. Highest payouts occur in:

  • Platform APIs (GitHub, Shopify, Stripe-tier targets) where GraphQL mutations interact with REST APIs managing the same resources
  • Race conditions between GraphQL mutations and REST endpoints where state synchronization is non-atomic — these hit medium-to-high severity reliably
  • Authorization persistence bugs where team/org/repo membership state is controlled by one API but readable/writable by another
  • B2B SaaS platforms where one tenant affecting another via schema traversal = critical
  • Internal admin GraphQL endpoints accidentally exposed to lower-privilege users

The GitHub reports demonstrate the crown jewel pattern: privilege that should be revoked persists because two APIs disagree on ground truth.


Attack Surface Signals

URL Patterns:

/graphql
/api/graphql
/v1/graphql
/query
/gql
/graph
/api/v2/graphql
/internal/graphql

Response Headers:

Content-Type: application/json  (with query body)
X-Request-Id + no REST-style path params = likely GraphQL

JavaScript Source Patterns:

// grep for these in JS bundles
"query {"
"mutation {"
"__typename"
"apollo"
"ApolloClient"
"graphql-tag"
"gql`"
"operationName"
"GRAPHQL_URI"

Tech Stack Signals:

  • Apollo Server/Client in JS bundles
  • Relay in React apps
  • graphene or strawberry (Python), graphql-ruby, gqlgen (Go), Lighthouse (Laravel)
  • POST requests with {"query": "..."} body shape in Burp history
  • __schema or __type in any response = confirmed GraphQL

Recon Sources:

  • github.com search: "graphql" site:target.com
  • Wayback Machine for /graphql paths
  • JS bundle scanning with LinkFinder or getallurls

Step-by-Step Hunting Methodology

  1. Discover the endpoint — spider JS bundles, check /graphql, /api/graphql, review Burp passive scan hits for application/json POST with query fields

  2. Test introspection — send the full introspection query. Even if blocked, try field-level enumeration:

    { __typename }
    

    If that returns, introspection may be partially blocked but the schema is discoverable

  3. Map the full schema — use InQL (Burp extension) or graphql-voyager to visualize relationships. Specifically look for:

    • Mutations that modify ownership, permissions, or membership
    • Mutations that mirror REST API functionality
  4. Identify REST/GraphQL overlap — document every resource that can be modified via BOTH REST and GraphQL. These dual-write surfaces are your RC targets.

  5. Test authorization boundaries per mutation — replay mutations as lower-privilege users. Does the server enforce the same authz as the equivalent REST call?

  6. Hunt cross-API state desync — find sequences where:

    • REST action should revoke access
    • GraphQL mutation re-grants or preserves it
    • Test the ordering: REST first → GraphQL → check state; then GraphQL first → REST → check state
  7. Test for persistent privilege after role/membership changes — remove a user via REST, then call the corresponding GraphQL mutation for that resource. Query current state via both APIs and compare.

  8. Probe for IDOR in node IDs — GraphQL global IDs often encode object type + ID. Swap IDs across object boundaries and across account contexts.

…

FAQ

What is GraphQL?

GraphQL is a way to build APIs (interfaces that allow different software to talk to each other) that gives more flexibility to the user, allowing them to request exactly the data they need.

What are 'vulnerabilities'?

Vulnerabilities are security flaws that can be exploited by malicious actors to access private information, improperly control systems, or cause other damage.

Why is it important to test GraphQL APIs?

GraphQL APIs can expose a lot of data and functionality at once. Testing their security is crucial to prevent sensitive information from being stolen or the system from being misused.

Details

Original description by the author

Hunting skill for graphql vulnerabilities.

repo: sickn33/agentic-awesome-skills

Popularity

GitHub stars
48k
Ranking position
#3260
License
MIT
Updated
10/15/2026

Is this skill useful?

0

Sign in to vote.

Comments

  • …

More skills from this repository

Similar skills