GraphQL漏洞笔记及案例

admin 2024年12月24日13:20:18评论13 views字数 1822阅读6分4秒阅读模式

目录

  1. GraphQL的基础知识
  2. 相关漏洞整理
    1. 敏感信息泄露与越权
    2. Express-GraphQL Endpoint CSRF漏洞
    3. GraphQL的注入漏洞
    4. Graphene-Django DEBUG
  3. 漏洞实例 - 越权与信息泄露
  4. 修复

之前打CTF的时候也遇到GraphQL,但没有整理。这次遇到一个实例,就把相关的漏洞都整理了一下。文章包含了以下内容:

  1. 敏感信息泄露与越权
  2. Express-GraphQL Endpoint CSRF漏洞
  3. GraphQL注入
  4. Graphene-Django DEBUG
  5. 一个漏洞的实例

GraphQL的基础知识

强烈推荐这一篇:https://juejin.im/post/5cd56b1f6fb9a0321e16bde3

以及:https://juejin.im/post/5c87b1776fb9a049ac7a0247

相关漏洞整理

这里的笔记整理自:https://xzfile.aliyuncs.com/upload/zcon/2018/7_攻击GraphQL_phithon.pdf

敏感信息泄露与越权

利用GraphQL的内省,可以查询出GraphQL中所有的Query、Mutaion、ObjectType、Field、Arguments。

内省:https://graphql.cn/learn/introspection/

一些工具自带解析内省,可以快速查看GraphQL的Schema。

工具:

手动查询:

  • 查询存在的类型
1
2
3
4
5
6
7
{
__schema {
types {
name
}
}
}

GraphQL漏洞笔记及案例

  • 查询一个类型的所有字段
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
__type (name: "Query") {
name
fields {
name
type {
name
kind
ofType {
name
kind
}
}
}
}
}

GraphQL漏洞笔记及案例

对于内省找出来的字段,要关注敏感信息相关的字段。比如P神PPT中所列的字段:

1
2
3
4
5
6
email
password
secretKey
token
licenseKey
session

根据所发现的字段,再构造语句进行调用查询或者修改。

Express-GraphQL Endpoint CSRF漏洞

在Express-GraphQL中,如果一个Mutaion对应的是敏感操作,把Content-Type修改为application/x-www-form-urlencoded之后,操作仍可正常执行。

GraphQL漏洞笔记及案例

GraphQL漏洞笔记及案例

可以用Brupsuite生成CSRF POC即可利用。

GraphQL的注入漏洞

和SQL注入漏洞类似,都是破坏语句 ⇒ 构建恶意语句来进行利用的。没有漏洞环境,就记录一下PPT中的内容了。

思考:使用GraphQL获取内容 ⇒ 再拼接SQL语句 ⇒ 导致SQL注入

GraphQL漏洞笔记及案例

GraphQL漏洞笔记及案例

Graphene-Django DEBUG

在Graphene-Django下,可以通过添加__debug字段来获取每次查询的详细信息,比如完整的SQL语句等

GraphQL漏洞笔记及案例

漏洞实例 - 越权与信息泄露

这次遇到一个GraphQL站,但后台使用了一个自研框架进行了包装,测试之后发现基本的情况如下:

  1. 可以执行query、mutation操作
  2. 无法查询__schema(原因是后台框架对所有接口进行了一个包装,只能访问框架内定义的接口)
  3. 只有一两个接口是已知的

在无法使用内省的情况下,这里的字段都是未知的。只能通过fuzz来进行测试。(结果是我没有fuzz出来)但是也不妨碍我把这个未授权复现成功(通过看开发者定义的文档得到字段)

直接通过chrome的GraphQL插件查询出所有用户的信息,并且还可以越权生成校验码!

以下操作都是在没有任何用户权限的情况下进行的:

查询所有用户信息:

GraphQL漏洞笔记及案例

创建校验码:

GraphQL漏洞笔记及案例

实际上所有的接口都是未授权的,主要的问题是不知道字段名就很鸡肋。

修复

在GraphQL和数据直接多加一个校验层,参考Hackone对GraphQL的问题提出的解决办法:

https://www.hackerone.com/blog/the-30-thousand-dollar-gem-part-1

- By:threezh1.com

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年12月24日13:20:18
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   GraphQL漏洞笔记及案例https://cn-sec.com/archives/3547686.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息