cloudgoat

cloudgoat

AWS安全渗透测试实践平台

CloudGoat是Rhino Security Labs开发的AWS安全学习平台,提供多个内置漏洞的场景供用户实践云安全技能。平台包含从简单到复杂的AWS安全挑战,用户可在其中探索环境、发现并利用漏洞,达成特定目标。通过这种捕获旗标式的实践,有助提升AWS安全渗透测试能力。CloudGoat注重学习体验质量,具备完善文档、易用性和模块化架构等特点。

CloudGoatAWS安全测试漏洞利用云安全Github开源项目

CloudGoat(云端山羊)

犀牛 PyPI GitHub
许可证 欢迎提交拉取请求 CloudGoat 是 Rhino Security Labs 的"故意设计为易受攻击"的 AWS 部署工具。

<p align="center"> <img src="https://rhinosecuritylabs.com/wp-content/uploads/2018/07/cloudgoat-e1533043938802-1140x400.jpg" width=350/> </p>

快速参考

CloudGoat 2.0 现已发布!

CloudGoat 是 Rhino Security Labs 的"故意设计为易受攻击"的 AWS 部署工具。它允许您通过创建和完成多个"夺旗"式场景来磨练云网络安全技能。每个场景由 AWS 资源组合而成,创建一个结构化的学习体验。有些场景简单,有些困难,许多场景提供多种通关路径。作为攻击者,您的任务是探索环境、识别漏洞并利用它们达成场景目标。

以下是我们对 CloudGoat 的主要目标:

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

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

警告 #1: CloudGoat 会在您的账户中创建故意易受攻击的 AWS 资源。不要在生产环境或任何敏感的 AWS 资源旁边部署 CloudGoat。

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

要求

快速开始

要安装 CloudGoat,请确保您的系统满足上述要求,然后运行以下命令:

git clone https://github.com/RhinoSecurityLabs/cloudgoat.git
cd cloudgoat
python3 -m venv .venv
source .venv/bin/activate
pip3 install -r ./requirements.txt
chmod +x cloudgoat.py

您可能还想运行一些快速配置命令 - 这将为您节省一些时间:

$ ./cloudgoat.py config profile
$ ./cloudgoat.py config whitelist --auto

现在,您可以使用 CloudGoat 在云中 create 一个场景实例。当环境准备就绪时,项目根目录中将创建一个以场景名称命名并附加唯一场景 ID 的新文件夹。该文件夹内将有一个名为 start.txt 的文件,其中包含开始场景所需的所有资源,尽管这些信息也会在 create 命令完成时打印到控制台。有时还会创建一个名为 cloudgoat/cloudgoat.pub 的 SSH 密钥对。

注意: 不要删除或修改场景实例文件夹或其中的文件,因为这可能会阻止 CloudGoat 管理您的场景资源。

在完成场景时,如果需要指导,可以参考场景的自述文件。如果遇到困难,每个路线的演练底部都有链接到作弊表。

完成场景后,删除您自己创建的任何资源(请记住:CloudGoat 只能管理它创建的资源),然后运行 destroy 命令。事后快速浏览一下 AWS Web 控制台总是个好主意 - 以防有什么没有被删除。

您可以在使用指南部分阅读 CloudGoat 命令的完整文档。

如何使用 CloudGoat 的 Docker 镜像

在 PWD 中尝试

选项 1: 使用默认入口点运行

$ docker run -it rhinosecuritylabs/cloudgoat:latest

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

警告:运行此命令将在启动 Docker 容器时将您本地的 AWS 配置文件挂载到容器中。这意味着任何能访问容器的用户都将有权访问您主机计算机的 AWS 凭证。

$ docker run -it -v ~/.aws:/root/.aws/ rhinosecuritylabs/cloudgoat:latest

可用场景

vulnerable_lambda (小型 / 简单)

$ ./cloudgoat.py create vulnerable_lambda

在这个场景中,您从 'bilbo' 用户开始。您将承担一个具有更多权限的角色,发现一个应用策略到用户的 lambda 函数,并利用该函数中的漏洞来提升 bilbo 用户的权限,以便搜索机密。

访问场景页面。

vulnerable_cognito (小型 / 中等)

