挖洞经验 | 对Facebook进行安全测试之账户劫持
字数 1214 2025-08-15 21:33:04
Facebook账户劫持漏洞分析与利用教学
漏洞背景
本教学文档基于2020年12月披露的Facebook子域名账户劫持漏洞,该漏洞允许攻击者通过密码重置功能劫持特定子域名的管理员账户,获得了Facebook官方7500美元的漏洞奖励。
目标分析
目标子域名:https://legal.tapprd.thefacebook.com
初始信息收集
-
使用fuzz工具扫描发现多个403禁止访问的路径,表明网站结构复杂:
/tapprd/ /tapprd/content/ /tapprd/services/ /tapprd/Content/ /tapprd/api/ /tapprd/Services/ /tapprd/temp/ /tapprd/logs/ /tapprd/logs/portal/ /tapprd/logs/api/ /tapprd/certificates/ /tapprd/logs/auth/ /tapprd/logs/Portal/ /tapprd/API/ /tapprd/webroot/ /tapprd/logs/API/ /tapprd/certificates/sso/ /tapprd/callback/ /tapprd/logs/callback/ /tapprd/Webroot/ /tapprd/certificates/dkim/ /tapprd/SERVICES/ -
关键发现路径:
- 单点登录(SSO)绕过路径:
/tapprd/portal/authentication/login - 密码重置相关路径:
/tapprd/auth/identity/user/forgotpassword(忘记密码)/tapprd/auth/identity/user/savepassword(保存密码)
- 单点登录(SSO)绕过路径:
漏洞分析
密码重置机制缺陷
-
通过分析JS脚本发现
/tapprd/auth/identity/user/savepassword的调用方法:- 请求类型:POST
- 请求参数:绑定邮箱和新设置的密码
- 安全机制:生成token和xsrf token
-
漏洞点:
- 密码重置功能未正确验证用户身份
- 仅需知道目标邮箱即可重置密码
- 无二次验证机制
漏洞利用步骤
准备工作
- 准备Facebook管理员邮箱字典库
- 准备Burp Suite工具
利用过程
-
使用Burp Intruder模块测试
/savepassword端点:- 构造POST请求:
POST /tapprd/auth/identity/user/savepassword HTTP/1.1 Host: legal.tapprd.thefacebook.com Content-Type: application/x-www-form-urlencoded email=[TARGET_EMAIL]&password=[NEW_PASSWORD]&csrf_token=[RANDOM_VALUE] - 使用邮箱字典作为payload
- 构造POST请求:
-
识别成功响应:
- 成功响应会返回302重定向到登录页面
- 失败响应会返回错误信息
-
确认有效邮箱后:
- 使用该邮箱和新设置的密码尝试登录
- 登录URL:
https://legal.tapprd.thefacebook.com/tapprd/portal/authentication/login
-
成功进入管理界面
自动化利用脚本开发
可以开发自动化脚本实现以下功能:
- 输入目标邮箱和新密码
- 自动构造POST请求到
/savepassword - 检测响应是否为302重定向
- 自动尝试使用新密码登录
漏洞修复建议
-
密码重置功能应增加二次验证:
- 发送验证码到注册邮箱/手机
- 要求回答安全问题
-
实施速率限制:
- 限制单位时间内密码重置尝试次数
-
加强日志监控:
- 记录所有密码重置请求
- 对异常行为发出警报
总结
该漏洞展示了即使是大公司如Facebook,其子域名系统也可能存在严重的安全隐患。通过系统的信息收集、端点分析和有针对性的测试,安全研究人员可以发现并报告这类高危漏洞。
参考资源
- 原始漏洞报告:Medium文章《HTML to PDF converter bug leads to RCE in Facebook server》
- 研究者博客:https://alaa.blog/
- FreeBuf原文链接:[原文链接]