Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CrackQL — Outil de test d'intrusion GraphQL qui exploite des limites de taux faibles et l'analyse des coûts pour forcer les identifiants par brute-force, contourner l'A2F, énumérer les utilisateurs, et fuzzer les opérations via des requêtes alias groupées. | Kitploit
Outils/GitHubGitHub/nicholasaleks/crackql
Attaques de Mots de PasseExploitation d'Applications WebTests de Sécurité des APIFuzzingTests d'Intrusion
GitHubnicholasaleks/crackql

CrackQL

Outil de test d'intrusion GraphQL qui exploite des limites de taux faibles et l'analyse des coûts pour forcer les identifiants par brute-force, contourner l'A2F, énumérer les utilisateurs, et fuzzer les opérations via des requêtes alias groupées.

Voir le dépôt
349344il y a 3 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CrackQL

CrackQL est un utilitaire de brute-force et de fuzzing de mots de passe pour GraphQL.

CrackQL

CrackQL est un outil de test d'intrusion GraphQL polyvalent qui exploite des contrôles de limite de débit et d'analyse de coûts inefficaces pour forcer brutalement les identifiants et fuzzer les opérations.

Table des matières

  • Comment ça marche
  • Cas d'utilisation d'attaque
    • Évitement de la défense
    • Brute-force par pulvérisation de mots de passe
    • Contournement de l'authentification à deux facteurs OTP
    • Énumération de comptes utilisateur
    • Référence directe à un objet non sécurisé
    • Fuzzing général
  • Entrées
  • Installation
  • Configuration
  • Mainteneurs
  • Mentions

Comment ça marche ?

CrackQL fonctionne en regroupant automatiquement une seule requête ou mutation GraphQL en plusieurs opérations d'alias. Il détermine le nombre d'alias à utiliser en fonction des variables d'entrée CSV. Après avoir généré de manière programmatique le document GraphQL regroupé, CrackQL envoie ensuite les charges utiles à l'API GraphQL cible et analyse les résultats et les erreurs.

Cas d'utilisation d'attaque

CrackQL peut être utilisé pour un large éventail d'attaques GraphQL car il génère de manière programmatique des charges utiles à partir d'une liste d'entrées dynamiques.

Évitement de la défense

Contrairement à Burp Intruder qui envoie une requête pour chaque charge utile unique, CrackQL contourne les défenses traditionnelles de surveillance des limites de débit HTTP des API en utilisant plusieurs requêtes d'alias pour entasser de grands ensembles d'identifiants dans des requêtes HTTP uniques. Pour contourner les défenses d'analyse des coûts des requêtes, CrackQL peut être optimisé en utilisant une série d'opérations regroupées plus petites (-b) ainsi qu'un délai (-D).

Brute-force par pulvérisation de mots de passe

CrackQL est parfait contre les déploiements GraphQL qui exploitent des opérations d'authentification GraphQL intégrées (comme le module d'authentification GraphQL). L'exemple de pulvérisation de mots de passe ci-dessous fonctionne contre DVGA avec le dictionnaire sample-inputs/users-and-passwords.csv.

sample-queries/login.graphql

root@kitploit:~
mutation {
  login(username: {{username|str}}, password: {{password|str}}) {
    accessToken
  }
}

Contournement de l'authentification à deux facteurs OTP

Il est possible d'utiliser CrackQL pour contourner l'authentification à deux facteurs en envoyant tous les jetons OTP (mot de passe à usage unique).

sample-queries/otp-bypass.graphql

root@kitploit:~
mutation {
  twoFactor(otp: {{otp|int}}) {
    accessToken
  }
}

Énumération de comptes utilisateur

CrackQL peut également être utilisé pour des attaques d'énumération afin de découvrir des identifiants, noms d'utilisateur et adresses e-mail valides.

sample-queries/enumeration.graphql

root@kitploit:~
query {
  signup(email: {{email|str}}, password: {{password|str}}) {
    user {
      email
    }
  }
}

Référence directe à un objet non sécurisé

CrackQL pourrait être utilisé pour itérer sur un grand nombre d'identifiants uniques potentiels afin de divulguer des informations sur les objets.

sample-queries/idor.graphql

root@kitploit:~
query {
  profile(uuid: {{uuid|int}}) {
    name
    email
    picture
  }
}

Fuzzing général

CrackQL peut être utilisé pour des opérations de fuzzing d'entrée générales, comme l'envoi de charges utiles potentielles SQLi et XSS.

Entrées

CrackQL génère des charges utiles basées sur les variables d'entrée définies par un fichier CSV. CrackQL nécessite que l'en-tête CSV corresponde au nom de l'entrée.

sample-inputs/usernames_and_passwords.csv

root@kitploit:~
username, password
admin, admin
admin, password
admin, pass
admin, pass123
admin, password123
operator, operator
operator, password
operator, pass
operator, pass123
operator, password123

Types d'entrée valides

  • str
  • int
  • float

Installation

Prérequis

  • Python3
  • Requests
  • GraphQL
  • Jinja

Cloner le dépôt

root@kitploit:~
git clone [email protected]:nicholasaleks/CrackQL.git

Obtenir les dépendances

pip install -r requirements.txt

Exécuter CrackQL

python3 CrackQL.py -h

root@kitploit:~
Usage: python3 CrackQL.py -t http://example.com/graphql -q sample-queries/login.graphql -i sample-inputs/usernames_and_passwords.csv

Options:
  -h, --help            show this help message and exit
  -t URL, --target=URL  Target url with a path to the GraphQL endpoint
  -q QUERY, --query=QUERY
                        Input query or mutation operation with variable
                        payload markers
  -i INPUT_CSV, --input-csv=INPUT_CSV
                        Path to a csv list of arguments (i.e. usernames,
                        emails, ids, passwords, otp_tokens, etc.)
  -d DELIMITER, --delimiter=DELIMITER
                        CSV input delimiter (default: ",")
  -o OUTPUT_DIRECTORY, --output-directory=OUTPUT_DIRECTORY
                        Output directory to store results (default:
                        ./results/[domain]_[uuid]/
  -b BATCH_SIZE, --batch-size=BATCH_SIZE
                        Number of batch operations per GraphQL document
                        request (default: 100)
  -D DELAY, --delay=DELAY
                        Time delay in seconds between batch requests (default:
                        0)
  --verbose             Prints out verbose messaging
  -v, --version         Print out the current version and exit.

Configuration

Utilisez config.py pour définir les cookies HTTP, les en-têtes ou les proxys si le point de terminaison nécessite une authentification.

Mainteneurs

  • Nick Aleks
  • Dolev Farhi

Mentions

  • Kitploit
Télécharger l’outil