TerraformGoat
TerraformGoat 靶场项目地址为:https://github.com/HXSecurity/TerraformGoat
TerraformGoat 是一个支持多云的云场景漏洞靶场搭建工具,目前支持阿里云、腾讯云、华为云、Amazon Web Services、Google Cloud Platform、Microsoft Azure 六个云厂商的云场景漏洞搭建。
🎯 目前所支持的场景
| 序号 | 云厂商 | 云服务类型 | 漏洞环境 | 
|---|---|---|---|
| 1 | 阿里云 | 网络 | VPC 安全组允许所有端口访问 | 
| 2 | 阿里云 | 网络 | VPC 安全组允许常见端口访问 | 
| 3 | 阿里云 | 对象存储 | 任意文件上传 | 
| 4 | 阿里云 | 对象存储 | Bucket 对象遍历 | 
| 5 | 阿里云 | 对象存储 | Object ACL 可写 | 
| 6 | 阿里云 | 对象存储 | Object ACL 可读 | 
| 7 | 阿里云 | 对象存储 | Bucket 公开访问 | 
| 8 | 阿里云 | 对象存储 | Object 公开访问 | 
| 9 | 阿里云 | 对象存储 | Bucket 策略可读 | 
| 10 | 阿里云 | 对象存储 | Bucket HTTP 开启 | 
| 11 | 阿里云 | 对象存储 | 特殊的 Bucket 策略 | 
| 12 | 阿里云 | 对象存储 | Bucket 日志转存未开启 | 
| 13 | 阿里云 | 对象存储 | Bucket 服务端加密未使用 KMS | 
| 14 | 阿里云 | 对象存储 | Bucket 服务端加密未使用 BYOK | 
| 15 | 阿里云 | 弹性计算服务 | ECS SSRF 漏洞环境 | 
| 16 | 阿里云 | 弹性计算服务 | ECS 未连接的磁盘未开启加密 | 
| 17 | 阿里云 | 弹性计算服务 | ECS 虚拟机的磁盘未开启加密 | 
| 18 | 腾讯云 | 网络 | VPC 安全组允许所有端口访问 | 
| 19 | 腾讯云 | 网络 | VPC 安全组允许常见端口访问 | 
| 20 | 腾讯云 | 对象存储 | 任意文件上传 | 
| 21 | 腾讯云 | 对象存储 | Bucket 对象遍历 | 
| 22 | 腾讯云 | 对象存储 | Bucket 公开访问 | 
| 23 | 腾讯云 | 对象存储 | Object 公开访问 | 
| 24 | 腾讯云 | 对象存储 | Bucket ACL 可写 | 
| 25 | 腾讯云 | 对象存储 | Bucket ACL 可读 | 
| 26 | 腾讯云 | 对象存储 | 服务端加密未开启 | 
| 27 | 腾讯云 | 对象存储 | Bucket 日志存储未开启 | 
| 28 | 腾讯云 | 弹性计算服务 | CVM SSRF 漏洞环境 | 
| 29 | 腾讯云 | 弹性计算服务 | CVM 虚拟机的磁盘未开启加密 | 
| 30 | 华为云 | 网络 | ECS 不安全的安全组配置 | 
| 31 | 华为云 | 对象存储 | 任意文件上传 | 
| 32 | 华为云 | 对象存储 | Object ACL 可写 | 
| 33 | 华为云 | 对象存储 | Bucket 对象遍历 | 
| 34 | 华为云 | 对象存储 | 特殊的 Bucket 策略 | 
| 35 | 华为云 | 对象存储 | 错误的 Policy 策略导致任意文件上传 | 
| 36 | 华为云 | 弹性计算服务 | ECS SSRF 漏洞环境 | 
| 37 | 华为云 | 关系型数据库 | RDS Mysql基线检查环境 | 
| 38 | Amazon Web Services | 网络 | VPC 安全组允许所有端口访问 | 
| 39 | Amazon Web Services | 网络 | VPC 安全组允许常见端口访问 | 
| 40 | Amazon Web Services | 对象存储 | 任意文件上传 | 
| 41 | Amazon Web Services | 对象存储 | Object ACL 可写 | 
| 42 | Amazon Web Services | 对象存储 | Bucket ACL 可写 | 
| 43 | Amazon Web Services | 对象存储 | Bucket ACL 可读 | 
| 44 | Amazon Web Services | 对象存储 | Bucket 对象遍历 | 
| 45 | Amazon Web Services | 对象存储 | 特殊的 Bucket 策略 | 
| 46 | Amazon Web Services | 对象存储 | Bucket 允许 HTTP 访问 | 
| 47 | Amazon Web Services | 对象存储 | Bucket 默认加密未开启 | 
| 48 | Amazon Web Services | 对象存储 | Bucket 日志转存未开启 | 
| 49 | Amazon Web Services | 对象存储 | Bucket 删除未开启 MFA | 
| 50 | Amazon Web Services | 弹性计算服务 | EC2 SSRF 漏洞环境 | 
| 51 | Amazon Web Services | 弹性计算服务 | 控制台接管漏洞环境 | 
| 52 | Amazon Web Services | 弹性计算服务 | EBS 卷加密默认未开启 | 
| 53 | Amazon Web Services | 身份和访问管理 | IAM 提权环境 | 
| 54 | Google Cloud Platform | 对象存储 | 任意文件上传 | 
| 55 | Google Cloud Platform | 对象存储 | Object ACL 可写 | 
| 56 | Google Cloud Platform | 对象存储 | Bucket ACL 可写 | 
| 57 | Google Cloud Platform | 对象存储 | Bucket 对象遍历 | 
| 58 | Google Cloud Platform | 弹性计算服务 | VM 命令执行漏洞环境 | 
| 59 | Microsoft Azure | 对象存储 | Blob 公开访问 | 
| 60 | Microsoft Azure | 对象存储 | Container Blob 遍历 | 
| 61 | Microsoft Azure | 弹性计算服务 | VM 命令执行漏洞环境 | 
💫 安装
根据你使用到的云服务提供商,选择对应的安装命令。
阿里云
docker pull registry.cn-hongkong.aliyuncs.com/huoxian_pub/terraformgoat_aliyun:0.0.6
docker run -itd --name terraformgoat_aliyun_0.0.6 registry.cn-hongkong.aliyuncs.com/huoxian_pub/terraformgoat_aliyun:0.0.6
docker exec -it terraformgoat_aliyun_0.0.6 /bin/bash
腾讯云
docker pull registry.cn-hongkong.aliyuncs.com/huoxian_pub/terraformgoat_tencentcloud:0.0.6
docker run -itd --name terraformgoat_tencentcloud_0.0.6 registry.cn-hongkong.aliyuncs.com/huoxian_pub/terraformgoat_tencentcloud:0.0.6
docker exec -it terraformgoat_tencentcloud_0.0.6 /bin/bash
华为云
docker pull registry.cn-hongkong.aliyuncs.com/huoxian_pub/terraformgoat_huaweicloud:0.0.6
docker run -itd --name terraformgoat_huaweicloud_0.0.6 registry.cn-hongkong.aliyuncs.com/huoxian_pub/terraformgoat_huaweicloud:0.0.6
docker exec -it terraformgoat_huaweicloud_0.0.6 /bin/bash
Amazon Web Services
docker pull registry.cn-hongkong.aliyuncs.com/huoxian_pub/terraformgoat_aws:0.0.6
docker run -itd --name terraformgoat_aws_0.0.6 registry.cn-hongkong.aliyuncs.com/huoxian_pub/terraformgoat_aws:0.0.6
docker exec -it terraformgoat_aws_0.0.6 /bin/bash
Google Cloud Platform
docker pull registry.cn-hongkong.aliyuncs.com/huoxian_pub/terraformgoat_gcp:0.0.6
docker run -itd --name terraformgoat_gcp_0.0.6 registry.cn-hongkong.aliyuncs.com/huoxian_pub/terraformgoat_gcp:0.0.6
docker exec -it terraformgoat_gcp_0.0.6 /bin/bash
Microsoft Azure
docker pull registry.cn-hongkong.aliyuncs.com/huoxian_pub/terraformgoat_azure:0.0.6
docker run -itd --name terraformgoat_azure_0.0.6 registry.cn-hongkong.aliyuncs.com/huoxian_pub/terraformgoat_azure:0.0.6
docker exec -it terraformgoat_azure_0.0.6 /bin/bash
📄 演示
进入到容器后,cd 到对应的场景目录,就可以开始部署靶场了,这里以 阿里云 Bucket 对象遍历 漏洞场景的搭建进行演示:
docker pull registry.cn-hongkong.aliyuncs.com/huoxian_pub/terraformgoat_aliyun:0.0.6
docker run -itd --name terraformgoat_aliyun_0.0.6 registry.cn-hongkong.aliyuncs.com/huoxian_pub/terraformgoat_aliyun:0.0.6
docker exec -it terraformgoat_aliyun_0.0.6 /bin/bash

