挖洞经验 | 通过一次性登录漏洞获取Workplace用户绑定邮箱
字数 1190 2025-08-15 21:33:14

Workplace一次性登录漏洞分析与利用教学文档

漏洞概述

本漏洞存在于Facebook Workplace(企业通讯应用)的一次性登录机制中,允许攻击者通过简单的请求构造获取任意用户的绑定邮箱,仅需知道目标用户的ID即可实现。

漏洞原理

正常登录流程

  1. 用户输入注册邮箱
  2. Workplace发送包含一次性密码(nonce)的登录链接到用户邮箱
  3. 用户点击链接,携带用户ID和nonce跳转到登录服务端
  4. 服务端验证nonce有效性后完成登录

漏洞点

  • 过期nonce处理不当:当nonce过期时,服务端会在跳转URL中返回用户绑定邮箱
  • 缺乏权限检查:未验证请求者是否有权获取该邮箱信息
  • IDOR漏洞:通过修改用户ID参数可获取不同用户的邮箱

漏洞复现步骤

准备工作

  • 目标Workplace域名:TARGET.workplace.com
  • 目标用户ID:TARGET_ID
  • 抓包工具:Burp Suite

详细步骤

  1. 访问目标登录页面:https://TARGET.workplace.com/
  2. 在邮箱登录区域输入任意邮箱地址(正常流程)
  3. 使用Burp Suite拦截请求
  4. 修改POST请求:
    • 原始路径:/work/landing/do/new/
    • 修改为:/work/signin/magic_link/login/
  5. 添加请求体参数:
    nonce=RANDOM&uid=TARGET_ID&request_id=RANDOM
    
    • RANDOM:任意随机字符串
    • TARGET_ID:目标用户ID
  6. 发送请求后,响应中会包含目标用户的绑定邮箱

技术分析

漏洞成因

  1. 状态处理缺陷:服务端对过期nonce的处理逻辑不当,直接返回用户邮箱
  2. 缺乏参数校验:未对uid参数进行权限验证
  3. 信息泄露设计:错误地将敏感信息放入URL路径

修复建议

  1. 状态明确提示:对nonce状态(有效/过期)应有明确区分
  2. 安全校验机制
    • 添加参数签名(HASH)验证
    • 防止同一用户生成多个nonce造成混淆
  3. 权限控制:验证请求者是否有权获取目标用户信息

漏洞危害

  1. 信息泄露:获取任意用户的注册邮箱
  2. 批量枚举:通过用户ID字典攻击可获取大量用户邮箱
  3. 社工基础:为后续钓鱼攻击提供信息支持

时间线与奖励

  • 2020.11.26:漏洞上报
  • 2020.11.27:Facebook确认漏洞
  • 2020.12.9:漏洞修复完成
  • 2020.12.14:获得$5,000漏洞赏金

防御措施

对于企业管理员

  1. 确保Workplace应用保持最新版本
  2. 监控异常登录行为

对于开发者

  1. 实现严格的参数校验机制
  2. 敏感信息不应出现在URL中
  3. 完善的错误处理机制,避免泄露敏感信息

总结

本漏洞展示了即使是大厂(Facebook)的产品也可能存在简单的逻辑漏洞。关键在于对用户提供参数的严格校验和敏感信息的保护。通过此案例,安全研究人员应关注:

  • 所有用户提供参数的验证
  • 错误处理流程中的信息泄露
  • 一次性凭证的状态管理
Workplace一次性登录漏洞分析与利用教学文档 漏洞概述 本漏洞存在于Facebook Workplace(企业通讯应用)的一次性登录机制中,允许攻击者通过简单的请求构造获取任意用户的绑定邮箱,仅需知道目标用户的ID即可实现。 漏洞原理 正常登录流程 用户输入注册邮箱 Workplace发送包含一次性密码(nonce)的登录链接到用户邮箱 用户点击链接,携带用户ID和nonce跳转到登录服务端 服务端验证nonce有效性后完成登录 漏洞点 过期nonce处理不当 :当nonce过期时,服务端会在跳转URL中返回用户绑定邮箱 缺乏权限检查 :未验证请求者是否有权获取该邮箱信息 IDOR漏洞 :通过修改用户ID参数可获取不同用户的邮箱 漏洞复现步骤 准备工作 目标Workplace域名: TARGET.workplace.com 目标用户ID: TARGET_ID 抓包工具:Burp Suite 详细步骤 访问目标登录页面: https://TARGET.workplace.com/ 在邮箱登录区域输入任意邮箱地址(正常流程) 使用Burp Suite拦截请求 修改POST请求: 原始路径: /work/landing/do/new/ 修改为: /work/signin/magic_link/login/ 添加请求体参数: RANDOM :任意随机字符串 TARGET_ID :目标用户ID 发送请求后,响应中会包含目标用户的绑定邮箱 技术分析 漏洞成因 状态处理缺陷 :服务端对过期nonce的处理逻辑不当,直接返回用户邮箱 缺乏参数校验 :未对uid参数进行权限验证 信息泄露设计 :错误地将敏感信息放入URL路径 修复建议 状态明确提示 :对nonce状态(有效/过期)应有明确区分 安全校验机制 : 添加参数签名(HASH)验证 防止同一用户生成多个nonce造成混淆 权限控制 :验证请求者是否有权获取目标用户信息 漏洞危害 信息泄露 :获取任意用户的注册邮箱 批量枚举 :通过用户ID字典攻击可获取大量用户邮箱 社工基础 :为后续钓鱼攻击提供信息支持 时间线与奖励 2020.11.26:漏洞上报 2020.11.27:Facebook确认漏洞 2020.12.9:漏洞修复完成 2020.12.14:获得$5,000漏洞赏金 防御措施 对于企业管理员 确保Workplace应用保持最新版本 监控异常登录行为 对于开发者 实现严格的参数校验机制 敏感信息不应出现在URL中 完善的错误处理机制,避免泄露敏感信息 总结 本漏洞展示了即使是大厂(Facebook)的产品也可能存在简单的逻辑漏洞。关键在于对用户提供参数的严格校验和敏感信息的保护。通过此案例,安全研究人员应关注: 所有用户提供参数的验证 错误处理流程中的信息泄露 一次性凭证的状态管理