挖洞经验 | 通过一次性登录漏洞获取Workplace用户绑定邮箱
字数 1190 2025-08-15 21:33:14
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/
- 原始路径:
- 添加请求体参数:
nonce=RANDOM&uid=TARGET_ID&request_id=RANDOMRANDOM:任意随机字符串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)的产品也可能存在简单的逻辑漏洞。关键在于对用户提供参数的严格校验和敏感信息的保护。通过此案例,安全研究人员应关注:
- 所有用户提供参数的验证
- 错误处理流程中的信息泄露
- 一次性凭证的状态管理