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
Mensagem pronta para colar
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-attackOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/mukul975/Anthropic-Cybersecurity-Skills/main/skills/performing-graphql-introspection-attack/SKILL.md -o SKILL.mdConteú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
requestsegql - 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. '
Popularidade
- Estrelas no GitHub
- 35 mil
- Posição no ranking
- #6074
- Licença
- Apache-2.0
- Atualizada em
- 31/08/2026
Comentários
- …
Mais skills deste repositório
abusing-dpapi-for-credential-access
Dá ao seu agente de IA instruções prontas para uma tarefa específica, para ele fazer melhor e mais rápido.
mukul975/Anthropic-Cybersecurity-Skills
abusing-shadow-credentials-for-privesc
Ensina seu agente de IA a escrever textos claros e bem estruturados.
mukul975/Anthropic-Cybersecurity-Skills
achieving-cmmc-level-2-compliance
Ajuda seu agente a preparar um ambiente para conformidade com CMMC Nível 2. Ele implementa requisitos de segurança e gerencia a documentação necessária.
mukul975/Anthropic-Cybersecurity-Skills
acquiring-disk-image-with-dd-and-dcfldd
Ajuda seu agente a criar cópias exatas de discos rígidos. Isso é útil para garantir que nenhuma informação seja perdida ou alterada durante investigações.
mukul975/Anthropic-Cybersecurity-Skills
Skills parecidas
cpp-testing
Faz seu agente escrever e melhorar testes para código C++. Ajuda a configurar ferramentas de teste e a corrigir erros.
affaan-m/ECC
csharp-testing
Ajuda seu agente a criar testes para código C# e .NET. Ele usa as melhores práticas para garantir que os testes sejam eficientes e confiáveis.
affaan-m/ECC
django-tdd
Faz seu agente aplicar estratégias de teste para Django com pytest-django e TDD. É útil para escrever testes robustos e garantir a qualidade do código, especialmente para APIs DRF.
affaan-m/ECC