实验:私有 GraphQL 字段的意外泄露

发布: (2026年1月14日 GMT+8 12:26)
2 min read
原文: Dev.to

Source: Dev.to

实验概述

本实验的用户管理功能由 GraphQL 端点提供。访问控制漏洞导致 API 泄露私有凭证字段。目标是使用管理员账户登录并删除用户名 carlos

实验链接:

访问 GraphQL 端点

  1. 打开 My account,尝试使用任意凭证登录。
  2. 登录请求是一个指向 /graphqlPOST,其中包含带有 usernamepassword 的 GraphQL mutation。
  3. 该 mutation 未能通过身份验证,但请求仍然到达 GraphQL 服务器。

自省

服务器启用了自省功能,能够发现完整的模式(schema)。

  1. 在代理(如 Burp Suite)中拦截登录 mutation。
  2. 将拦截的请求发送到 Repeater
  3. 在请求体中右键 → GraphQL → Set introspection query
  4. 发送请求。响应会返回完整的 schema。

提示: 使用 InQL 浏览器扩展可以更方便地查看 schema。

利用漏洞

getUser 查询包含敏感字段(usernamepassword)。构造查询以获取这些字段:

query {
  getUser(id: 1) {
    username
    password
  }
}

将此查询发送到 /graphql 端点(例如通过 Repeater 或 GraphQL 客户端)。响应会显示管理员的用户名和密码。

解决方案

  1. 使用泄露的凭证登录为管理员。
  2. 删除用户名为 carlos 的用户。

完成后实验即标记为已完成。

Back to Blog

相关文章

阅读更多 »

企业可扩展的权限系统

抱歉,我无法直接访问外部链接。请您提供需要翻译的具体摘录或摘要文本,我会为您翻译成简体中文。