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.

  • 21 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added October 11, 2026
ai-agentsgosqltestingapibackendsecurity

Works with

  • api

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned October 11, 2026

npx -y skills add NoorQureshi/security-skills --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-security-skills/badge)](https://www.skillsdirectory.com/skills/noorqureshi-api-graphql-security-skills)

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.

Files in this skill

  • SKILL.md2.3 KB
  • detection.md2.8 KB

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…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.