Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
cloudgoat — CloudGoat 是 Rhino 安全实验室的 "设计即漏洞" AWS 部署工具 | Kitploit
工具/GitHubGitHub/rhinosecuritylabs/cloudgoat
漏洞扫描器CTF渗透测试云安全错误配置学习与教育实验室与实践
GitHubrhinosecuritylabs/cloudgoat

cloudgoat

CloudGoat 是 Rhino 安全实验室的 "设计即漏洞" AWS 部署工具

查看仓库
3.7k7635个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CloudGoat (☁️🐐)

Rhino PyPI GitHub license PRs Welcome

CloudGoat 是 Rhino Security Labs 的“Vulnerable by Design”云部署工具。

快速参考

  • 获取帮助的渠道: Rhino Security Labs Discord, 或 Stack Overflow

  • 提交问题的地址: https://github.com/RhinoSecurityLabs/cloudgoat/issues

  • 维护者: CloudGoat 社区

CloudGoat 2.0 来了!

CloudGoat 是 Rhino Security Labs 的“Vulnerable by Design”云部署工具。它允许你通过创建并完成多个“夺旗赛”风格的场景来磨练你的云网络安全技能。每个场景由云资源组合而成,提供了结构化的学习体验。有些场景简单,有些困难,许多场景提供了多种通往胜利的路径。作为攻击者,你的使命是探索环境、识别漏洞并利用它们达到场景的目标。

以下是 CloudGoat 的主要目标:

  • 专注、精选、高质量的学习体验 – CloudGoat 的每个场景都应提供实验、探索和构建实践云安全技能的机会。
  • 良好的文档 – 我们已尽最大努力确保 CloudGoat 场景文档完善,且难度、内容、结构和所需技能容易理解和评估。
  • 易于安装和使用 – 我们理解 CloudGoat 是学习与练习云安全渗透测试的一种手段。因此,我们力求简单、直接和可靠。
  • 模块化 – 每个场景都是独立的学习环境,具有明确的目标(或一组目标),CloudGoat 能够独立启动、重置或关闭每个场景。
  • 可扩展性 – CloudGoat 的核心组件(Python 应用和场景)设计上允许轻松独立扩展——由我们或社区进行。

在继续之前,请注意以下警告!

警告 #1: CloudGoat 会在你的账户中创建故意存在漏洞的资源。请勿在生产环境或任何敏感资源旁边部署 CloudGoat。

警告 #2: CloudGoat 只能管理它创建的资源。如果你在场景中自行创建了任何资源,应在运行 destroy 命令之前手动删除它们。

系统要求

  • Linux 或 macOS。Windows 不受官方支持。
    • 参数制表符补全需要 bash 4.2+(Linux,或在 macOS 上较难配置)。
  • 需要 Python 3.9+。
  • Terraform >= 1.5.0 安装并配置到 $PATH 中。
  • AWS CLI 安装并配置到 $PATH 中,以及具有足够权限创建和销毁资源的 AWS 账户。
  • Azure CLI 安装并配置到 $PATH 中,以及具有足够权限创建和销毁资源的 Azure 账户。
  • jq

Linux```bash sudo apt install terraform awscli azure-cli jq -y

root@kitploit:~
Mac```bash
brew install terraform awscli azure-cli jq

快速开始

要安装 CloudGoat,请确保你的系统满足上述要求,然后运行以下命令:```bash pipx install cloudgoat

root@kitploit:~
您可能还想运行一些快速配置命令 - 这样可以节省以后的时间:

为AWS进行配置 - 告诉CloudGoat要使用哪个AWS配置文件。```bash
cloudgoat config aws

Configure for Azure - 告诉 CloudGoat 要使用的 Azure 订阅。```bash cloudgoat config azure

root@kitploit:~
登录到 Azure - CloudGoat 使用当前活动的 `az` 账户。```bash
az login

