挖洞经验丨看我如何获取Facebook用户的隐私好友列表
字数 1233 2025-08-18 11:38:28

Facebook隐私好友列表获取漏洞分析报告

漏洞概述

本报告详细分析了一个Facebook隐私好友列表获取漏洞,攻击者只需知道目标用户的注册邮箱或手机号码,即可间接获取该用户的隐私好友列表,进而推断其社交关系图谱。该漏洞最终获得Facebook官方$10,000美金的奖励。

背景知识

Facebook"你可能认识的人"功能机制

Facebook的"People You May Know"(PYMK)功能基于以下因素判断用户间关系:

  1. 共同好友或相互朋友关系(最根本原因)
  2. 同属一个Facebook群组或在同一张照片中被标记
  3. 通过同一网络出口(学校、单位)登录过Facebook账户

Facebook好友列表隐私设置

默认情况下,Facebook用户的好友列表是公开的,但提供三种隐私选项:

  • 公开
  • 仅朋友可见
  • 仅自己可见(自定义设置)

漏洞发现与利用

漏洞原理

攻击者可通过注册流程中的"更新联系方式"功能,将自己的联系方式与目标用户的账户关联,从而获取目标用户的"你可能认识的人"列表,该列表实际上就是目标用户的好友列表。

详细利用步骤

  1. 初始注册阶段

    • 攻击者输入目标受害者的手机号码作为注册确认号码
    • Facebook向该号码发送短信验证码
  2. 绕过验证码验证

    • 攻击者无法获取目标用户的短信验证码
    • 点击"更新联系方式"(Update Contact info)按钮
    • 在弹出窗口中添加攻击者自己的邮箱地址(如hack@rajsek.com)
  3. 完成验证

    • 攻击者邮箱收到Facebook验证码
    • 在确认界面输入该验证码并选择"继续"
    • Facebook确认账户与攻击者邮箱绑定关系
  4. 获取好友列表

    • 访问特定URL获取"你可能认识的人"列表:
      https://www.facebook.com/friends/requests/?fcref=swpsa
      
      或使用curl命令:
      curl 'https://www.facebook.com/gettingstarted/?step=friend_requests' \
      -H 'authority: www.facebook.com' \
      -H 'referer: https://www.facebook.com/gettingstarted/' \
      -H 'cookie: xxxx' --compressed
      
    • 系统推送的"你可能认识的人"列表即为目标用户的好友列表

替代利用方法

攻击者也可以:

  • 使用目标受害者的邮箱作为注册人信息
  • 使用自己的手机号码作为联系更新信息
  • 同样能获取目标受害者的好友列表

漏洞影响

  1. 隐私泄露

    • 攻击者可获取用户的完整好友列表
    • 推断用户的社交关系图谱
  2. 攻击门槛低

    • 仅需知道目标用户的注册邮箱或手机号码
    • 这些信息可通过社工或其他方式获取
  3. 潜在危害

    • 可用于针对性钓鱼攻击
    • 可用于社交工程攻击
    • 可能泄露敏感人际关系

漏洞修复建议

  1. 注册流程改进

    • 严格验证原始联系方式的控制权
    • 限制在验证过程中更改联系方式
  2. "你可能认识的人"功能改进:

    • 确保该列表不泄露隐私信息
    • 应用与好友列表相同的隐私设置
  3. 权限控制

    • 对新注册账户的"你可能认识的人"功能进行限制
    • 增加额外的验证步骤

漏洞上报时间线

  • 2018.10.16:向Facebook进行漏洞初报
  • 2019.3.20:Facebook确认漏洞并奖励$10,000 USD

总结

该漏洞展示了社交网络平台中看似无害的功能可能被滥用来获取敏感信息。开发人员在设计用户注册和推荐系统时,必须充分考虑隐私保护机制,防止信息通过间接方式泄露。

Facebook隐私好友列表获取漏洞分析报告 漏洞概述 本报告详细分析了一个Facebook隐私好友列表获取漏洞,攻击者只需知道目标用户的注册邮箱或手机号码,即可间接获取该用户的隐私好友列表,进而推断其社交关系图谱。该漏洞最终获得Facebook官方$10,000美金的奖励。 背景知识 Facebook"你可能认识的人"功能机制 Facebook的"People You May Know"(PYMK)功能基于以下因素判断用户间关系: 共同好友或相互朋友关系(最根本原因) 同属一个Facebook群组或在同一张照片中被标记 通过同一网络出口(学校、单位)登录过Facebook账户 Facebook好友列表隐私设置 默认情况下,Facebook用户的好友列表是公开的,但提供三种隐私选项: 公开 仅朋友可见 仅自己可见(自定义设置) 漏洞发现与利用 漏洞原理 攻击者可通过注册流程中的"更新联系方式"功能,将自己的联系方式与目标用户的账户关联,从而获取目标用户的"你可能认识的人"列表,该列表实际上就是目标用户的好友列表。 详细利用步骤 初始注册阶段 : 攻击者输入目标受害者的手机号码作为注册确认号码 Facebook向该号码发送短信验证码 绕过验证码验证 : 攻击者无法获取目标用户的短信验证码 点击"更新联系方式"(Update Contact info)按钮 在弹出窗口中添加攻击者自己的邮箱地址(如hack@rajsek.com) 完成验证 : 攻击者邮箱收到Facebook验证码 在确认界面输入该验证码并选择"继续" Facebook确认账户与攻击者邮箱绑定关系 获取好友列表 : 访问特定URL获取"你可能认识的人"列表: 或使用curl命令: 系统推送的"你可能认识的人"列表即为目标用户的好友列表 替代利用方法 攻击者也可以: 使用目标受害者的邮箱作为注册人信息 使用自己的手机号码作为联系更新信息 同样能获取目标受害者的好友列表 漏洞影响 隐私泄露 : 攻击者可获取用户的完整好友列表 推断用户的社交关系图谱 攻击门槛低 : 仅需知道目标用户的注册邮箱或手机号码 这些信息可通过社工或其他方式获取 潜在危害 : 可用于针对性钓鱼攻击 可用于社交工程攻击 可能泄露敏感人际关系 漏洞修复建议 注册流程改进 : 严格验证原始联系方式的控制权 限制在验证过程中更改联系方式 "你可能认识的人"功能改进: 确保该列表不泄露隐私信息 应用与好友列表相同的隐私设置 权限控制 : 对新注册账户的"你可能认识的人"功能进行限制 增加额外的验证步骤 漏洞上报时间线 2018.10.16:向Facebook进行漏洞初报 2019.3.20:Facebook确认漏洞并奖励$10,000 USD 总结 该漏洞展示了社交网络平台中看似无害的功能可能被滥用来获取敏感信息。开发人员在设计用户注册和推荐系统时,必须充分考虑隐私保护机制,防止信息通过间接方式泄露。