Skip to content
Back to skills

Api Graphql

ASecurity

Attack GraphQL APIs. Load on /graphql, /graphiql, /v1/graphql, a POST with {"query":"..."}, Apollo/Hasura/graphene stacks, or "query/mutation" language. Signals: introspection enabled, batched queries, deeply nested fields, __schema, aliases.

  • 20 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 22, 2026
ai-agentsgosqltestingapibackendsecurity

Works with

  • api

Security analysis

A100/100

Scanned September 22, 2026

npx -y skills add NoorQureshi/SploitAgent --skill api-graphql --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Api Graphql?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Api Graphql
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/noorqureshi-api-graphql/badge)](https://www.skillsdirectory.com/skills/noorqureshi-api-graphql)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: api-graphql
description: >
  Attack GraphQL APIs. Load on /graphql, /graphiql, /v1/graphql, a POST with {"query":"..."},
  Apollo/Hasura/graphene stacks, or "query/mutation" language. Signals: introspection enabled,
  batched queries, deeply nested fields, __schema, aliases.
domain: api
type: technique
stability: learning
modes: [pentest, bugbounty]
severity: high
owasp_api: [API1:2023-BOLA, API5:2023-BFLA]
cwe: [CWE-639, CWE-284]
tools: [graphw00f, clairvoyance, burp, inql]
schema_version: 1
---

# GraphQL abuse

## When it applies
The target exposes a GraphQL endpoint. GraphQL collapses many objects behind one URL, so
authorization gaps and info leaks are common and easy to miss with URL-based testing.

## Why it works
One endpoint, a self-describing schema, and per-field resolvers mean access control must be
enforced at every field/resolver — it frequently isn't. Introspection hands you the entire
attack surface; batching/aliases turn one request into thousands.

## Method
1. **Fingerprint & map**: `graphw00f` for the engine; if introspection is on, dump the schema
   (`{__schema{types{name fields{name}}}}`) with `inql`/`clairvoyance`. If off, brute field
   names with `clairvoyance` (error messages leak valid fields).
2. **AuthZ testing (BOLA/BFLA)**: call queries/mutations for objects and admin operations you
   shouldn't reach; swap ids in arguments (same as IDOR) — resolvers often skip owner checks.
3. **Info disclosure**: reach sensitive fields/types (users, tokens, internal flags) via
   nested relations even when the "front door" query hides them.
4. **DoS / cost**: deeply nested recursive queries and aliased batching (`a:login b:login ...`)
   to bypass rate limits or brute-force — respect program rules on this.
5. **Injection**: arguments feed backends — test SQLi/NoSQLi in GraphQL variable values.

## Gotchas
- Introspection off ≠ safe — field brute-forcing and suggestion errors still map the schema.
- Rate-limit bypass via batching/aliases is a real, reportable finding on many programs.
- Mutations are where impact lives; don't stop at read queries.

## Verify success
Retrieve/modify data through a query or mutation your role shouldn't allow, or dump a schema
that reveals hidden admin operations.

## References
PortSwigger GraphQL labs; OWASP API Security Top 10 (2023); graphw00f/inql docs.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…