从业者-意外暴露私有GraphQL字段
# 实验室:意外暴露私有GraphQL字段
# 题目
此实验室的用户管理功能由 GraphQL 端点提供支持。该实验室包含一个访问控制漏洞,你可以通过该漏洞诱使 API 泄露用户凭据字段。
若要解决实验室问题,请以管理员身份登录并删除carlos
账户。
我们建议你在尝试此实验之前安装 InQL 扩展。InQL 可以更轻松地在 Repeater 中修改 GraphQL 查询,并使你能够扫描 API 模式信息。
有关使用 InQL 的更多信息,请参阅在 Burp Suite 中使用 GraphQL (opens new window)。
- name: 实验室-从业者
desc: 意外暴露私有GraphQL字段 >>
avatar: https://fastly.statically.io/gh/clincat/blog-imgs@main/vuepress/static/imgs/docs/burpsuite-learn/public/lab-logo.png
link: https://portswigger.net/web-security/graphql/lab-graphql-accidental-field-exposure
bgColor: '#001350'
textColor: '#4cc1ff'
1
2
3
4
5
6
2
3
4
5
6
# 实操
点击 “ACCESS THE LAB” 进入实验室。
一个博客站点。
启用 BurpSuite 代理并刷新网页,捕获有关于 GraphQL 的查询请求。
在 HTTP 历史记录中看到一个眼熟的路径/graphql/v1
,其中包含 GraphQL 查询。
右键数据包,选择 “Generate queries with InQL Scanner”,将数据包转发至 InQL 扩展,并自动探测 GraphQL API 端点的内省,以获取 API 端点的模式信息。
在目标站点的 GraphQL API 模式信息中,可以看到一个可疑查询对象getUser
。
复制整个getUser
查询对象,并指定参数为id: 1
。
query {
getUser(id: 1) {
id
password
username
}
}
1
2
3
4
5
6
7
2
3
4
5
6
7
查看响应,发现了管理员账户的用户名和密码。
访问登录界面,使用刚刚发现的管理员用户名和密码进行登录。
登录成功,点击 “Admin panel” 进入管理界面。
点击 “Delete” 删除 carlos 账户。
删除成功,实验完成。
编辑 (opens new window)