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