实现易受攻击的AWS DevOps环境作为CloudGoat场景
我是可丢弃安全实验室的忠实粉丝,无论是用于攻击还是防御目的(参见:在Azure中自动化配置Active Directory实验室)。在撰写《云安全漏洞与破坏:2021年回顾》之后,我想构建一个"故意设计漏洞的AWS实验室",包含典型的攻击路径,包括静态长期凭证和供应链安全元素。
CloudGoat:易受攻击的AWS环境
CloudGoat是一个开源项目,包含一系列可以在您自己的AWS账户中轻松创建的易受攻击的AWS环境,使用Python包装器围绕Terraform实现。每个场景都有专门的文件夹,包含其描述和解决方案。
示例CloudGoat场景
例如,您可以使用以下命令在AWS账户中启动cicd场景:
|
|
贡献新CloudGoat场景
场景故事
FooCorp是一家提供公共API的公司。客户每分钟向以下API端点提交敏感数据:
|
|
API实现为通过API网关公开的Lambda函数。由于FooCorp采用DevOps实践,它有一个持续部署管道,可以在几分钟内自动将Lambda函数的新版本从源代码部署到生产环境。
场景包含
- 3个IAM用户
- 1个VPC,其中包含私有子网中的EC2实例
- 用于实现API的组件:
- 1个API网关
- 1个Lambda函数
- 1个ECR仓库
- 用于实现持续部署管道的组件:
- 1个CodePipeline管道
- 2个CodeBuild项目
- 1个CodeCommit仓库
漏洞利用步骤
当我们通过python3 cloudgoat.py create cicd
实例化场景时,会获得初始AWS IAM访问密钥:
|
|
我们以名为ec2-sandbox-manager
的用户身份进行身份验证,该用户具有IAM策略,允许我们管理标记为Environment=dev
的EC2实例的标签,并对标记为Environment=sandbox
的实例执行任何SSM操作。
通过分析Git提交历史,我们发现一个引人注目的提交,其中包含泄露的AWS凭证!使用这些凭证进行身份验证后,我们发现我们刚刚泄露了IAM用户developer
的凭证,该用户具有codecommit:GitPush
和codecommit:PutFile
权限。
持续测试与端到端测试
我们利用Terratest(一个用于测试Terraform代码的Go库)编写了Go测试,这些测试的工作方式如下:
- 使用Terratest针对实时AWS环境运行我们的Terraform代码
- 从我们的Go测试中,向FooCorp API发送实际的HTTP请求以确保它已正确部署
- 仍然从我们的Go测试中,以编程方式执行漏洞利用步骤
- 测试完成后,销毁我们通过Terraform代码配置的基础设施
结论
我鼓励您尝试这个场景!更广泛地说,CloudGoat包含一组有价值的实验室,其中包含许多真实的AWS漏洞。