挖洞经验 | 对Facebook进行安全测试之账户劫持
字数 1214 2025-08-15 21:33:04

Facebook账户劫持漏洞分析与利用教学

漏洞背景

本教学文档基于2020年12月披露的Facebook子域名账户劫持漏洞,该漏洞允许攻击者通过密码重置功能劫持特定子域名的管理员账户,获得了Facebook官方7500美元的漏洞奖励。

目标分析

目标子域名:https://legal.tapprd.thefacebook.com

初始信息收集

  1. 使用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/
    
  2. 关键发现路径:

    • 单点登录(SSO)绕过路径:/tapprd/portal/authentication/login
    • 密码重置相关路径:
      • /tapprd/auth/identity/user/forgotpassword (忘记密码)
      • /tapprd/auth/identity/user/savepassword (保存密码)

漏洞分析

密码重置机制缺陷

  1. 通过分析JS脚本发现/tapprd/auth/identity/user/savepassword的调用方法:

    • 请求类型:POST
    • 请求参数:绑定邮箱和新设置的密码
    • 安全机制:生成token和xsrf token
  2. 漏洞点:

    • 密码重置功能未正确验证用户身份
    • 仅需知道目标邮箱即可重置密码
    • 无二次验证机制

漏洞利用步骤

准备工作

  1. 准备Facebook管理员邮箱字典库
  2. 准备Burp Suite工具

利用过程

  1. 使用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
  2. 识别成功响应:

    • 成功响应会返回302重定向到登录页面
    • 失败响应会返回错误信息
  3. 确认有效邮箱后:

    • 使用该邮箱和新设置的密码尝试登录
    • 登录URL:https://legal.tapprd.thefacebook.com/tapprd/portal/authentication/login
  4. 成功进入管理界面

自动化利用脚本开发

可以开发自动化脚本实现以下功能:

  1. 输入目标邮箱和新密码
  2. 自动构造POST请求到/savepassword
  3. 检测响应是否为302重定向
  4. 自动尝试使用新密码登录

漏洞修复建议

  1. 密码重置功能应增加二次验证:

    • 发送验证码到注册邮箱/手机
    • 要求回答安全问题
  2. 实施速率限制:

    • 限制单位时间内密码重置尝试次数
  3. 加强日志监控:

    • 记录所有密码重置请求
    • 对异常行为发出警报

总结

该漏洞展示了即使是大公司如Facebook,其子域名系统也可能存在严重的安全隐患。通过系统的信息收集、端点分析和有针对性的测试,安全研究人员可以发现并报告这类高危漏洞。

参考资源

  1. 原始漏洞报告:Medium文章《HTML to PDF converter bug leads to RCE in Facebook server》
  2. 研究者博客:https://alaa.blog/
  3. FreeBuf原文链接:[原文链接]
Facebook账户劫持漏洞分析与利用教学 漏洞背景 本教学文档基于2020年12月披露的Facebook子域名账户劫持漏洞,该漏洞允许攻击者通过密码重置功能劫持特定子域名的管理员账户,获得了Facebook官方7500美元的漏洞奖励。 目标分析 目标子域名: https://legal.tapprd.thefacebook.com 初始信息收集 使用fuzz工具扫描发现多个403禁止访问的路径,表明网站结构复杂: 关键发现路径: 单点登录(SSO)绕过路径: /tapprd/portal/authentication/login 密码重置相关路径: /tapprd/auth/identity/user/forgotpassword (忘记密码) /tapprd/auth/identity/user/savepassword (保存密码) 漏洞分析 密码重置机制缺陷 通过分析JS脚本发现 /tapprd/auth/identity/user/savepassword 的调用方法: 请求类型:POST 请求参数:绑定邮箱和新设置的密码 安全机制:生成token和xsrf token 漏洞点: 密码重置功能未正确验证用户身份 仅需知道目标邮箱即可重置密码 无二次验证机制 漏洞利用步骤 准备工作 准备Facebook管理员邮箱字典库 准备Burp Suite工具 利用过程 使用Burp Intruder模块测试 /savepassword 端点: 构造POST请求: 使用邮箱字典作为payload 识别成功响应: 成功响应会返回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原文链接:[ 原文链接 ]