graphw00f: fingerprinting de endpoints GraphQL

graphw00f · BSD-3-Clause

graphw00f hace fingerprinting de servidores GraphQL. Envía un puñado de queries específicas del motor y, a partir del comportamiento de error y respuesta, identifica qué implementación GraphQL está corriendo — Apollo, Hasura, graphql-ruby, y decenas más. Saber el motor te dice qué debilidades buscar, porque los valores por defecto de introspection, el comportamiento de batching y la verbosidad de errores varían según la implementación.

Instalación

git clone https://github.com/dolevf/graphw00f.git
cd graphw00f && pip install -r requirements.txt
python main.py -h

Comandos principales

# detecta un endpoint GraphQL, luego haz fingerprint
python main.py -d -f -t https://example.com/graphql

# proporciona el endpoint directamente
python main.py -f -t https://example.com/api/graphql

# con headers
python main.py -f -t https://example.com/graphql 
  -H "Authorization: Bearer TOKEN"

# lista lo que puede identificar
python main.py -l

-d ejecuta detección (encontrar el endpoint), -f ejecuta fingerprinting (identificar el motor).

Salida

[*] Found GraphQL at https://example.com/graphql
[*] Discovered GraphQL Engine: (Apollo)
[!] Attack Surface Matrix: https://github.com/nicholasaleks/graphql-threat-matrix

Dónde encaja en Tandera

graphw00f se ejecuta en la fase de analyze de recon_web_lite. Es seguro para el flujo NonIntrusive porque el fingerprinting es un pequeño número de queries benignas. Cuando identifica un motor, establece el contexto que usa el resto de la evaluación — un endpoint GraphQL es una superficie de ataque distinta de REST, y el motor determina qué partes de ella quedan expuestas por defecto.

Uso en un pentest

El motor mapea a un conjunto conocido de debilidades. Una vez que sabes si es Apollo o Hasura, la GraphQL Threat Matrix te dice los comportamientos por defecto a comprobar — introspection, field suggestions, batching, límite de profundidad. El fingerprinting convierte un genérico “prueba el GraphQL” en un checklist específico.

Introspection es lo primero a comprobar. Si está habilitada, tienes el schema completo — todo tipo, query y mutation, incluidas las administrativas que la UI nunca llama. Ese es tu mapa para todo lo que sigue.

El batching habilita ataques que el rate limiter no ve. Algunos motores permiten enviar muchas operaciones en una solicitud. Si el login es una mutation, el batching de queries puede convertir una solicitud HTTP en cientos de intentos de contraseña bajo un único conteo de rate-limit. Comprueba si el motor identificado lo permite.

acceso anticipado

Consigue Tandera antes de tu próximo engagement.

Únete a la waitlist para acceso anticipado. Estamos incorporando equipos de pentest por oleadas.

Onboarding prioritario para equipos de pentest.
Línea directa con quienes lo construyen.
Precio de acceso anticipado, asegurado.

Sin spam, sin tarjeta. Cancela cuando quieras.

enespt-br