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
Ready-to-paste message
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-graphqlOr 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.mdTechnical 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:
- Ask the user to state the exact target URL, IP, account, or resource.
- Ask the user to confirm written authorization and the permitted scope.
- Show the exact command(s) and explain their expected effect.
- 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
grapheneorstrawberry(Python),graphql-ruby,gqlgen(Go),Lighthouse(Laravel)- POST requests with
{"query": "..."}body shape in Burp history __schemaor__typein any response = confirmed GraphQL
Recon Sources:
github.comsearch:"graphql" site:target.com- Wayback Machine for
/graphqlpaths - JS bundle scanning with
LinkFinderorgetallurls
Step-by-Step Hunting Methodology
Discover the endpoint — spider JS bundles, check
/graphql,/api/graphql, review Burp passive scan hits forapplication/jsonPOST with query fieldsTest 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
Map the full schema — use
InQL(Burp extension) orgraphql-voyagerto visualize relationships. Specifically look for:- Mutations that modify ownership, permissions, or membership
- Mutations that mirror REST API functionality
Identify REST/GraphQL overlap — document every resource that can be modified via BOTH REST and GraphQL. These dual-write surfaces are your RC targets.
Test authorization boundaries per mutation — replay mutations as lower-privilege users. Does the server enforce the same authz as the equivalent REST call?
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
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.
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.
Popularity
- GitHub stars
- 48k
- Ranking position
- #3260
- License
- MIT
- Updated
- 10/15/2026
Comments
- …
More skills from this repository
00-andruia-consultant
Helps your agent start or improve AI projects. It analyzes code, suggests tools, and creates action plans in Spanish.
sickn33/agentic-awesome-skills
007
Lets your agent perform security audits and threat modeling. It's useful for protecting projects against attacks and vulnerabilities.
sickn33/agentic-awesome-skills
10-andruia-skill-smith
Helps your agent create or improve AI tools. It defines how tools work, writes documentation, and validates the structure.
sickn33/agentic-awesome-skills
20-andruia-niche-intelligence
Lets your agent create a summary about a specific industry. It's useful for understanding the context, rules, usage patterns, and risks of a project, using reliable sources.
sickn33/agentic-awesome-skills
Similar skills
django-security
Helps your agent implement security practices in Django applications. It focuses on authentication, authorization, and prevention against common attacks, ensuring more secure code.
affaan-m/ECC
laravel-security
Helps your agent secure Laravel applications against threats. Implements security practices for authentication, authorization, and common attack prevention.
affaan-m/ECC
module-regression
Helps your agent manage changes in large projects. Ensures code changes in one part don't break other parts.
affaan-m/ECC