声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由用户承担全部法律及连带责任,文章作者不承担任何法律及连带责任。
前言
分享挖到一个SSRF,并完成利用获取到access_token成高危, 1000美元的经历。
正文
最近我的 HackerOne 收到了很多私人邀请项目,因为是保密项目,在这里就叫redacted.com,我选择其中某个域名redacted.com目标进行挖掘。
首先我还是从资产侦察开始,我创建了一套自动化工具来执行我的侦察过程,例如收集子域名-->获取实时主机名-->端口扫描-->获取 waybackurls -->目录暴力破解等等。
自动化工作完成后,我分析了所有数据,基本没什么收获 ,但我很快发现waybackurls 的数据看起来可能存在问题。
waybackurls项目 https://github.com/tomnomnom/waybackurls
使用 gf 模式来获取所有可能易受攻击的 ssrf 端点。
cat waybackurl | gf ssrf
这里的 __host 字段是从 github 获取某种数据,尝试下测试 ssrf,使用Burpsuite 的burp collaborator 模块测试,放在 __host 字段中并发送请求。
Burpsuite神奇的收到一个HTTP 交互响应。
填写我自己 Apache 服务器域名的JavaScript ,尝试使SSRF-->XSS,XSS钓鱼是可以了,继续Fuzzing一下。
这时我想到了SSRF-->Amazon EC2 元数据泄露,如果成功,可能就能升级成RCE了,经过很多次测试,在 __host 参数中输入 169.254.169.254 并在 url 添加了/latest/meta-data/iam/security-credentials/。
https://redacted.redacted.com/latest/meta-data/iam/security-credentials/?__host=169.254.169.254&__proto=https
但服务端返回502 BAD Gateway,然后我将 __proto 值更改为 http也是一样。
响应包含:Metadata-Flavour。
很明显需要添加一个请求头,Metadata-Flavour: Google,这次成功获取AWS 元数据。
用下面链接来获取令牌(access_token)。
GET /computeMetadata/v1/instance/service-accounts/default/token?__host=169.254.169.254&__proto=htt
这时就从一个SSRF-->XSS-->升级到获取服务器凭证access_token了。
关于赏金
我报告了该漏洞,随后第二天,他们承认这是一个漏洞,并奖励了我 1000 美元。
原文始发于微信公众号(BugHunting):SSRF完成利用获取到access_token 获得1000美元