Bug Bounty: $31500 Facebook SSRF挖掘之旅
字数 2101 2025-08-25 22:59:02

Facebook SSRF漏洞挖掘实战教学

1. 漏洞背景与概述

SSRF (Server-Side Request Forgery) 服务器端请求伪造是一种安全漏洞,攻击者能够诱使服务器向内部或外部系统发起非预期的请求。本教学文档将详细分析在Facebook资产中发现的一系列SSRF漏洞及其利用过程。

2. 初始发现与侦察

2.1 子域名枚举

  • 发现关键子域:https://m-nexus.thefacebook.com/
  • 该子域重定向至:https://m-nexus.thefacebook.com/servlet/mstrWebAdmin

2.2 技术识别

通过Google搜索mstrWebAdmin,确认该系统基于MicroStrategy工具构建的商业智能门户系统。

2.3 关键端点发现

从MicroStrategy官方文档中发现两个重要端点:

  1. /MicroStrategy/servlet/mstrWeb - 默认启用HTTP Basic认证
  2. /MicroStrategy/servlet/taskProc - 未要求身份认证

3. 参数分析与Fuzzing

3.1 参数枚举

使用Burp Intruder模块枚举taskId参数,发现:

  • 大多数参数值需要身份验证
  • taskId=shortURL参数处理简单URL且不要求认证

3.2 初步尝试

尝试fuzz官方文档中提到的所有参数,但均返回500错误:"源URL无效"

4. 代码审计与深入分析

4.1 获取SDK

  • 下载MicroStrategy SDK源码(约400MB)
  • 使用jd-gui工具反编译jar包

4.2 关键代码分析

发现taskId=shortURL任务下的srcURL参数有特殊限制:

  • 仅允许通过https://tinyurl.com生成的短链接
  • 相关Java代码逻辑强制验证URL来源

5. 漏洞利用技术

5.1 基础SSRF验证

  1. 使用Burp Collaborator创建dnslog
  2. 通过tinyurl.com生成短链接
  3. 构造恶意URL:
    https://m-nexus.thefacebook.com/servlet/taskProc?taskId=shortURL&taskEnv=xml&taskContentType=json&srcURL={YOUR_TINY_URL_HERE}
    
  4. 确认服务器IP(199.201.64.1)属于Facebook

5.2 内网探测

通过修改srcURL参数探测内网:

  • 示例:srcURL=http://127.0.0.1:8080
  • 发现部分服务需要HTTP Basic认证

5.3 高级利用场景

  1. 反射XSS配合钓鱼攻击

    • 创建Facebook钓鱼页面
    • 通过tinyurl生成短链接
    • 构造恶意URL诱导用户访问
    • 窃取凭据记录在远程服务器
  2. 大规模内网服务扫描

    • 使用Burp Intruder发送10000+请求
    • 发现运行在10303端口的LightRay应用

6. 漏洞链构建

6.1 发现无回显SSRF

com.microstrategy.web.app.task.WikiScrapperTask类中发现:

  • 用户可控字符串str1
  • 检查是否以http://https://开头
  • 调用webScrapper函数使用JSOUP发起GET请求

6.2 Facebook短链接信息泄露

发现https://fb.me/短链接服务:

  • 无速率限制
  • 通过目录爆破发现内部重定向链接
  • 部分链接包含敏感信息(令牌、内部路径等)

6.3 组合利用

  1. 通过短链接服务收集内部信息
  2. 利用无回显SSRF针对内部系统发起请求
  3. 潜在危害:内部基础设施修改、数据泄露

7. 漏洞修复与绕过

7.1 初始修复

Facebook修复了部分SSRF端点,但未完全解决问题

7.2 发现新SSRF

com.microstrategy.web.app.utils.usher类中:

  • validateServerURL方法对serverURL参数处理不当
  • 直接基于参数发起GET请求

8. 漏洞影响与赏金

  • 初始奖励:$1000
  • 完整漏洞链证明后追加:$30000
  • MicroStrategy相关漏洞奖励:$500
  • 总计:$31500

9. 技术总结与防御建议

9.1 关键发现

  1. 通过子域名枚举发现暴露的管理接口
  2. 代码审计揭示业务逻辑缺陷
  3. 组合多个低危漏洞形成高危攻击链

9.2 防御措施

  1. 输入验证

    • 严格校验所有用户提供的URL
    • 实施白名单机制限制允许的域名和协议
  2. 认证与授权

    • 对所有敏感端点实施身份验证
    • 遵循最小权限原则
  3. 网络防护

    • 限制服务器出站连接
    • 实施网络分段隔离敏感系统
  4. 监控与日志

    • 记录所有外部请求
    • 设置异常请求警报
  5. 服务配置

    • 禁用不必要的HTTP方法
    • 为公开服务设置适当的速率限制

10. 学习要点

  1. 侦察重要性:全面的资产枚举是发现漏洞的第一步
  2. 代码审计技巧:理解业务逻辑比单纯依赖工具更有效
  3. 漏洞链思维:组合多个低危漏洞可产生更大影响
  4. 报告技巧:清晰证明漏洞影响是获得高额赏金的关键
  5. 持续测试:修复后应重新验证,可能发现新的攻击面

