用户
搜索
  • TA的每日心情
    擦汗
    2019-1-31 10:58
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    官方账号

    Rank: 7Rank: 7Rank: 7

    101

    主题

    101

    帖子

    1175

    魔法币
    收听
    0
    粉丝
    1
    注册时间
    2018-12-21

    i春秋认证

    发表于 2019-9-3 18:49:05 0450

    22.png

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

    漏洞详情

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

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

    33.png

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

    漏洞发现流程

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

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

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

    44.jpg

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

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

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

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

    55.jpg

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

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

    66.jpg

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

    类似地,我用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
    
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册