
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
CloudGoat是Rhino Security Labs开发的“设计即漏洞”AWS部署工具。它允许用户通过创建和完成多个夺旗赛(CTF)风格的场景来磨练云网络安全技能。每个场景由AWS资源组合而成,提供结构化学习体验,场景难度各异,部分场景有多种解决路径。用户作为***者,需探索环境、识别漏洞并利用漏洞达成场景目标。
警告1:CloudGoat会在您的账户中创建故意存在漏洞的AWS资源。请勿在生产环境或敏感AWS资源旁部署CloudGoat。
警告2:CloudGoat仅能管理其创建的资源。若在场景中自行创建资源,需在运行
destroy命令前手动删除。
$PATH。$PATH,且AWS账户需有足够权限创建和销毁资源。确保系统满足上述要求,执行以下命令:
$ git clone https://github.com/RhinoSecurityLabs/cloudgoat.git $ cd cloudgoat $ pip3 install -r ./core/python/requirements.txt $ chmod u+x cloudgoat.py
建议运行以下配置命令以节省后续时间:
$ ./cloudgoat.py config profile $ ./cloudgoat.py config whitelist --auto
创建场景后,项目根目录会生成以场景名和唯一ID命名的文件夹,内含start.txt文件(包含开始场景所需资源信息),有时还会创建cloudgoat/cloudgoat.pub SSH密钥对。
注意:不要删除或修改场景实例文件夹及内部文件,否则可能导致CloudGoat无法管理场景资源。完成场景后,手动删除自行创建的资源,再运行
destroy命令。
console$ docker run -it rhinosecuritylabs/cloudgoat:latest
警告:此命令会将本地AWS配置文件挂载到Docker容器中,任何有权访问容器的用户都能获取主机的AWS凭据。
console$ docker run -it -v ~/.aws:/root/.aws/ rhinosecuritylabs/cloudgoat:latest
$ ./cloudgoat.py create iam_privesc_by_rollback
从权限高度受限的IAM用户开始,***者可查看IAM策略的历史版本并恢复允许完全管理员权限的版本,实现权限提升。
查看场景页面
$ ./cloudgoat.py create lambda_privesc
以IAM用户Chris身份开始,***者发现可 assume 具有完全Lambda访问权限和传递角色权限的角色,利用这些权限实现权限提升,获取完全管理员权限。
注意:此场景可能需要创建AWS资源,CloudGoat仅能管理其创建的资源,需在运行
./cloudgoat destroy前手动删除自行创建的资源。
查看场景页面
$ ./cloudgoat.py create cloud_breach_s3
以无访问权限的***用户身份开始,利用配置错误的反向代理服务器查询EC2元数据服务获取实例配置文件密钥,使用这些密钥发现、访问并窃取S3存储桶中的敏感数据。
查看场景页面
$ ./cloudgoat.py create iam_privesc_by_attachment
以权限非常有限的用户身份开始,***者利用实例配置文件附加权限创建具有更高权限的新EC2实例,通过访问该实例获取目标账户的完全管理权限,完成场景目标:删除cg-super-critical-security-server。
注意:此场景可能需要创建AWS资源,需在运行
./cloudgoat destroy前手动删除自行创建的资源。
查看场景页面
$ ./cloudgoat.py create ec2_ssrf
以IAM用户Solus身份开始,***者发现对Lambda函数有只读权限,其中硬编码的密钥指向易受服务器端请求伪造(SSRF)***的EC2实例上的Web应用。利用漏洞从EC2元数据服务获取密钥,访问私有S3存储桶,调用Lambda函数完成场景。
查看场景页面
$ ./cloudgoat.py create ecs_takeover
从访问外部网站开始,***者需发现远程代码执行(RCE)漏洞,利用RCE获取网站容器可访问的资源,滥用ECS配置错误获取IAM权限,强制ECS将目标容器重新调度到已入侵的实例。
查看场景页面
$ ./cloudgoat.py create rce_web_app
以IAM用户Lara身份开始,探索负载均衡器和S3存储桶寻找漏洞,通过易受***的Web应用的RCE漏洞获取机密文件,最终访问高度安全的RDS数据库实例。或以IAM用户McDuck身份开始,枚举S3存储桶,获取SSH密钥直接访问EC2服务器及数据库。
查看场景页面
$ ./cloudgoat.py create codebuild_secrets
以IAM用户Solo身份开始,枚举并探索CodeBuild项目,发现其中未受保护的IAM用户Calrissian的密钥。以Calrissian身份操作,发现RDS数据库,利用RDS快照功能获取场景目标:一对秘密字符串。或探索SSM参数获取EC2实例的SSH密钥,通过元数据服务获取实例配置文件密钥,最终访问数据库获取秘密字符串。
注意:此场景可能需要创建AWS资源,需在运行
./cloudgoat destroy前手动删除自行创建的资源。
查看场景页面
$ ./cloudgoat.py create ecs_efs_attack
从访问“ruse”EC2实例开始,用户利用实例配置文件后门运行中的ECS容器,通过容器元数据API获取凭据,使用这些凭据在具有特定标签的任何EC2实例上启动会话。***者修改Admin EC2的标签并启动会话,端口扫描子网寻找开放的EFS,挂载后获取弹性文件系统中的标志。
查看场景页面
CloudGoat命令基本结构:
$ ./cloudgoat.py [ 命令 ] [ 子命令 ] [ --参数名 ] [ 参数值 ]
create [ 场景名 ]在指定AWS账户中部署场景。若场景已存在,将销毁并重新创建。
提示:场景名中可使用
/scenarios,支持bash自动补全。
--profile参数为必填项(出于安全考虑,CloudGoat不使用系统默认AWS配置文件或环境变量指定的默认配置文件),可通过config profile设置默认值以避免重复输入。
list显示all(所有)、undeployed(未部署)或deployed(已部署)场景的信息,或已部署[ 场景名 ]的详细信息。
destroy [ 场景名 ]关闭并删除场景的云资源,将场景实例文件夹移至./trash(便于恢复Terraform状态文件等)。指定all可销毁所有活动场景。
提示:CloudGoat仅能管理其创建的资源。若在场景中自行创建资源,需在运行
destroy前手动删除。
config用于管理CloudGoat安装的各个方面,特别是IPwhitelist(白名单)、默认AWSprofile(配置文件)和argcomplete(参数自动补全)。
whitelist
CloudGoat需知道部署潜在漏洞资源时应白名单化的IP地址,这些IP存储在项目根目录的./whitelist.txt文件中。提供的IP可不使用CIDR格式,CloudGoat会为裸IP添加/32。可添加--auto参数,CloudGoat将通过curl请求ifconfig.co自动获取IP并创建白名单文件。
profile
CloudGoat不会使用系统默认AWS CLI配置文件或环境变量指定的默认配置文件,但可通过config profile命令指定AWS配置文件名称,该名称将保存在项目根目录的config.yml文件中。只要该文件存在,CloudGoat将使用其中列出的配置文件名称,无需--profile标志。可随时运行config profile查看默认配置文件名称并验证config.yml格式,也可手动创建config.yml(需确保格式正确)。
argcomplete
CloudGoat支持https://github.com/kislyuk/argcomplete%E5%AE%9E%E7%8E%B0%E5%8F%82%E6%95%B0%E8%87%AA%E5%8A%A8%E8%A1%A5%E5%85%A8%EF%BC%88Linux%E7%94%A8%E6%88%B7%E6%94%AF%E6%8C%81%E8%89%AF%E5%A5%BD%EF%BC%8COSX%E7%94%A8%E6%88%B7%E9%9C%80%E5%8D%87%E7%BA%A7bash%E8%87%B34.2+%EF%BC%89%E3%80%82%E5%AE%89%E8%A3%85%E6%AD%A5%E9%AA%A4%E5%A6%82%E4%B8%8B%EF%BC%9A
$ pip3 install -r core/python/requirements.txt$ activate-global-python-argcomplete$ source [ /补全脚本路径 ]若无法或不愿配置argcomplete,CloudGoat支持将目录路径用作场景名,通过/scenario/[ 场景名 ]或./[ 场景实例名 ]实现shell自动补全。
help提供命令的上下文帮助,可放在命令前后,例如:
$ ./cloudgoat.py create help$ ./cloudgoat.py destroy help$ ./cloudgoat.py list help$ ./cloudgoat.py config help此外,$ ./cloudgoat.py [ 场景名 ] help可打印场景作者定义的场景简要摘要。
若有功能请求或错误报告,请https://github.com/RhinoSecurityLabs/cloudgoat/issues/new%E3%80%82
错误报告:需包含足够重现错误的描述(包括回溯和重现步骤),并在提交前检查是否已有相同报告。
功能请求:请求需具体,并检查是否已有相同请求。
非常感谢对CloudGoat的贡献。若想帮助改进项目,请遵循以下准则:
black和flake8(Python语法和风格检查器)。提交代码前,确保对core/python/中的所有Python文件和cloudgoat.py运行flake8,然后运行black(black的决策优先于flake8)。这两个工具在core/python/requirements.txt中被注释掉(普通用户无需安装)。CloudGoat是不提供任何担保的软件。使用CloudGoat,您对由此产生的任何和所有结果承担全部责任。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务