Pentest & Bug Bounty
  • ๐ŸฅทPentest et Bug Bounty
    • ๐Ÿ‘พPentest Methodology
    • ๐Ÿ’ธBug Bounty Methodology
      • ๐Ÿ““Ecrire un bon rapport
      • โš–๏ธAspect Juridique (FR)
  • ๐Ÿ‘ฃOSINT / Recon
    • ๐ŸงฆSock Puppet
    • ๐Ÿง Mindmaps
    • ๐ŸขEntreprise
    • ๐Ÿ‘€Leaks
    • ๐Ÿ‘ŠManuel / Dorks
      • Google dorks
      • Github dorks
      • Twitter Dorks
      • Shodan Dorks
    • ๐Ÿ‘ฅRรฉseaux sociaux (SOCMINT)
      • ๐Ÿ•ต๏ธTelegram OSINT
      • ๐Ÿ‘ปSnapchat OSINT
      • ๐Ÿคตโ€โ™‚๏ธLinkedin OSINT
      • ๐Ÿ—ฃ๏ธFacebook OSINT
      • ๐ŸŽผTik tok OSINT
      • ๐Ÿ“ทInstagram OSINT
      • ๐ŸฆTwitter OSINT
      • ๐Ÿ”ŠDiscord OSINT
    • ๐Ÿ–‡๏ธDomaines et Sous-domaines
    • ๐ŸšชScan de ports / web
    • โœ‰๏ธEmails
    • ๐Ÿ”—Rรฉseau
    • ๐Ÿ“ทScreenshots
    • ๐Ÿ“นLive camera
    • ๐Ÿง”Reconnaissance faciale / images
    • ๐ŸŒ†Images
    • ๐Ÿ—บ๏ธMaps
    • ๐Ÿ‘๏ธActive Directory
    • โ˜๏ธCloud
    • Autre
  • ๐ŸŒPentest Web
    • โœŠBrute force / Fuzzing
    • ๐Ÿ’‰Injections
      • ๐ŸชXSS
        • PDF injection
      • ๐Ÿ“„HTMLi
      • ๐Ÿ“ƒXXE
      • 7๏ธโƒฃSSTI
      • ๐Ÿ”ขSQLi
        • ๐Ÿ‘ซUNION based
        • โณTime based
        • ๐ŸฅฝBoolean based / Error Based
        • ๐Ÿ“คOut-Of-Band
      • โ†ฉ๏ธCRLF
      • ๐ŸšOS injection
      • โ˜•Log4Shell
      • ๐Ÿฅ CSV
      • ๐ŸปESI
      • ๐Ÿ˜ŽXSLT
      • ๐Ÿ’ŒInjections dans emails
      • ๐Ÿ”€ELi
        • OGNLi
    • โ†ช๏ธOpen redirect
    • ๐Ÿ“Path Traversal / LFI / RFI
    • ๐Ÿ”“Bypass
      • ใ€ฐ๏ธWAF / Filter bypass
      • 2๏ธ2FA
    • โ˜ ๏ธCharges utiles
    • ๐Ÿ“šCMS (Content Management System)
      • WordPress
      • Joomla!
      • Magento
      • Drupal
    • ๐ŸŽญSOP bypass
      • CORS
      • postMessage()
      • JSONP
    • ๐Ÿ–ฑ๏ธClickjacking
    • โš™๏ธInsecure deserialization
    • โ˜ฃ๏ธWeb Cache Poisoning / Deception
    • ๐ŸคHTTP Smuggling
    • ๐Ÿ‘‹OAuth
    • โ›”SAML
    • ๐Ÿ—๏ธJSON Web Token
    • ๐ŸŽฃCSRF
      • ๐Ÿš€Cross-site WebSocket Hijacking (CSWSH)
    • ๐ŸŽฏIDOR
    • ๐Ÿ•น๏ธSSRF
      • Cloud SSRF
      • Protocol Smuggling
    • โš™๏ธAPIs
      • ๐Ÿฝ๏ธREST
      • ๐Ÿ“ถGraphQL
    • โ“Mot de passe oubliรฉ
    • ๐Ÿ›’Fonctions d'achat et de facturation
    • ๐Ÿ‘ฝBroken authentication / register
    • ๐ŸPanneaux d'administration
    • โฌUpload features
    • ๐Ÿ”—Broken Link Hijacking
    • ๐ŸŽฎPrise de contrรดle de sous-domaine
    • ๐Ÿ›‚Prise de contrรดle de DNS
    • โ˜๏ธOne liners
    • ๐ŸšงMisconfigurations
    • ๐Ÿ—ฟAnalyse statique
      • PHP
      • Ruby On Rails
      • Perl
      • JAVA
      • Javascript
      • Python
      • Golang
      • .NET
    • ๐ŸชฃAWS S3
    • ๐Ÿค–Captcha
    • ๐ŸชžRace conditions
    • โ˜„๏ธ.git exposรฉ
    • ๐Ÿ’ญBusiness logic
    • ๐ŸฅกPrototype pollution
    • ๐Ÿ’ฃDependency confusion
    • ๐Ÿ›‘DoS
      • ๐ŸคฏReDoS
      • ๐Ÿ‘Hash flooding
      • ๐ŸงจCookie bomb
    • Autre
      • Flask
      • Symphony
      • Spring Boot
      • Django
      • Jenkins
  • ๐ŸŒฉ๏ธPentest Cloud
    • IaC (Infrastructure as Code)
      • Terraform
      • Helm
      • Kustomize
    • AWS
      • Enumeration
    • Azure
      • Entra ID
      • Azure Resource Manager (ARM)
        • Enumeration
    • GCP
      • GCP IAM
      • Authentification
      • Enumeration
    • Kubernetes
  • ๐Ÿ•ธ๏ธPentest Rรฉseau
    • ๐ŸชกProtocoles rรฉseau
    • ๐Ÿ“กWifi
    • ๐Ÿ”‹BLE
    • ๐Ÿ“VPN
  • ๐Ÿ—‚๏ธPentest AD
    • ๐Ÿ‘บGPP
    • โžก๏ธMouvements latรฉraux
      • ๐Ÿ”ชPass The Hash
      • ๐Ÿ—ก๏ธOver Pass The Hash
    • ๐Ÿ“œADCS
  • ๐Ÿ“ฑPentest Mobile
    • ๐Ÿค–Android
      • ๐Ÿ‘พMรฉthodologie
      • ๐ŸŒณSetup environnement
      • ๐Ÿ‡Collecte d'informations
      • ๐Ÿ” Enumeration des donnรฉes locales
      • ๐Ÿ”™Reverse engineering
        • ๐ŸชขDรฉ-obfuscation
      • โ›ฐ๏ธAnalyse statique (Android)
      • ๐ŸžDebug
      • ๐ŸŽฐStockage de donnรฉes non sรฉcurisรฉ
        • ๐Ÿ“ฐLogs
        • ๐ŸคShared Preferences
        • ๐Ÿ”คStrings
        • ๐Ÿ—„๏ธSQLite DB
        • ๐Ÿ—ƒ๏ธRealm DB
        • ๐Ÿง Mรฉmoire
        • ๐Ÿ“Copy/Paste buffer caching
        • โŒจ๏ธKeyboard press caching
        • ๐Ÿ”™Backup
        • Carte SD
      • ๐ŸŒฉ๏ธFirebase/Appspot misconfig
      • ๐Ÿ”—Deeplinks vulns
        • Interception de contenu
        • WebView hijacking (via deeplink)
        • Invalid Digital assets links
      • ๐Ÿ–ผ๏ธWebView vulns
        • WebView Hijacking
        • Exfiltration de donnรฉes
        • RXSS
        • Vol de token
      • Guides outils
        • โ›๏ธOutil Drozer
          • Injections SQL (Android)
          • Path traversal (Android)
        • ๐Ÿ”ฌOutil Objection
        • ๐ŸชOutil Frida
        • Outil Medusa / Mango
      • Bypass
        • ๐Ÿ“ฒContournement de dรฉtection d'emulateur
          • ๐Ÿ“‚Fichiers d'emulateurs
          • ๐Ÿ™‹โ€โ™‚๏ธNetwork Operator Name
        • ๐ŸฆทContournement des dรฉtections de rootage
          • ๐ŸงฎRoot management
          • ๐Ÿ—๏ธClรฉ de signature du noyau
          • ๐ŸงŠProps dangereux
          • ๐Ÿฆธโ€โ™‚๏ธBinaire "su"
          • โŒPermissions sur les repertoires
        • โ˜๏ธContournement des protections biometriques
        • ๐Ÿ“œSSL pinning bypass
        • Contournement de code PIN
      • ๐Ÿ”ณLecteur de code QR/EAN/Barres...
      • ๐Ÿ’”Injection de backdoor
      • ๐ŸชงTask hijacking
      • ๐ŸŽญOverlay attacks
        • Tapjacking
        • Invisible Keyboard
      • ๐Ÿ“ตRรฉsilience
        • โŒจ๏ธThird Party Keyboards
        • ยฉ๏ธAllowed Copy/Paste on sensitive fields
        • ๐Ÿ›ค๏ธBackground screen caching
        • ๐Ÿ–‹๏ธSchรฉmas de signature
        • โฌ†๏ธIn-App updates
      • ๐ŸคฏCorruption de Mรฉmoire
    • ๐ŸiOS
      • ๐Ÿฅ…Mรฉthodologie
      • ๐ŸงฑSetup environnement (iOS)
      • โฎ๏ธReverse engineering (iOS)
      • ๐Ÿ”๏ธAnalyse statique (iOS)
      • ๐ŸงฟContournement de dรฉtection de Jailbreak
      • ๐Ÿ“ŒSSL pinning bypass (iOS)
      • ๐Ÿ‘‡Contournement d'authentification biomรฉtrique
      • ๐Ÿ›Contournement d'anti-Hooking/Debugging
      • ๐Ÿ™ˆStockage de donnรฉes non sรฉcurisรฉ (iOS)
        • ๐Ÿ’ญMรฉmoire (iOS)
        • ๐Ÿ“Copy/Paste buffer caching (iOS)
        • ๐ŸชCookies (iOS)
        • ๐Ÿ—ž๏ธLogs (iOS)
        • โŒจ๏ธCache du clavier (IOS)
        • Backup (IOS)
      • ๐Ÿ“ฑBackground screen caching
      • ๐Ÿง‘โ€๐Ÿš€WebView vulns (iOS)
      • Deeplinks vulns (iOS)
      • Lecteur de code QR
      • Firebase misc
  • ๐Ÿ‘ทPentest physique
    • ๐Ÿ”Crochetage
    • ๐Ÿ’ณRFID
    • โš™๏ธEquipements
    • ๐Ÿ’พHardware Hacking
      • ๐Ÿ“ˆUART
      • ๐ŸงชJTAG
      • โšกSWD
      • ๐ŸชขSPI
      • ๐ŸšŒIยฒC
      • ๐Ÿ”ดFault Injection
      • Side-Channel Attacks
    • ๐ŸฃFirmware hacking
  • ๐Ÿ–จ๏ธPentest IoT
    • โชReplay de stream camera
    • ๐Ÿ—ฃ๏ธAssistants vocaux
    • ๐Ÿ“นCamera IP
    • โฌ‡๏ธDoS
    • ๐Ÿ–จ๏ธImprimantes
    • ๐ŸŽฌChromecast
  • ๐Ÿ’€Hacking protocols
    • ๐Ÿ˜ฉTelnet - port 23
    • ๐Ÿ”SSH - port 22
    • ๐Ÿ“คFTP - port 21
    • โ”Whois - port 43
    • ๐Ÿ‘‰DNS - port 53
    • ๐Ÿ•โ€๐ŸฆบKerberos - port 88
    • ๐Ÿ’ผSNMP - ports 161-162
    • ๐Ÿ“จSMB - ports 445-139
    • ๐Ÿ“งSMTP - ports 25-587
    • ๐ŸŽฆRTSP - port 554
    • ๐Ÿ”ŽMS-RPC - ports 135-593
    • โž•Rsync - port 873
    • ๐Ÿ”ขMS-SQL - port 1433
    • ๐Ÿ—๏ธDocker - port 2375
    • ๐Ÿ”กMySQL - port 3306
    • ๐Ÿ“LDAP - ports 389, 636, 3268, 3269
    • ๐Ÿ–ฅ๏ธRDP - port 3389
    • โŒจ๏ธVNC - ports 5800,5801,5900,5901
  • ๐Ÿ˜ˆIngรฉnierie sociale
    • ๐Ÿง Concepts / Principes / Attaques
    • ๐ŸชงEthique
    • ๐Ÿ‘คProfils comportementaux
  • ๐Ÿ”“Crack
  • ๐Ÿ› ๏ธAutres outils utiles
    • ๐ŸšฟSandbox / Sanitizer
    • ๐Ÿ”คGรฉnรฉrateurs de wordlists personnalisรฉes
  • ๐ŸŒœPost-Exploitation
    • ๐Ÿ‘”ร‰numรฉration /ร‰lรฉvation de privilรจges
      • ๐ŸงLinux
        • CVE-2022-0847 (Dirty Pipe)
        • CVE 2021-4034 (PwnKit)
        • CVE 2021-3560 (Polkit)
      • ๐ŸชŸWindows
        • ๐Ÿ–จ๏ธPrintNightmare
        • ๐Ÿ–จ๏ธSpoolFool
        • ๐Ÿ†”Usurpation de SAMAccountName
        • โฒ๏ธScheduled task/job (T1573.005)
        • ๐ŸHiveNightmare
        • ๐Ÿ”‘Stored Credentials
        • ๐ŸŽฉSeImpersonatePrivilege
        • ๐ŸŽ’SeBackupPrivilege
        • ๐ŸžUnquoted Service Path
        • ๐ŸงฉDLL Hijacking
        • ยฉ๏ธSeBackupPrivilege
      • โ›ด๏ธDocker
    • ๐Ÿ‘ปEffacement des traces
    • โš“Persistance / Downloaders
    • ๐Ÿ›ก๏ธDefense evasion
    • ๐Ÿ“ฆExfiltration de Donnรฉes
  • ๐Ÿ”ŽForensic
    • ๐Ÿ’กMรฉthodologie
    • ๐Ÿ“บLive forensic
    • ๐Ÿ’ปMรฉmoire non volatile
    • ๐Ÿ•Š๏ธMรฉmoire volatile
    • ๐Ÿ“„File forensic
