Grahql查询漏洞所引起的敏感信息泄露

本文介绍了安全工程师Pratik Yadav发现的一个GraphQL查询漏洞,该漏洞可能导致用户敏感信息泄露。通过电子邮件地址,攻击者可以获取目标用户的敏感信息,如钱包地址。在渗透测试中,Pratik详细描述了发现和利用该漏洞的过程,以及负责任地披露漏洞给相关公司的经历。最终,公司确认漏洞并给予了奖励。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

大家好,我是Pratik Yadav,目前在Crypto Buying Site担任安全工程师(同时我也是计算机工程专业的大四学生),很感谢公司给我提供了一份全职工作,即使我还没有完全毕业。

漏洞详情

为了发现这个漏洞,我花了不少时间学习graphql基础知识,并阅读了可以找到的所有漏洞报告。在某次渗透测试的过程中,当我检查目标的子域时,我发现其中一个子域stg.target.com使用了graphql而不是Rest-API

你可以在这里阅读更多关于graphql的信息。简单来说,GraphQL是一种用于API的查询语言,GraphQL对你的API中的数据提供了一套易于理解的完整描述,使得客户端能够准确地获得它需要的数据,而且没有任何冗余,一个请求就可获得多个指定资源,目前已有大量国际公司使用该语言构建自己的网站。
在这里插入图片描述

需要说明的是,在我这个案例中,用户可通过目标应用转账给他们的家人或朋友或任何用户。而我发现的这个漏洞只需要受害者的电子邮件地址即可触发。

漏洞发现流程

1.首先,我通过Burp的代理时刻监控数据流,并尽量执行所有敏感操作,比如将钱从一个帐户发送到另一个帐户。

2.在检查了所有敏感操作的相关请求后,我的注意力还是集中到转移钱的请求上。

3.在转移钱之前,应用会先验证目标用户是否已经是注册用户,这是通过Graphql查询实现的。

在这里插入图片描述

4.从上面的截图的请求回应中可以看出,有一个__typename:Auth_User字段。

5.因此,思考一段时间后,我决定找到涉及__typename:Auth_user的所有字段。

6.利用我所学习的graphql知识,我构建了如下查询语句,它会找出所有的typename和相关字段值。

https://api.stg.target.com/graphq?query={__schema{types{name,fields{name}}}}

在这里插入图片描述

所以我检查了typename:Auth_user的所有字段,注意到其中两个字段addressLine1addressLine2,貌似是很敏感的信息。

7.因此,我替换了原始请求中的status,使用了addressLine1代替,然后正如预期的那样,服务器返回了测试帐户地址。

在这里插入图片描述

因此,只要电子邮件地址,你就可以窃取任何人的任何敏感信息

类似地,我用balancewallet_address等一系列敏感字段进行了替换,均返回了其他用户的敏感信息。

披露流程

1.我大约在凌晨1点(印度标准时间)向他们报到了漏洞。

2.他们在看到了我提供的视频证据后,立即下线了该子域名。

3.最后,他们给了我四位数美元的奖金(这是我目前得到的最高奖金)。

感谢你的阅读!

参考:https://graphql.cn/learn/

本文由白帽汇整理并翻译,不代表白帽汇任何观点和立场:https://nosec.org/home/detail/2922.html
来源:https://medium.com/@pratiky054/graphql-bug-to-steal-anyones-address-fc34f0374417

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值