cd /TerraformGoat/aliyun/oss/bucket_object_traversal/
aliyun configure
terraform init
terraform apply

提示Enter a value:,输入 yes 并回车,使用 curl 访问该 bucket,可以看到遍历到的对象。

为避免云服务继续产生费用,请在复现完后,及时销毁靶场,销毁靶场命令如下:
terraform destroy
🚀 卸载
如果在容器中,先执行 exit 命令退出容器,然后在宿主机下执行以下命令。
docker stop $(docker ps -a -q -f "name=terraformgoat*")
docker rm $(docker ps -a -q -f "name=terraformgoat*")
docker rmi $(docker images -a -q -f "reference=registry.cn-hongkong.aliyuncs.com/huoxian_pub/terraformgoat*")
❗注意事项
- 在每个漏洞环境的 README 中都是在 TerraformGoat 容器环境内执行的,因此需要先部署 TerraformGoat 容器环境。
- 由于部分靶场存在云上内网横向的风险,因此强烈建议用户使用自己的测试账号配置靶场,避免使用生产环境的云账号,使用 Dockerfile 安装 TerraformGoat 也是为了将用户本地的云厂商令牌和测试账号的令牌进行隔离。
- TerraformGoat 仅可用于教育学习目的,不得用于违法犯罪目的,由 TerraformGoat 产生的结果由使用者承担,与 HXSecurity 无关。
🎊 贡献
我们非常欢迎并感谢你对 TerraformGoat 项目进行贡献,在 CONTRIBUTING.md 中可以了解贡献流程的细节。
🪪 许可证
TerraformGoat 使用 Apache 2.0 许可证,详情参见 LICENSE