Propulsรฉ par GitBook
Sur cette page
  • Sites
  • Basics
  • Les Queries
  • Les Mutations
  • Introspection
  • Fuzzing
  • Vulnรฉrabilitรฉs
  • Classiques
  • Spรฉcifique
  • Fuites d'informations
  • Injections
  • Outils
  • CrackQL
  • Graphql-cop
  • BatchQL
  • Graphw00f
  • InQL
  • GraphQLmap
  • Clairvoyance

Cet article vous a-t-il รฉtรฉ utile ?

  1. Pentest Web
  2. APIs

GraphQL

Graph Query Language

PrรฉcรฉdentRESTSuivantMot de passe oubliรฉ

Derniรจre mise ร  jour il y a 1 an

Cet article vous a-t-il รฉtรฉ utile ?

Sites

  • : Transforme les donnรฉes graphql en graphique

  • : Permet une interaction facilitรฉ avec les endpoints graphql.

  • : Mรชme principe que graphiql.

  • : matrice des surfaces d'attaque de chaque implรฉmentations de graphQL.

Basics

GraphQL fonctionne en un seul endpoint qui ne renvoie que les informations exactement demandรฉes.

Cette technologie fonctionne avec deux types de requรชtes:

Les Queries

Les queries sont utilisรฉes afin de recupรฉrer des donnรฉes ร  l'aide d'opรฉrations spรฉcifiquement dรฉfinies. Ils s'agit grossiรจrement de l'รฉquivalent de la mรฉthode GET du protocole HTTP pour l'API.

