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官方文档中发现两个重要端点:
/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:
https://m-nexus.thefacebook.com/servlet/taskProc?taskId=shortURL&taskEnv=xml&taskContentType=json&srcURL={YOUR_TINY_URL_HERE} - 确认服务器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. 学习要点
- 侦察重要性:全面的资产枚举是发现漏洞的第一步
- 代码审计技巧:理解业务逻辑比单纯依赖工具更有效
- 漏洞链思维:组合多个低危漏洞可产生更大影响
- 报告技巧:清晰证明漏洞影响是获得高额赏金的关键
- 持续测试:修复后应重新验证,可能发现新的攻击面
通过本案例,安全研究人员可以学习到从初始发现到完整漏洞链构建的全过程,以及如何有效证明漏洞危害以获得厂商认可。