前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >GraphQL API 漏洞挖掘基础学习

GraphQL API 漏洞挖掘基础学习

作者头像
网e渗透安全部
发布2024-11-21 08:14:12
发布2024-11-21 08:14:12
23500
代码可运行
举报
文章被收录于专栏:白安全组
运行总次数:0
代码可运行

前言

GraphQL API漏洞是由于设计缺陷产生,比如,自省功能处于开启状态,使攻击者可以查询API来收集架构的信息。

查找GraphQL端点

我们测试GraphQLAPI之前,需要找到端点,由于GraphQL对所有请求都使用相同的端点,所以找到端点很有价值。

如何发现端点

1、BurpSuite

使用bp在扫描过程中自动测试GraphQL端点,找到会引发找到GraphQL端点问题。

2、通用查询

如果发送query{__typename}到任何 GraphQL 端点

它将{"data": {"__typename": "query"}}在其响应中的某个位置包含该字符串。这称为通用查询,是探测 URL 是否对应于 GraphQL 服务的有用工具。

3、通用端点名称

GraphQL 服务通常使用类似的端点后缀。测试 GraphQL 端点时,您应该尝试将通用查询发送到以下位置:

代码语言:javascript
代码运行次数:0
复制
/graphql
/api
/api/graphql
/graphql/api
/graphql/graphql

如果这些常见端点没有返回 GraphQL 响应,您也可以尝试附加/v1到路径。

注:GraphQL服务通常对任何非GraphQL请求做出查询不存在或者错误的响应。

4、请求方法

找到GraphQL端点最好的方式,就是bp设置post请求仅接收application/json方法。

利用不安全参数

如果API使用参数可以直接访问对象,就可能收到访问控制漏洞的影响。用户只需要提供正确的参数,就可以访问到一些未授权信息,成为IDOR

如何发现GraphQL架构信息

最好的方式是使用自省查询,自省是一个内置的GraphQL函数,可以让我们查询服务器以获取相关的架构信息。

如何使用自省

要使用自省来发现架构信息,需要查询该__schema字段。这个字段在所有查询的类型上都可用。我们可以使用burp进行查询

我们使用BURP在记录中找到

代码语言:javascript
代码运行次数:0
复制
/graphql
/api
/api/graphql
/graphql/api
/graphql/graphql
/graphql/v1

找到着一些页面,我们可以发送到重发器,最新版的bp可以在其中找到GraphQL

自省启动了但查询未运行

如果启用了自省但上述查询未运行,尝试从查询结构中删除onOperation、onFragment和指令。许多端点不接受这些指令作为自省查询的一部分,通过删除它们,通常可以更成功地进行自省。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-09-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 白安全组 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 查找GraphQL端点
    • 如何发现端点
      • 1、BurpSuite
      • 2、通用查询
      • 3、通用端点名称
      • 4、请求方法
  • 利用不安全参数
  • 如何发现GraphQL架构信息
    • 如何使用自省
    • 自省启动了但查询未运行
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档