Pour que les queries renvoient les donnรฉes voulues, il faut que les donnรฉes demandรฉes correspondent exactement ร  celles souhaitรฉs dans la rรฉponse du serveur. Les requรชtes peuvent demander des arguments et sur la base de ces arguments, des donnรฉes spรฉcifiques peuvent รชtre interrogรฉs.

Exemple:

Les Mutations

Les mutations quant ร  elles sont utilisรฉes pour ajouter, modifier ou supprimer des donnรฉes dans le systรจme. Il s'agit grossiรจrement de l'รฉquivalent des mรฉthodes PUT, DELETE et POST du protocole HTTP dans l'API. L'avantage de ce type de requรชtes est qu'il est alors possible de demander ร  mettre ร  jour une donnรฉe dans la mรชme requรชte en changeant simplement le type de requรชte (query -> mutation).

Exemple:

Introspection

L'introspection est une fonctionnalitรฉ du systรจme pouvant permettre si il est activรฉ d'interroger les ressources disponibles dans le schรฉma de l'API. De ce fait, il est possible de dumper entiรจrement le schรฉma de l'API en envoyant postant ces donnรฉes depuis l'endpoint de l'API:

{"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 ofType{kind name ofType{kind name ofType{kind name}}}}}}}}" }

Fuzzing