通过本案例,安全研究人员可以学习到从初始发现到完整漏洞链构建的全过程,以及如何有效证明漏洞危害以获得厂商认可。

Facebook SSRF漏洞挖掘实战教学 1. 漏洞背景与概述 SSRF (Server-Side Request Forgery) 服务器端请求伪造是一种安全漏洞,攻击者能够诱使服务器向内部或外部系统发起非预期的请求。本教学文档将详细分析在Facebook资产中发现的一系列SSRF漏洞及其利用过程。 2. 初始发现与侦察 2.1 子域名枚举 发现关键子域: https://m-nexus.thefacebook.com/ 该子域重定向至: https://m-nexus.thefacebook.com/servlet/mstrWebAdmin 2.2 技术识别 通过Google搜索 mstrWebAdmin ,确认该系统基于MicroStrategy工具构建的商业智能门户系统。 2.3 关键端点发现 从MicroStrategy官方文档中发现两个重要端点: /MicroStrategy/servlet/mstrWeb - 默认启用HTTP Basic认证 /MicroStrategy/servlet/taskProc - 未要求身份认证 3. 参数分析与Fuzzing 3.1 参数枚举 使用Burp Intruder模块枚举 taskId 参数,发现: 大多数参数值需要身份验证 taskId=shortURL 参数处理简单URL且不要求认证 3.2 初步尝试 尝试fuzz官方文档中提到的所有参数,但均返回500错误:"源URL无效" 4. 代码审计与深入分析 4.1 获取SDK 下载MicroStrategy SDK源码(约400MB) 使用jd-gui工具反编译jar包 4.2 关键代码分析 发现 taskId=shortURL 任务下的 srcURL 参数有特殊限制: 仅允许通过 https://tinyurl.com 生成的短链接 相关Java代码逻辑强制验证URL来源 5. 漏洞利用技术 5.1 基础SSRF验证 使用Burp Collaborator创建dnslog 通过tinyurl.com生成短链接 构造恶意URL: 确认服务器IP(199.201.64.1)属于Facebook 5.2 内网探测 通过修改 srcURL 参数探测内网: 示例: srcURL=http://127.0.0.1:8080 发现部分服务需要HTTP Basic认证 5.3 高级利用场景 反射XSS配合钓鱼攻击 创建Facebook钓鱼页面 通过tinyurl生成短链接 构造恶意URL诱导用户访问 窃取凭据记录在远程服务器 大规模内网服务扫描 使用Burp Intruder发送10000+请求 发现运行在10303端口的LightRay应用 6. 漏洞链构建 6.1 发现无回显SSRF 在 com.microstrategy.web.app.task.WikiScrapperTask 类中发现: 用户可控字符串 str1 检查是否以 http:// 或 https:// 开头 调用 webScrapper 函数使用JSOUP发起GET请求 6.2 Facebook短链接信息泄露 发现 https://fb.me/ 短链接服务: 无速率限制 通过目录爆破发现内部重定向链接 部分链接包含敏感信息(令牌、内部路径等) 6.3 组合利用 通过短链接服务收集内部信息 利用无回显SSRF针对内部系统发起请求 潜在危害:内部基础设施修改、数据泄露 7. 漏洞修复与绕过 7.1 初始修复 Facebook修复了部分SSRF端点,但未完全解决问题 7.2 发现新SSRF 在 com.microstrategy.web.app.utils.usher 类中: validateServerURL 方法对 serverURL 参数处理不当 直接基于参数发起GET请求 8. 漏洞影响与赏金 初始奖励:$1000 完整漏洞链证明后追加:$30000 MicroStrategy相关漏洞奖励:$500 总计:$31500 9. 技术总结与防御建议 9.1 关键发现 通过子域名枚举发现暴露的管理接口 代码审计揭示业务逻辑缺陷 组合多个低危漏洞形成高危攻击链 9.2 防御措施 输入验证 : 严格校验所有用户提供的URL 实施白名单机制限制允许的域名和协议 认证与授权 : 对所有敏感端点实施身份验证 遵循最小权限原则 网络防护 : 限制服务器出站连接 实施网络分段隔离敏感系统 监控与日志 : 记录所有外部请求 设置异常请求警报 服务配置 : 禁用不必要的HTTP方法 为公开服务设置适当的速率限制 10. 学习要点 侦察重要性 :全面的资产枚举是发现漏洞的第一步 代码审计技巧 :理解业务逻辑比单纯依赖工具更有效 漏洞链思维 :组合多个低危漏洞可产生更大影响 报告技巧 :清晰证明漏洞影响是获得高额赏金的关键 持续测试 :修复后应重新验证,可能发现新的攻击面 通过本案例,安全研究人员可以学习到从初始发现到完整漏洞链构建的全过程,以及如何有效证明漏洞危害以获得厂商认可。