$ ./cloudgoat.py create vulnerable_cognito

在这个场景中,您会看到一个使用 AWS Cognito 作为后端的注册和登录页面。您需要绕过限制并利用 Amazon Cognito 中的错误配置来提升权限并获取 Cognito Identity Pool 凭证。

TrustOnCloud 贡献。

访问场景页面。

iam_privesc_by_key_rotation (小型 / 简单)

$ ./cloudgoat.py create iam_privesc_by_key_rotation

利用不安全的 IAM 权限来提升您的访问权限。从管理其他用户凭证的角色开始,找到设置中的弱点以访问"admin"角色。使用 admin 角色从 secretsmanager 检索标志。

infrasec.sh 贡献。

访问场景页面。

iam_privesc_by_rollback (小型 / 简单)

$ ./cloudgoat.py create iam_privesc_by_rollback

从一个高度受限的 IAM 用户开始,攻击者能够审查之前的 IAM 策略版本并恢复一个允许完全管理员权限的版本,从而实现权限提升漏洞。

访问场景页面。

lambda_privesc (小型 / 简单)

$ ./cloudgoat.py create lambda_privesc

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

注意: 此场景可能要求您创建一些 AWS 资源,由于 CloudGoat 只能管理它创建的资源,您应该在运行 ./cloudgoat destroy 之前手动删除这些资源。

访问场景页面。

sqs_flag_shop (小型 / 简单)

$ ./cloudgoat.py create sqs_flag_shop

首先,从可以购买 FLAG 的商店页面开始。该网站有多个页面,您可以看到源代码是公开的。攻击者分析代码以找到漏洞,并利用他们的权限购买 FLAG。 访问场景页面。

cloud_breach_s3(小型/中等)

$ ./cloudgoat.py create cloud_breach_s3

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

访问场景页面。

iam_privesc_by_attachment(中等/中等)

$ ./cloudgoat.py create iam_privesc_by_attachment

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

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

访问场景页面。

ec2_ssrf(中等/中等)

$ ./cloudgoat.py create ec2_ssrf

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

访问场景页面。

ecs_takeover(中等/中等)

$ ./cloudgoat.py create ecs_takeover

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

访问场景页面。

rds_snapshot(中等/中等)

$ ./cloudgoat.py Create rds_snapshot

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

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

访问场景页面。

rce_web_app(中等/困难)

$ ./cloudgoat.py create rce_web_app

从IAM用户Lara开始,攻击者探索负载均衡器和S3存储桶寻找漏洞线索,导致在易受攻击的Web应用程序上进行RCE攻击,暴露机密文件,最终访问场景的目标:一个高度安全的RDS数据库实例。

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

访问场景页面。

codebuild_secrets(大型/困难)

$ ./cloudgoat.py create codebuild_secrets

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

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

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

访问场景页面。

cicd(中等/中等)

$ ./cloudgoat.py create cicd

FooCorp是一家提供公共API的公司。FooCorp的客户每分钟都会向API提交敏感数据。该API作为Lambda函数实现,通过API网关暴露。由于FooCorp实施了DevOps,它有一个持续部署管道,可以在几分钟内自动将Lambda函数的新版本从源代码部署到生产环境。

你的目标:窃取FooCorp客户提交的敏感数据!

由Datadog贡献。

访问场景页面。

detection_evasion(中等/困难)

$ ./cloudgoat.py create detection_evasion

这个场景的目标是在不被检测到的情况下读取两个秘密的值。这两个秘密都存储在Secrets Manager中,它们的值格式如下(cg-secret-XXXXXX-XXXXXX)。

这个场景与其他CloudGoat场景有显著不同。在detection_evasion中,你的目标会更清晰地列出,挑战在于在不触发警报的情况下完成它们。这个场景涉及更多的设置,需要更长的时间来玩(你可能想/需要多次尝试)。

访问场景页面。

ecs_efs_attack(大型/困难)

$ ./cloudgoat.py create ecs_efs_attack

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

访问场景页面。

glue_privesc(大型/中等)

$ ./cloudgoat.py create glue_privesc

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

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

访问场景页面。

使用指南

CloudGoat命令的基本结构如下:

