api漏洞测试-GraphQL自省问题
正文
正常情况下的请求:在生产环境中,开发者通常会禁用自省查询功能,只允许有限的、明确授权的查询。例如,用户只被允许查询他们自己账户的信息,无法访问其他用户的信息。
示例(正常请求):
{
user(handle: "john_doe") {
id
name
email
}
}
这个请求只会返回授权用户的信息,开发者可以通过权限控制和验证来确保用户不能访问其他用户的数据。
受到攻击后的请求:如果自省查询未被禁用,攻击者可以使用自省查询来获得整个 schema,然后构建出未授权的查询,从而访问敏感数据。
攻击示例:首先,攻击者使用自省查询获取整个 schema 信息
使用下面链接中的payLoad进行查询
https://gist.github.com/craigbeck/b90915d49fda19d5b2b17ead14dcd6da
获得 schema 信息后,攻击者知道了有一个 "team" 节点,即使这个节点已被标记为弃用,攻击者仍然可以通过构建如下的查询来访问:
{
team(handle: "security") {
id
about
base_bounty
bug_count
sla_failed_count
sla_missed_count
}
}
通过这种方式,攻击者可以访问本应禁止访问的团队信息,甚至获得未公开的字段,如 "sla_failed_count"。
参考
https://hackerone.com/reports/291531
原文始发于微信公众号(迪哥讲事):api漏洞测试-GraphQL自省问题
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论