
CloudGoat 是 Rhino Security Labs 的“Vulnerable by Design”云部署工具。
获取帮助的渠道: Rhino Security Labs Discord, 或 Stack Overflow
提交问题的地址: https://github.com/RhinoSecurityLabs/cloudgoat/issues
维护者: CloudGoat 社区
CloudGoat 是 Rhino Security Labs 的“Vulnerable by Design”云部署工具。它允许你通过创建并完成多个“夺旗赛”风格的场景来磨练你的云网络安全技能。每个场景由云资源组合而成,提供了结构化的学习体验。有些场景简单,有些困难,许多场景提供了多种通往胜利的路径。作为攻击者,你的使命是探索环境、识别漏洞并利用它们达到场景的目标。
以下是 CloudGoat 的主要目标:
在继续之前,请注意以下警告!
警告 #1: CloudGoat 会在你的账户中创建故意存在漏洞的资源。请勿在生产环境或任何敏感资源旁边部署 CloudGoat。
警告 #2: CloudGoat 只能管理它创建的资源。如果你在场景中自行创建了任何资源,应在运行
destroy命令之前手动删除它们。
Linux```bash sudo apt install terraform awscli azure-cli jq -y
Mac```bash
brew install terraform awscli azure-cli jq
要安装 CloudGoat,请确保你的系统满足上述要求,然后运行以下命令:```bash pipx install cloudgoat
您可能还想运行一些快速配置命令 - 这样可以节省以后的时间:
为AWS进行配置 - 告诉CloudGoat要使用哪个AWS配置文件。```bash
cloudgoat config aws
Configure for Azure - 告诉 CloudGoat 要使用的 Azure 订阅。```bash cloudgoat config azure
登录到 Azure - CloudGoat 使用当前活动的 `az` 账户。```bash
az login
配置白名单```bash cloudgoat config whitelist --auto
现在,在你的命令行中,CloudGoat 可以 `create` 在云中创建一个场景实例。当环境准备好后,项目基础目录中会创建一个以场景名称命名并附加唯一场景ID的新文件夹。该文件夹内有一个名为 `start.txt` 的文件,其中包含你开始场景所需的所有资源,不过这些资源也会在 `create` 命令完成时打印到你的控制台中。有时还会创建一个名为 `cloudgoat`/`cloudgoat.pub` 的 SSH 密钥对。
> **注意:** 不要删除或修改场景实例文件夹或其中的文件,否则可能导致 CloudGoat 无法管理你的场景资源。
在完成场景的过程中,可以随时参考场景的 readme 文件获取指导。如果遇到困难,每个路线的演练底部都提供了作弊表链接。
当你完成场景后,删除你自己创建的任何资源(记住:CloudGoat 只能管理它自己创建的资源),然后运行 `destroy` 命令。之后,最好快速浏览一下你的 Web 控制台——以防有些资源没有被删除。
你可以在 [使用指南章节](#usage-guide) 中阅读 CloudGoat 命令的完整文档。
## 如何使用 CloudGoat 的 Docker 镜像
[](http://play-with-docker.com?stack=https://raw.githubusercontent.com/RhinoSecurityLabs/cloudgoat/master/docker_stack.yml)
### 选项 1:使用默认入口点运行```console
docker run -it rhinosecuritylabs/cloudgoat:latest
警告:运行此命令会将本地 AWS 配置文件挂载到启动的 Docker 容器中。这意味着任何能够访问该容器的用户都将能够访问您主机上的 AWS 凭据。```console docker run -it -v ~/.aws:/root/.aws/ rhinosecuritylabs/cloudgoat:latest
## 可用场景
(按难度分组)
<details open>
<summary><strong>简单</strong></summary>
---
### iam_enum_basics(简单)
`cloudgoat create iam_enum_basics`
在本场景中,你将获得一个名为 Bob 的低级 IAM 用户的访问密钥。你的任务是使用 AWS CLI 进行全面的 IAM 枚举。通过调查托管策略、内联策略、组成员身份和可代入角色,你将发现五个不同的标志。
[访问场景页面。](https://github.com/rhinosecuritylabs/cloudgoat/blob/master/cloudgoat/scenarios/aws/iam_enum_basics/README.md)
贡献者:Tyler Ramsbey
---
### data_secrets(简单)
`cloudgoat create data_secrets`
在本场景中,你将从一个权限有限的 IAM 用户开始。你的任务是识别一个配置错误的 EC2 实例,该实例在其用户数据中泄漏了凭据,从而允许你获得 SSH 访问权限。接下来,你必须通过利用实例元数据服务 (IMDS) 窃取角色、枚举 Lambda 函数以发现隐藏的环境变量,并最终攻破一个有权访问场景目标的用户:存储在 AWS Secrets Manager 中的秘密。
[访问场景页面。](https://github.com/rhinosecuritylabs/cloudgoat/blob/master/cloudgoat/scenarios/aws/data_secrets/README.md)
贡献者:Tyler Ramsbey
---
### beanstalk_secrets(简单)
`cloudgoat create beanstalk_secrets`
在本场景中,你将获得一组低权限的 AWS 凭据,这些凭据授予对 Elastic Beanstalk 的有限访问权限。你的任务是枚举 Elastic Beanstalk 环境,并发现包含二级凭据的配置错误的环境变量。使用这些二级凭据,你可以枚举 IAM 权限,最终为管理员用户创建访问密钥。凭借这些管理员权限,你将从 AWS Secrets Manager 中检索最终标志。
[访问场景页面。](https://github.com/rhinosecuritylabs/cloudgoat/blob/master/cloudgoat/scenarios/aws/beanstalk_secrets/README.md)
贡献者:Tyler Ramsbey
---
### sns_secrets(简单)
`cloudgoat create sns_secrets`
在本场景中,你从一个 AWS 账户的基本访问权限开始。你需要枚举你的权限,发现一个可以订阅的 SNS 主题,检索一个泄漏的 API 密钥,最后使用该 API 密钥访问 API Gateway 以获取最终标志。
[访问场景页面。](https://github.com/rhinosecuritylabs/cloudgoat/blob/master/cloudgoat/scenarios/aws/sns_secrets/README.md)
贡献者:Tyler Ramsbey
---