$ ./cloudgoat.py [ 命令 ] [ 子命令 ] [ --参数名 ] [ 参数值 ]

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

create

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

提示: 你可以在名称中使用/scenarios,这允许bash的原生tab补全。

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

list

list显示有关allundeployeddeployed场景的一些信息,或者甚至显示已部署的[ 场景名 ]的大量信息。

destroy

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

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

配置

config 允许您管理 CloudGoat 安装的各个方面,特别是 IP 白名单、默认的 AWS 配置文件以及通过 argcomplete 实现的 Tab 自动补全。值得简要描述一下每个子命令的功能。

白名单

CloudGoat 需要知道在云中部署潜在易受攻击的资源时应该将哪些 IP 地址列入白名单,这些 IP 地址会被记录在项目根目录下的 ./whitelist.txt 文件中。您提供的用于白名单的 IP 地址不一定要是 CIDR 格式,但 CloudGoat 会为您提供的任何单独 IP 地址添加 /32。您也可以添加 --auto 参数,CloudGoat 将自动使用 curl 向 ifconfig.co 发送网络请求以获取您的 IP 地址,然后用结果创建白名单文件。

配置文件

虽然 CloudGoat 永远不会使用系统的"默认" AWS CLI 配置文件或通过环境变量指定的默认配置文件,但您可以使用 config profile 命令指示 CloudGoat 使用特定名称的 AWS 配置文件。这将提示您输入并保存配置文件名称到项目根目录下的 config.yml 文件中。只要该文件存在,CloudGoat 就会使用其中列出的配置文件名来执行创建和销毁命令,而不需要 --profile 标志。您可以随时运行 config profile 命令来查看 CloudGoat 默认配置文件的名称并验证 config.yml 的格式。如果您愿意,也可以手动创建 config.yml,只要使用正确的格式即可。

argcomplete

我们真的希望 CloudGoat 能有原生的 Tab 自动补全功能,但事实证明在 REPL 之外实现这一点有些困难。对于 Linux 用户来说,这应该可以正常工作,对于那些勇于将 bash 版本升级到 4.2+ 的 OSX 用户来说也是如此。CloudGoat 确实包含并支持 Python 库 "argcomplete"。下面简要概述了如何安装 argcomplete,但如需更详细的步骤,您应该参考该库 GitHub 页面 上的官方文档。

  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/[ scenario-name ]./[ scenarioinstance-name ],您的 shell 就会完成剩下的工作。

帮助

help 提供关于命令的上下文帮助。help 可以在相关命令之前或之后使用,所以在您需要时随时可用。以下是一些示例:

  • $ ./cloudgoat.py create help
  • $ ./cloudgoat.py destroy help
  • $ ./cloudgoat.py list help
  • $ ./cloudgoat.py config help

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

功能请求和错误报告

如果您有功能请求或需要报告错误,请在此提交

对于错误,请确保包含足够的描述以重现您发现的错误,包括回溯和复现步骤,并在提交新的错误报告之前检查是否有其他人报告了相同的错误。

对于功能,同样适用!请在您的请求中具体说明,并确保没有其他人已经请求了相同的功能。

贡献指南

我们非常感谢对 CloudGoat 的贡献。如果您想帮助改进这个项目,请继续阅读。

  1. CloudGoat 中的 Python 代码通常应遵循 Python 的风格约定,首要考虑可读性和可维护性。
  2. 遵循良好的 git 实践:使用拉取请求,优先使用功能分支,始终写清晰的提交消息。
  3. CloudGoat 使用 blackflake8 - Python 语法和风格检查工具 - 如果您要提交 CloudGoat 的代码,请确保首先在 core/python/ 目录下的所有 Python 文件和 cloudgoat.py 上运行 flake8,然后运行 blackblack 的决定优先于 flake8。这两个工具都在 core/python/requirements.txt 文件中被注释掉了,因为普通用户不需要它们。
  4. CloudGoat 代码应始终使用 BSD 3-clause 许可证。

最后,感谢您的贡献!

更新日志

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

免责声明

CloudGoat 是一款不附带任何担保的软件。使用 CloudGoat 即表示您对使用它所产生的任何和所有结果承担全部责任。

编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多