配置白名单```bash cloudgoat config whitelist --auto

root@kitploit:~
现在,在你的命令行中,CloudGoat 可以 `create` 在云中创建一个场景实例。当环境准备好后,项目基础目录中会创建一个以场景名称命名并附加唯一场景ID的新文件夹。该文件夹内有一个名为 `start.txt` 的文件,其中包含你开始场景所需的所有资源,不过这些资源也会在 `create` 命令完成时打印到你的控制台中。有时还会创建一个名为 `cloudgoat`/`cloudgoat.pub` 的 SSH 密钥对。

> **注意:** 不要删除或修改场景实例文件夹或其中的文件,否则可能导致 CloudGoat 无法管理你的场景资源。

在完成场景的过程中,可以随时参考场景的 readme 文件获取指导。如果遇到困难,每个路线的演练底部都提供了作弊表链接。

当你完成场景后,删除你自己创建的任何资源(记住:CloudGoat 只能管理它自己创建的资源),然后运行 `destroy` 命令。之后,最好快速浏览一下你的 Web 控制台——以防有些资源没有被删除。

你可以在 [使用指南章节](#usage-guide) 中阅读 CloudGoat 命令的完整文档。

## 如何使用 CloudGoat 的 Docker 镜像

[![Try in PWD](https://raw.githubusercontent.com/play-with-docker/stacks/cff22438cb4195ace27f9b15784bbb497047afa7/assets/images/button.png)](http://play-with-docker.com?stack=https://raw.githubusercontent.com/RhinoSecurityLabs/cloudgoat/master/docker_stack.yml)

### 选项 1:使用默认入口点运行```console
docker run -it rhinosecuritylabs/cloudgoat:latest

选项 2:使用 AWS 配置和凭据运行

