Steal EC2 Metadata Credentials via SSRF
最后更新于
最后更新于
这是 AWS 环境中一种常见且众所周知的攻击。Mandiant 已发现有攻击者对漏洞进行自动扫描,从面向公网的应用程序中获取 IAM 凭据。为了降低组织面临的风险,最好对所有 EC2 实例强制执行 IMDSv2,可以增加服务器的安全性。IMDSv2 将大大降低对手通过 SSRF 或 XXE 攻击窃取 IAM 凭据的风险。
AWS开发中最常见的就是滥用与目标 EC2 实例相关的实例元数据服务 (IMDS)。
多数EC2实例可以在 169.254.169.254访问他们的IMDS。这个服务成为攻击者趋之若鹜的对象,能够获取到服务器的IAM权限,从而达到窃取数据,勒索,挖矿等目的。
准备一个开启了IMDSv1的EC2(也可以找一个已有的开启了IMDSv1的EC2)。
打开控制台的Amazon EC2,查看IMDSv2属性,如果是 optional,代表使用的IMDSv1,如果是required 代表使用的是IMDSv1:
挑选是 optional的EC2,使用的就是IMDSv1。
窃取EC2上的安全凭据可以通过滥用主机上运行的现有应用程序来实现。通过利用服务器端请求伪造 (SSRF) 或 XML 外部实体 (XXE) 等常见漏洞,攻击者可以让主机上运行的应用程序检索这些 IAM 凭据。
metadata 服务可以通过EC2实例从http://169.254.169.254/latest/meta-data/
访问。
ssh登录上EC2,假设这台EC2绑定的role的名字是s3access
,然后执行:
获取到类似的以下信息:
AccessKeyId和SecretAccessKey被暴露。
为了演示这一点,在下面的示例中,通过部署workshop: Startup Security: Techniques to Stay Secure while Building Quickly,workshop中提供了基于OWASP Juice Shop搭建的含有SSRF 漏洞的网站,允许我们向任意地址发出 GET 请求。我们可以利用这个漏洞向网站发出请求,提交到Username的输入框中:
上面的命令将服务器的安全凭据创建到一个assets/public/credentials.json路径下的json文件中。
之后通过AWS Command Line Interface (AWS CLI)获取。假设网站的URL地址是$JUICESHOPURL变量保存的(替换成你自己的URL地址),执行一下命令:
就可以看到窃取到的credentials了。
参考资料