GraphQL Voyager作为查找漏洞的工具



当前,越来越多的公司开始使用GraphQL 。 这是一种相对较新的技术(更确切地说,它是一种查询语言),旨在解决现有的REST问题。

如果您不熟悉GraphQL ,建议从以下资源开始:


在本文中,我想分享一种在GraphQL API中查找漏洞的工具。 如果您在GraphQL API中寻找漏洞,那么您可能会遇到以下问题:

  • 而不是文档,您拥有一个庞大的无法读取的JSON(GraphQL模式)。
  • 该Web应用程序仅使用GraphQL API的一部分,因此您看不到所有数据和端点。

解决这些问题的好帮手是GraphQL Voyager ,它呈现了GraphQL模式。 可视化极大地促进了对GraphQL API的理解,并有助于更快地发现漏洞。

为什么要使用GraphQL Voyager?


在寻找漏洞之前,我们想了解使用GraphQL API可以获得哪些数据以及可以执行哪些操作。 通常,将没有文档页面,因为GraphQL本身包含文档。 您可以使用特殊请求获取文档,该请求返回GraphQL模式,该模式包含有关GraphQL API的所有公共信息(有关如何执行此操作的进一步信息)。

通常,模式是一个巨大的JSON,仅通过阅读就很难理解API。 另一件事是相同JSON的视觉表示:


JSON与IMAGE

如何使用GraphQL Voyager?


首先,您需要找到GraphQL API所在的URL。 有几种方法可以做到这一点:

  1. 查看来自客户端(浏览器,移动应用程序)的请求。
  2. 遍历GraphQL的标准URL。 例如:/ graphql,/ api / graphql,...(更多网址可在此处https://medium.com/@localh0t/discovering-graphql-endpoints-and-sqli-vulnerabilities-5d39f26cea2e )。
  3. 在文档( https://developer.github.com/v4/ )或新闻( https://medium.com/paypal-engineering/graphql-a-success-story-for-paypal-checkout-3482f724fb53 )中找到提及。

找到GraphQL API的URL后,就可以继续使用GraphQL Voyager。 这很简单。 例如,您可以通过三个步骤来可视化SWAPI GraphQL

步骤1.复制自省查询(返回模式的查询):

  1. 转到https://apis.guru/graphql-voyager/
  2. 单击“自定义架构”。
  3. 单击“复制自省查询”。

步骤2.运行自省查询:

  1. 转到https://graphql.imtqy.com/swapi-graphql
  2. 将自省查询插入查询(页面左侧)。
  3. 提交请求。

步骤3.复制结果图(页面右侧)并将其粘贴到Voyager中。

注意 :具体步骤可能因一个API的不同而异,因为 GraphQL中的查询可以以不同的方式实现。

之后,您将拥有一个直观的界面,其中包含:带有对象的图形,它们的字段和对象之间的关系。


现在更清楚了

如果您有很大的计划,请不要惊慌。 GraphQL API和REST API一样,可以具有很多功能,因此,尽管演示方便,但仍然需要花费一些时间来研究所有细节。

结论


在测试GraphQL API时,GraphQL Voyager是必不可少的工具。 有了它,您可以查看整个图片并了解如何使用GraphQL API。

如果添加比较两个方案的功能,则可以使Voyager更好。 想法是跟踪GraphQL中的更改并在发生更改时将其可视化。 这将有助于快速了解新功能或修改旧功能。

在GitHub上为此功能创建了一个票证 。 您可以通过以下方式协助开发:

  1. (简易版)为功能投票。 因此,将优先发展它。
  2. (硬版)自己编写代码,因为 GraphQL Voyager具有开源代码

Source: https://habr.com/ru/post/zh-CN448354/


All Articles