警告:运行此命令会将本地 AWS 配置文件挂载到启动的 Docker 容器中。这意味着任何能够访问该容器的用户都将能够访问您主机上的 AWS 凭据。```console docker run -it -v ~/.aws:/root/.aws/ rhinosecuritylabs/cloudgoat:latest

root@kitploit:~
## 可用场景
(按难度分组)

<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/HEAD/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/HEAD/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/HEAD/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/HEAD/cloudgoat/scenarios/aws/sns_secrets/README.md)  

贡献者:Tyler Ramsbey

---

### iam_privesc_by_key_rotation(简单)
`cloudgoat create iam_privesc_by_key_rotation`

利用不安全的 IAM 权限来提升你的访问权限。从一个管理其他用户凭据的角色开始,在设置中发现弱点以访问“admin”角色。使用 admin 角色从 Secrets Manager 检索标志。

[访问场景页面。](https://github.com/rhinosecuritylabs/cloudgoat/blob/HEAD/cloudgoat/scenarios/aws/iam_privesc_by_key_rotation/README.md)

贡献者:Infrasec.sh 

---

### iam_privesc_by_rollback(简单)
`cloudgoat create iam_privesc_by_rollback`

从一个权限非常有限的 IAM 用户开始,攻击者能够审查之前的 IAM 策略版本,并恢复一个允许完全管理员权限的版本,从而导致权限提升攻击。

[访问场景页面。](https://github.com/rhinosecuritylabs/cloudgoat/blob/HEAD/cloudgoat/scenarios/aws/iam_privesc_by_rollback/README.md)

---

### lambda_privesc(简单)
`cloudgoat create lambda_privesc`

以 IAM 用户 Chris 的身份开始,攻击者发现他们可以代入一个拥有完全 Lambda 访问权限和传递角色权限的角色。然后攻击者可以使用这些新权限执行权限提升,从而获得完全的管理员权限。

> **注意:** 此场景可能需要你创建一些 AWS 资源,由于 CloudGoat 只能管理其创建的资源,你需要在运行 `./cloudgoat destroy` 之前手动删除它们。

[访问场景页面。](https://github.com/rhinosecuritylabs/cloudgoat/blob/HEAD/cloudgoat/scenarios/aws/lambda_privesc/README.md)

---

### sqs_flag_shop(简单)
`cloudgoat create sqs_flag_shop`

首先,从一个可以购买 FLAG 的 SHOP 页面开始。该网站有多个页面,并且你可以看到源代码是公开的。攻击者分析代码以发现漏洞,并利用其权限购买 FLAG。

[访问场景页面。](https://github.com/rhinosecuritylabs/cloudgoat/blob/HEAD/cloudgoat/scenarios/aws/sqs_flag_shop/README.md)
  
</details>

<details>
  <summary><strong>中等</strong></summary>

### static(中等)
`cloudgoat create static`

在本场景中,你扮演一个访问公司门户网站的外部攻击者。通过分析 web 应用程序,你发现它从一个公共 S3 存储桶加载关键的 JavaScript 库。你必须发现存储桶权限的配置错误,通过使用恶意代码覆盖库执行“供应链攻击”,并等待内部管理员机器人登录。你的目标是捕获机器人的凭据并将其回传至存储桶。

[访问场景页面。](https://github.com/rhinosecuritylabs/cloudgoat/blob/HEAD/cloudgoat/scenarios/aws/static/README.md)  

### vulnerable_cognito(中等)
`cloudgoat create vulnerable_cognito`

在本场景中,你会看到一个带有注册和登录页面的页面,后端使用 AWS Cognito。你需要绕过限制并利用 Amazon Cognito 的配置错误,以提升权限并获得 Cognito Identity Pool 凭据。

[访问场景页面。](https://github.com/rhinosecuritylabs/cloudgoat/blob/HEAD/cloudgoat/scenarios/aws/vulnerable_cognito/README.md)

贡献者:TrustOnCloud 

---
### vulnerable_lambda(中等)
`cloudgoat create vulnerable_lambda`

在本场景中,你以“bilbo”用户的身份开始。你将代入一个具有更多权限的角色,发现一个将策略应用于用户的 lambda 函数,并利用该函数中的漏洞来提升 bilbo 用户的权限,以便搜索秘密。

[访问场景页面。](https://github.com/rhinosecuritylabs/cloudgoat/blob/HEAD/cloudgoat/scenarios/aws/vulnerable_lambda/README.md)

---

### cloud_breach_s3(中等)
`cloudgoat create cloud_breach_s3`

从一个没有任何访问权限或特权的匿名外部人员开始,利用配置错误的反向代理服务器查询 EC2 元数据服务以获取实例配置文件密钥。然后,使用这些密钥发现、访问并从 S3 存储桶中窃取敏感数据。

[访问场景页面。](https://github.com/rhinosecuritylabs/cloudgoat/blob/HEAD/cloudgoat/scenarios/aws/cloud_breach_s3/README.md)

---

### iam_privesc_by_attachment(中等)
`cloudgoat create iam_privesc_by_attachment`

从一个权限非常有限的一组权限开始,攻击者能够利用实例配置文件附加权限创建一个新的 EC2 实例,该实例拥有比攻击者自身高得多的权限。通过访问这个新的 EC2 实例,攻击者在目标账户中获得完全的管理权限,并能够实现场景目标——删除 cg-super-critical-security-server,为进一步的恶意行为铺平道路。

> **注意:** 此场景可能需要你创建一些 AWS 资源,由于 CloudGoat 只能管理其创建的资源,你需要在运行 `./cloudgoat destroy` 之前手动删除它们。

[访问场景页面。](https://github.com/rhinosecuritylabs/cloudgoat/blob/HEAD/cloudgoat/scenarios/aws/iam_privesc_by_attachment/README.md)

---

### ec2_ssrf(中等)
`cloudgoat create ec2_ssrf`

以 IAM 用户 Solus 的身份开始,攻击者发现自己对 Lambda 函数拥有只读权限,其中硬编码的秘密将他们引导至一个运行着易受服务端请求伪造(SSRF)攻击的 web 应用程序的 EC2 实例。在利用易受攻击的应用程序并从 EC2 元数据服务获取密钥后,攻击者获得对一个私有 S3 存储桶的访问权限,该存储桶中包含一组允许他们调用 Lambda 函数并完成场景的密钥。

[访问场景页面。](https://github.com/rhinosecuritylabs/cloudgoat/blob/HEAD/cloudgoat/scenarios/aws/ec2_ssrf/README.md)

---

### ecs_takeover(中等)
`cloudgoat create ecs_takeover`

从访问外部网站开始,攻击者需要找到一个远程代码执行漏洞。通过利用 RCE,攻击者可以访问网站容器可用的资源。滥用多个 ECS 配置错误,攻击者获得 IAM 权限,从而强制 ECS 将目标容器重新调度到受感染的实例上。

[访问场景页面。](https://github.com/rhinosecuritylabs/cloudgoat/blob/HEAD/cloudgoat/scenarios/aws/ecs_takeover/README.md)

---

### rds_snapshot(中等)
`cloudgoat create rds_snapshot`

在本场景中,我们从用户“David”开始。通过 David,你可以利用权限窃取凭据。
使用窃取的凭据,攻击者可以利用 RDS 漏洞访问数据库并检索标志。

> **注意:** 此场景可能需要你创建一些 AWS 资源,由于 CloudGoat 只能管理其创建的资源,你需要在运行 `./cloudgoat destroy` 之前手动删除它们。 

[访问场景页面。](https://github.com/rhinosecuritylabs/cloudgoat/blob/HEAD/cloudgoat/scenarios/aws/rds_snapshot/README.md)

---

### glue_privesc(中等)
`cloudgoat create glue_privesc`  

此场景从一个上传 CSV 文件并通过 Glue 服务进行数据可视化的网页开始。
攻击者通过 SQL 注入攻击窃取网页上存在的凭据,并上传一个反向 Shell 以创建 Glue Job 来获取秘密字符串。

> **注意:** 此场景可能需要你创建一些 AWS 资源,由于 CloudGoat 只能管理其创建的资源,你需要在运行 `./cloudgoat destroy` 之前手动删除它们。  

[访问场景页面。](https://github.com/rhinosecuritylabs/cloudgoat/blob/HEAD/cloudgoat/scenarios/aws/glue_privesc/README.md)

---

### agentcore_identity_confusion(中等)
`cloudgoat create agentcore_identity_confusion`

在本场景中,你获得一组 AWS 凭据,这些凭据可以管理 bedrock agentcore 代码解释器。你的任务是利用这一点来访问其他 agentcore 运行时代理使用的敏感数据。找出如何获取存储在 bedrock knowledgebase 中的标志。

> **注意:** 此场景可能需要你创建一些 AWS 资源,由于 CloudGoat 只能管理其创建的资源,你需要在运行 `./cloudgoat destroy` 之前手动删除它们。

[访问场景页面。](https://github.com/rhinosecuritylabs/cloudgoat/blob/HEAD/cloudgoat/scenarios/aws/agentcore_identity_confusion/README.md)

贡献者:Sonrai Security

---

### bedrock_agent_hijacking(中等)
`cloudgoat create bedrock_agent_hijacking`

在本场景中,你获得一组 AWS 凭据,这些凭据可以调用 Bedrock Agent 并更新 lambda 函数。你的任务是分析代理并理解它如何访问实时信息。利用此流程定位并提取存储在 S3 中的标志。

[访问场景页面。](https://github.com/rhinosecuritylabs/cloudgoat/blob/HEAD/cloudgoat/scenarios/aws/bedrock_agent_hijacking/README.md)

贡献者:Sonrai Security

</details>

<details>
  <summary><strong>困难</strong></summary>

### rce_web_app(困难)
`cloudgoat create rce_web_app`

以 IAM 用户 Lara 的身份开始,攻击者探索 Load Balancer 和 S3 存储桶以寻找漏洞线索,最终在易受攻击的 web 应用程序上获得 RCE 攻击能力,该攻击暴露了机密文件,并最终能够访问场景目标:一个高度安全的 RDS 数据库实例。

或者,攻击者也可以以 IAM 用户 McDuck 的身份开始,枚举 S3 存储桶,最终找到 SSH 密钥,从而直接访问 EC2 服务器及其背后的数据库。

[访问场景页面。](https://github.com/rhinosecuritylabs/cloudgoat/blob/HEAD/cloudgoat/scenarios/aws/rce_web_app/README.md)

---

### codebuild_secrets(困难)
`cloudgoat create codebuild_secrets`

以 IAM 用户 Solo 的身份开始,攻击者首先枚举和探索 CodeBuild 项目,在其中发现 IAM 用户 Calrissian 的不安全 IAM 密钥。然后以 Calrissian 的身份行动,攻击者发现一个 RDS 数据库。由于无法直接访问数据库内容,攻击者可以利用 RDS 快照功能巧妙地获取场景目标:一对秘密字符串。

或者,攻击者也可以探索 SSM 参数,找到通往 EC2 实例的 SSH 密钥。利用元数据服务,攻击者可以获取 EC2 实例配置文件的密钥,并深入渗透目标环境,最终通过更迂回的路线获得对原始数据库和场景目标(一对秘密字符串)的访问权限。

> **注意:** 此场景可能需要你创建一些 AWS 资源,由于 CloudGoat 只能管理其创建的资源,你需要在运行 `./cloudgoat destroy` 之前手动删除它们。

[访问场景页面。](https://github.com/rhinosecuritylabs/cloudgoat/blob/HEAD/cloudgoat/scenarios/aws/codebuild_secrets/README.md)

---

### detection_evasion(困难)
`cloudgoat create detection_evasion`

此场景的目标是读取两个秘密的值而不被发现。两个秘密都存储在 Secrets Manager 中,其值的格式为(cg-secret-XXXXXX-XXXXXX)。

此场景与其他 CloudGoat 场景有显著不同。在 detection_evasion 中,你的目标将更清晰地列出,挑战在于不触发警报的情况下完成它们。此场景需要更多的设置,并且会花费更长时间(你可能会希望/需要多次游玩)。

[访问场景页面。](https://github.com/rhinosecuritylabs/cloudgoat/blob/HEAD/cloudgoat/scenarios/aws/detection_evasion/README.md)

---

### ecs_efs_attack(困难)
`cloudgoat create ecs_efs_attack`

从访问“ruse”EC2 实例开始,用户利用实例配置文件对正在运行的 ECS 容器进行后门攻击。使用后门容器,攻击者可以从容器元数据 API 检索凭据。这些凭据允许攻击者在任何设置了适当标签的 EC2 实例上启动会话。攻击者使用其权限更改 Admin EC2 实例的标签,并启动一个会话。一旦进入 Admin EC2 实例,攻击者将扫描子网以寻找开放的 EFS 进行挂载。挂载后,攻击者可以从弹性文件系统中检索标志。

[访问场景页面。](https://github.com/rhinosecuritylabs/cloudgoat/blob/HEAD/cloudgoat/scenarios/aws/ecs_efs_attack/README.md)

---

### ecs_privesc_evade_protection(中等)
`cloudgoat create ecs_privesc_evade_protection`

用户首先访问 EC2 内部容器的工作 Web 服务。攻击者可以利用 Web 服务漏洞从 EC2 中的元数据 API 获取凭据,或控制容器。此凭据允许攻击者启动一个具有特定角色的新容器并控制它。基于此操作,进行权限提升,并读取 S3 中的 FLAG。

> **注意:** 此场景需要在本地安装 Docker,因为在部署期间它会构建容器镜像并推送到 ECR。

[访问场景页面。](https://github.com/rhinosecuritylabs/cloudgoat/blob/HEAD/cloudgoat/scenarios/aws/ecs_privesc_evade_protection/README.md)

---

### secrets_in_the_cloud(困难)
`cloudgoat create secrets_in_the_cloud`

作为一个权限有限的 IAM 用户,攻击者通过检查 AWS 资源来寻找线索和隐藏信息。这项调查最终使他们获得一个角色,该角色授予对场景主要目标的访问权限:从 Secrets Manager 检索最终秘密。

[访问场景页面。](https://github.com/rhinosecuritylabs/cloudgoat/blob/HEAD/cloudgoat/scenarios/aws/secrets_in_the_cloud/README.md)
  
</details>

## 使用指南

CloudGoat 命令的基本结构如下:

> `cloudgoat [ 命令 ] [ 子命令 ] [ --参数名 ] [ 参数值 ]`

CloudGoat 中的五个主要命令概述如下:

### create

`create [ 场景名称 ]` 将场景部署到你选择的 AWS 账户。你也可以对现有场景运行 `create`——CloudGoat 只会销毁并重新创建指定的场景。

> **提示:** 你可以在名称中使用 `/scenarios`,这样可以启用 bash 的原生 Tab 补全。

注意,出于安全原因,必须提供 `--profile`——我们不希望任何人意外地将 CloudGoat 场景部署到生产环境中——并且 CloudGoat 不会使用系统的“默认”AWS CLI 配置文件或通过环境变量指定为默认值的配置文件。但是,你可以通过 `config aws` 设置此项,以避免每次都需要提供它。

### list

`list` 显示关于 `all`(所有)、`undeployed`(未部署)或 `deployed`(已部署)场景的一些信息,甚至可以显示关于已部署的 `[ 场景名称 ]` 的大量信息。你还可以按云平台过滤场景:`list aws` 或 `list azure`。

### destroy

`destroy` 关闭并删除 `[ 场景名称 ]` 的云资源,然后将场景实例文件夹移动到 `./trash`——以防你需要恢复 Terraform 状态文件或其他场景文件。你也可以指定 `all` 而不是场景名称,以销毁所有活动的场景。

> **提示:** CloudGoat 只能管理它创建的资源。如果你在场景过程中自行创建了任何资源,应在运行 `destroy` 命令前手动删除它们。

### config

`config` 允许你管理 CloudGoat 安装的各个方面,特别是 IP `whitelist`、默认 AWS `profile` 以及通过 `argcomplete` 实现的 Tab 补全。有必要简要描述一下每个子命令的作用。

#### whitelist

CloudGoat 需要知道在云端部署潜在易受攻击的资源时应白名单哪些 IP 地址,这些 IP 被记录在项目基础目录下的 `./whitelist.txt` 文件中。你提供的白名单 IP 地址不一定需要采用 CIDR 格式,但 CloudGoat 会为任何裸 IP 添加 `/32`。可选地,你可以添加 `--auto` 参数,CloudGoat 会自动使用 curl 向 ifconfig.co 发起网络请求以查找你的 IP 地址,并根据结果创建白名单文件。

#### aws

虽然 CloudGoat 永远不会使用系统的“默认”AWS CLI 配置文件或通过环境变量指定为默认值的配置文件,但你可以使用 `config aws` 命令指示 CloudGoat 通过名称使用特定的 AWS 配置文件。该命令将提示你输入配置文件的名称,并将其保存在项目基础目录下的 `config.yml` 文件中。只要该文件存在,CloudGoat 在 `create` 和 `destroy` 命令中就会使用其中列出的配置文件名称,而无需每次都提供 `--profile` 标志。你可以随时运行 `config aws` 命令来查看 CloudGoat 默认配置文件的名称,并验证 `config.yml` 的格式。你也可以手动创建 `config.yml`,只要你使用正确的格式。

#### azure

较新版本的 Terraform Azure 提供程序需要订阅 ID 才能应用资源。虽然 CloudGoat 使用与 `az` 工具相同的凭据配置,但必须明确告知 CloudGoat 要部署到哪个订阅。配置通过 `cloudgoat config azure` 完成,订阅信息与 AWS 配置一起存储在 `config.yml` 中。你也可以手动创建 `config.yml`,只要你使用正确的格式。

#### argcomplete

我们非常希望 CloudGoat 拥有原生的 Tab 补全功能,但事实证明在 REPL 之外实现这一点有些困难。它对 Linux 用户应该效果不错,对于有勇气将 bash 版本升级到 4.2+ 的 OSX 用户也是如此。CloudGoat 包含并支持 [python 库 "argcomplete"](https://github.com/kislyuk/argcomplete)。下面提供了安装 argcomplete 的简要步骤,更多详细信息请参考该库 [GitHub 页面](https://github.com/kislyuk/argcomplete) 的官方文档。

1. 使用 CloudGoat 的 requirements.txt 文件安装 argcomplete Python 包:`$ pip3 install -r core/python/requirements.txt`
2. 在 bash 中,运行由 argcomplete 包提供的全局 Python 参数补全脚本:`$ activate-global-python-argcomplete`
3. 执行上一步激活命令所打印的位置处的补全脚本,或重启你的 shell 会话:`$ source [ /path/to/the/completion/script ]`

对于无法或不想配置 argcomplete 的用户,CloudGoat 也支持使用目录路径作为场景名称,这意味着场景名称可以使用 Tab 补全。只需使用 `/scenario/[ 场景名称 ]` 或 `./[ 场景实例名称 ]`,你的 shell 应该能完成剩下的操作。

### help

`help` 提供关于命令的上下文帮助。`help` 可以放在相关命令之前或之后,因此当你需要时它总是在那里。以下是一些示例:* `cloudgoat create help`
* `cloudgoat destroy help`
* `cloudgoat list help`
* `cloudgoat config help`

另一个值得注意的用法:`cloudgoat [ scenario-name ] help` 可用于在控制台打印场景的简要摘要,内容由场景的作者定义。

## 功能请求与错误报告

如果您有功能请求或要报告错误,请[在此提交](https://github.com/RhinoSecurityLabs/cloudgoat/issues/new)。

对于错误,请确保提供足够详细的描述以重现您发现的错误,包括回溯和重现步骤,并在提交新的错误报告前检查是否有其他关于该错误的报告。

对于功能请求,规则类似!请明确说明您的请求,并确保其他人尚未请求相同功能。

## 贡献指南

非常感谢您对 CloudGoat 的贡献。如果您想帮助本项目变得更好,请继续阅读。

1. **创建新场景**:
   - 我们提供了一个场景模板,帮助您快速入门。该模板包含 CloudGoat 场景的基本结构和必要文件。您可以在[此处](https://github.com/rhinosecuritylabs/cloudgoat/blob/HEAD/scenarios/scenario_template)找到场景模板。
   - **创建新场景的步骤**:
     - **复制模板**:将场景模板的内容复制到一个以您的场景命名的新目录中。
     - **修改模板**:将模板中的占位内容替换为您新场景的具体内容。
     - **测试场景**:通过彻底测试确保您的场景按预期工作。
2. **编码标准**:
   - **代码风格**:遵循项目中现有的代码风格。一致性至关重要。
   - **注释**:在必要时为代码添加注释,以解释复杂的逻辑或重要决策。
   - **文档**:更新 README.md 及其他相关文档,以包含关于您的新场景或更改的详细信息。
3. **白名单设置**:
   - 在创建或修改场景时,请牢记以下几点:
     - **白名单**:确保安全组规则和其他访问控制配置为仅白名单来自 CloudGoat 配置的 IP。
     - **审查**:在贡献前,请双重检查您的配置是否存在任何潜在的漏洞公共资源(即不要创建可被互联网访问的易受攻击的 EC2 实例)。
4. **Python 代码风格**:
   - CloudGoat 中的 Python 代码通常应遵循 Python 的风格惯例,优先考虑可读性和可维护性。
   - 遵循良好的 Git 实践:使用拉取请求,优先使用功能分支,始终编写清晰的提交信息。
   - CloudGoat 使用 `black` 和 `flake8`——Python 语法和风格检查工具。在提交代码前,确保对 `core/python/` 中的所有 Python 文件以及 `cloudgoat.py` 运行了 `flake8` 和 `black`。`black` 的决策优先于 `flake8` 的决策。由于普通用户不需要这些工具,它们都在 `core/python/requirements.txt` 中被注释掉了。
5. **许可协议**:
   - CloudGoat 代码应始终使用 BSD 3-Clause 许可证。

最后,感谢您的贡献!


## 变更日志

- **2019年6月24日:** CloudGoat 2.0 发布!

## 免责声明

CloudGoat 是一款软件,不附带任何形式的担保。使用 CloudGoat,您需对由此产生的任何及所有结果承担全部责任。
下载工具