vimeo 从 SSRF 到潜在代码执行报告阅读笔记
笔记
漏洞点是在 developer.vimeo.com 域名下的 API 文档位置,最初是一个方便开发者一边阅读文档一边调试接口的小功能。
虽然对 uri 参数做了白名单限制,但忘记了 segments: "{\"user_id\":\"80898505\", \"video_id\":\"21301394231\"}"
中的内容会拼接到 /users/{user_id}/videos/{video_id}
上。
最后对 SSRF 的 HTTP 请求的 PATH 区域获得了完整控制。
不过这个 HTTP 请求还是限制在 api.vimeo.com 的 host 中。
注意到这个接口会自动跟踪重定向(follow redirection),为摆脱 Host: api.vimeo.com
的限制,找到两个开放重定向 (open redirection) 来拼接攻击链。
关键 payload
segments: "{\"user_id\":\"80898505\", \"video_id\":\"../../../m/vulnerable/open/redirect?url=https://attacker.com\"}"
引导服务端第一次请求
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
而 https://api.vimeo.com/m/something
又存在开放重定向到 https://vimeo.com/something
原始请求就变成
https://vimeo.com/vulnerable/open/redirect?url=https://attacker.com
此处又是一个开放重定向,引导到攻击者服务器。
最后的潜在代码执行的条件限制太特殊了。
是用 Google Cloud 内网的基础设施来实现的,需要对 Google Cloud 的内网环境比较熟悉。
获取 token, 然后直接构造请求添加 SSH 公钥到主机。
然后就可以直接用 SSH 私钥连接主机了 (然而 SSH 端口只开放在内网网络接口上)。
原文
https://nosec.org/home/detail/2331.html
https://medium.com/@rootxharsh_90844/vimeo-ssrf-with-code-execution-potential-68c774ba7c1e
Leave a Reply