Dans le cas ou l'introspection serait dรฉsactivรฉ, il est nรฉcessaire de fuzz l'endpoint pour trouver des endpoints.

Vulnรฉrabilitรฉs

Classiques

Les API graphql nรฉcessites de procรฉder aux mรชmes tests que pour une API REST par exemple ร  savoir le Top 10 OWASP et autres vulnรฉrabilitรฉs WEB.

Spรฉcifique

Batching attack

La Batching attack est une attaque spรฉcifique aux API graphql, elle permet d'envoyer plusieurs demandes ร  un seul endpoint et en une seule requรชte et ceux sans risque d'รชtre bloquรฉ.

Il s'agit donc d'une attaque parfaite dans les scรฉnarios de brute-force et de bypass de 2FA (elle permet principalement de bypass les mรฉchanismes de rate-limit).

Circular query attacks (DoS)

Trouver des cycles dans une introspection graphql:

$ inql -t https://chat-api.swapcard.com/graphql --generate-cycles -o cycles

Circular fragment attacks (DoS)

Duplication attacks (DoS)

la technique est simple, il s'agit de trouver un champs envoyant une trรจs grande rรฉponse et de dupliquer la demande plusieurs fois puis analyser le temps de rรฉponse.

Exemple:

query {
    pastes {
        title
        content
        content
        content
        content
        content
        ...
        ...
    }
}

