GraphQL Voyager comme outil de recherche de vulnérabilités



Actuellement, de plus en plus d'entreprises commencent Ă  utiliser GraphQL . Il s'agit d'une technologie relativement nouvelle (pour ĂȘtre plus prĂ©cis, c'est un langage de requĂȘte), qui est conçue pour rĂ©soudre les problĂšmes REST existants.

Si vous n'ĂȘtes pas familier avec GraphQL , je vous recommande de commencer par les ressources:


Dans cet article, je veux partager l'un des outils pour trouver des vulnérabilités dans l'API GraphQL. Si vous recherchiez des vulnérabilités dans l'API GraphQL, vous avez probablement rencontré de tels problÚmes:

  • Au lieu de la documentation, vous avez un Ă©norme JSON illisible (schĂ©ma GraphQL).
  • L'application Web n'utilise qu'une partie de l'API GraphQL, vous ne voyez donc pas toutes les donnĂ©es et tous les points de terminaison.

Un bon assistant pour résoudre ces problÚmes est le GraphQL Voyager , qui rend le schéma GraphQL. La visualisation facilite grandement la compréhension de l'API GraphQL et aide à trouver les vulnérabilités plus rapidement.

Pourquoi utiliser GraphQL Voyager?


Avant de rechercher des vulnĂ©rabilitĂ©s, nous voulons comprendre quelles donnĂ©es peuvent ĂȘtre obtenues et quelles opĂ©rations peuvent ĂȘtre effectuĂ©es Ă  l'aide de l'API GraphQL. En rĂšgle gĂ©nĂ©rale, il n'y aura pas de page de documentation, car GraphQL contient de la documentation en elle-mĂȘme. Vous pouvez obtenir la documentation Ă  l'aide d'une demande spĂ©ciale qui renvoie un schĂ©ma GraphQL qui contient toutes les informations publiques sur l'API GraphQL (pour en savoir plus sur la façon de procĂ©der).

Le plus souvent, un schĂ©ma est un Ă©norme JSON, et il est trĂšs difficile de comprendre l'API simplement en le lisant. Une autre chose est une reprĂ©sentation visuelle du mĂȘme JSON:


JSON vs IMAGE

Comment utiliser GraphQL Voyager?


Tout d'abord, vous devez trouver l'URL oĂč se trouve l'API GraphQL. Il existe plusieurs façons de procĂ©der:

  1. Visualisez les requĂȘtes du client (navigateur, application mobile).
  2. Parcourez les URL standard pour GraphQL. Par exemple: / graphql, / api / graphql, ... (d'autres URL se trouvent ici https://medium.com/@localh0t/discovering-graphql-endpoints-and-sqli-vulnerabilities-5d39f26cea2e ).
  3. Trouvez une mention dans la documentation ( https://developer.github.com/v4/ ) ou les actualités ( https://medium.com/paypal-engineering/graphql-a-success-story-for-paypal-checkout-3482f724fb53 ).

Une fois que vous avez trouvé l'URL des API GraphQL, vous pouvez continuer à utiliser GraphQL Voyager. C'est assez simple. Par exemple, vous pouvez visualiser SWAPI GraphQL en trois étapes:

Étape 1. Copiez la requĂȘte d'introspection (une requĂȘte qui renvoie un schĂ©ma):

  1. Accédez à https://apis.guru/graphql-voyager/ .
  2. Cliquez sur «Schéma personnalisé».
  3. Cliquez sur «Copier la requĂȘte d'introspection».

Étape 2. ExĂ©cutez la requĂȘte d'introspection:

  1. Accédez à https://graphql.imtqy.com/swapi-graphql .
  2. InsĂ©rez une requĂȘte d'introspection dans la requĂȘte (cĂŽtĂ© gauche de la page).
  3. Soumettez une demande.

Étape 3. Copiez le diagramme rĂ©sultant (le cĂŽtĂ© droit de la page) et collez-le dans Voyager.

Remarque : les Ă©tapes spĂ©cifiques peuvent varier d'une API Ă  l'autre, comme Les requĂȘtes dans GraphQL peuvent ĂȘtre implĂ©mentĂ©es de diffĂ©rentes maniĂšres.

AprĂšs cela, vous aurez une interface intuitive qui contient: un graphique avec des objets, leurs champs et les relations entre les objets.


Maintenant, c'est beaucoup plus clair

Ne vous inquiĂ©tez pas si vous avez un Ă©norme programme. L'API GraphQL peut avoir beaucoup de fonctionnalitĂ©s, ainsi que l'API REST, donc, mĂȘme malgrĂ© la prĂ©sentation pratique, il faudra encore du temps pour Ă©tudier tous les dĂ©tails.

Conclusion


GraphQL Voyager est un outil indispensable lors du test de l'API GraphQL. Avec lui, vous pouvez voir l'image complĂšte et comprendre comment utiliser l'API GraphQL.

Vous pouvez rendre Voyager encore meilleur si vous ajoutez la possibilité de comparer deux schémas. L'idée est de suivre les changements dans GraphQL et de les visualiser lorsque des changements se produisent. Cela vous aidera à découvrir rapidement de nouvelles fonctionnalités ou à modifier d'anciennes fonctionnalités.

J'ai créé un ticket sur GitHub pour cette fonctionnalité . Vous pouvez aider au développement, par exemple, des maniÚres suivantes:

  1. (version facile) Votez pour la fonctionnalité. Ainsi, la priorité de son développement sera relevée.
  2. (version matĂ©rielle) Écrivez le code vous-mĂȘme, car GraphQL Voyager a du code open source .

Source: https://habr.com/ru/post/fr448354/


All Articles