Alias Overloading (DoS)

Il est possible d'utiliser l'overloading d'alias dans un but de dรฉnis de service de la mรชme maniรจre que pour l'attaque prรฉcรฉdente en trouvant un champs utilisant beaucoup de ressources et en la dupliquant avec des alias diffรฉrents pour les considรฉrรฉs comme des requรชtes diffรฉrentes.

Exemple:

query {
    pastes {
        title
        one:content
        two:content
        three:content
        four:content
        five:content
        ...
        ...
    }
}

Directive Overloading (DoS)

Il s'agit de la mรชme chose qu'une duplication attack mais avec des directives de cette maniรจre:

query {
    pastes {
        title @aa@aa@aa@aa...
        content @aa@aa@aa@aa...
}

Object Limit Overriding (DoS)

Les serveurs graphQL peuvent implรฉmenter des limites sur la quantitรฉ de donnรฉes qu'ils renvoient par dรฉfaut. Ceci est particuliรจrement important pour les champs qui renvoient des tableaux.

Si une requรชte peut utiliser un argument permettant de limiter le nombre de retours dans la rรฉponse, (limit, offset, max...) on peut essayer d'entrer une trรจs grande afin de forcer la base de donnรฉe ร  renvoyer une quantitรฉ de donnรฉes qui pourrait entraรฎner un DoS.

query {
    pastes(limit:100000, public: true) {
        content
    }
}

Fuites d'informations

  • Via erreurs verbeuses / stack traces

  • Via entrรฉes de contenu sensibles dans une requรชte GET

  • Via debug mode activรฉ (/graphql?debug=1, /graphql?XDEBUG_SESSION_START=PHPSTORM)

  • Via fuites d'infos dans la console du navigateur

Injections

SQLi

Privilรฉgier les argument prenant des strings.

Automatisation avec sqlmap:

Dans la requรชte burp suite:

  • placer un asterisk (*) au point d'injection souhaitรฉ

  • Clic droit > "Copy to file"

  • $ sqlmap -r request.txt โ€”dbms=sqlite โ€”tables

OS injection

Exmple avec Commix:

$ commix --url="https://target.com/graphql" --data='{"query":"query{exemple(arg:"test ")}"}' -p arg

Outils

CrackQL

CrackQL est un outil de brute-forcing et fuzzing de GraphQL.

Exemple d'utilisation:

$ python3 CrackQL.py -t http://target.com/graphql -q sample-queries/login.graphql -i sample-inputs/usernames_and_passwords.csv --verbose [-b pour utiliser du batching]

Graphql-cop

graphql-cop est un scanner de vulnรฉrabilitรฉ dรฉdiรฉ aux APIs GraphQL.

Utilisation:

$ python3 graphql-cop.py -t https://target.com/graphql

BatchQL

BatchQL est un script d'audit de sรฉcuritรฉ GraphQL axรฉ sur l'exรฉcution de requรชtes et de mutations GraphQL par lots.

Utilisation:

$ python3 batch.py -e https://target.com/graphql

Graphw00f

graphw00f est un scanner d'endpoint graphQL permettant de dรฉtecter le moteur graphql utilisรฉ.

Utilisation:

$ python3 main.py -d -f -t https://target.com/graphql

InQL

GraphQLmap

GraphQLmap est un outil permettant d'interagir avec les endpoints graphql.

Clairvoyance

Permet d'obtenir le schรฉma de l'API GraphQL mรชme si l'introspection est dรฉsactivรฉe.

La taille de la rรฉponse obtenue peut alors รชtre trรจs important rendant difficile le travail d'analyse mais heureusement il existe le site permettant de convertir les donnรฉes brutes obtenues en graphique plus lisible.

ressource:

ressource:

ressource:

ressource:

InQL est une extension de burp suite permettant d'arriver ร  un resultat semblable au site web "".

ressource:

ressource:

๐ŸŒ
โš™๏ธ
๐Ÿ“ถ
https://ivangoncharov.github.io/graphql-voyager/
โœŠBrute force / Fuzzing
๐ŸŒPentest Web
https://github.com/nicholasaleks/CrackQL
https://github.com/dolevf/graphql-cop
https://github.com/assetnote/batchql
https://github.com/dolevf/graphw00f
https://github.com/swisskyrepo/GraphQLmap
https://github.com/nikitastupin/clairvoyance
graphiql
https://ivangoncharov.github.io/graphql-voyager/
https://lucasconstantino.github.io/graphiql-online/
https://altair-gql.sirmuel.design/
https://github.com/nicholasaleks/graphql-threat-matrix
Avant convertion
Aprรจs convertion