Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

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

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

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
terragoat — 用于学习云配置错误检测和DevSecOps实践的故意存在漏洞的Terraform基础设施,涵盖AWS、Azure和GCP。 | Kitploit
工具/GitHubGitHub/bridgecrewio/terragoat
云安全DevSecOps错误配置学习与教育实验室与实践
GitHubbridgecrewio/terragoat

terragoat

用于学习云配置错误检测和DevSecOps实践的故意存在漏洞的Terraform基础设施,涵盖AWS、Azure和GCP。

查看仓库
1.3k5.8k483年前Kitploit 审核通过

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
网站

TerraGoat - 易受攻击的 Terraform 基础设施

由 Bridgecrew.io 维护 基础设施测试 CIS Azure CIS GCP CIS AWS PCI Terraform Version slack-community

TerraGoat 是 Bridgecrew 的 "Vulnerable by Design" Terraform 仓库。 Terragoat

TerraGoat 是 Bridgecrew 的 "Vulnerable by Design" Terraform 仓库。 TerraGoat 是一个学习和培训项目,演示了常见配置错误如何进入生产云环境。

目录

  • 介绍
  • 开始使用
    • AWS
    • Azure
    • GCP
  • 贡献
  • 支持

介绍

TerraGoat 的构建是为了使 DevSecOps 能够设计和实施可持续的配置错误预防策略。它可以用于测试策略即代码框架,如 Bridgecrew 和 Checkov、内联 linter、预提交钩子或其他代码扫描方法。

TerraGoat 遵循现有 *Goat 项目的传统,这些项目提供了一个基础训练场,用于实践云基础设施的安全开发最佳实践。

重要说明

  • 获取帮助的位置: Bridgecrew 社区 Slack

在继续之前,请注意这些警告:

⚠️ TerraGoat 会在您的账户中创建故意易受攻击的 AWS 资源。请勿在生产环境或任何敏感 AWS 资源旁部署 TerraGoat。

要求

  • Terraform 0.12
  • aws cli
  • azure cli

要防止易受攻击的基础设施进入生产环境,请参见:Bridgecrew 和 checkov,基础设施即代码的开源静态分析工具。

开始使用

AWS 设置

安装 (AWS)

您可以使用参数 TF_VAR_environment 在单个 AWS 账户中部署多个 TerraGoat 堆栈。

创建一个 S3 存储桶后端来保存 Terraform 状态```bash

export TERRAGOAT_STATE_BUCKET="mydevsecops-bucket" export TF_VAR_company_name=acme export TF_VAR_environment=mydevsecops export TF_VAR_region="us-west-2"

aws s3api create-bucket --bucket $TERRAGOAT_STATE_BUCKET
--region $TF_VAR_region --create-bucket-configuration LocationConstraint=$TF_VAR_region

Enable versioning

aws s3api put-bucket-versioning --bucket $TERRAGOAT_STATE_BUCKET --versioning-configuration Status=Enabled

Enable encryption

aws s3api put-bucket-encryption --bucket $TERRAGOAT_STATE_BUCKET --server-side-encryption-configuration '{ "Rules": [ { "ApplyServerSideEncryptionByDefault": { "SSEAlgorithm": "aws:kms" } } ] }'

#### 应用 TerraGoat (AWS)```bash
cd terraform/aws/
terraform init \
-backend-config="bucket=$TERRAGOAT_STATE_BUCKET" \
-backend-config="key=$TF_VAR_company_name-$TF_VAR_environment.tfstate" \
-backend-config="region=$TF_VAR_region"

terraform apply

移除 TerraGoat (AWS)```bash

terraform destroy

#### 创建多个 TerraGoat AWS 堆栈```bash
cd terraform/aws/
export TERRAGOAT_ENV=$TF_VAR_environment
export TERRAGOAT_STACKS_NUM=5
for i in $(seq 1 $TERRAGOAT_STACKS_NUM)
do
    export TF_VAR_environment=$TERRAGOAT_ENV$i
    terraform init \
    -backend-config="bucket=$TERRAGOAT_STATE_BUCKET" \
    -backend-config="key=$TF_VAR_company_name-$TF_VAR_environment.tfstate" \
    -backend-config="region=$TF_VAR_region"

    terraform apply -auto-approve
done

删除多个 TerraGoat 堆栈 (AWS)```bash

cd terraform/aws/ export TF_VAR_environment = $TERRAGOAT_ENV for i in $(seq 1 $TERRAGOAT_STACKS_NUM) do export TF_VAR_environment=$TERRAGOAT_ENV$i terraform init
-backend-config="bucket=$TERRAGOAT_STATE_BUCKET"
-backend-config="key=$TF_VAR_company_name-$TF_VAR_environment.tfstate"
-backend-config="region=$TF_VAR_region"

terraform destroy -auto-approve

done

### Azure 设置

#### 安装(Azure)

您可以使用参数 `TF_VAR_environment` 在单个 Azure 订阅中部署多个 TerraGoat 堆栈。

#### 创建 Azure 存储账户后端以保存 Terraform 状态```bash
export TERRAGOAT_RESOURCE_GROUP="TerraGoatRG"
export TERRAGOAT_STATE_STORAGE_ACCOUNT="mydevsecopssa"
export TERRAGOAT_STATE_CONTAINER="mydevsecops"
export TF_VAR_environment="dev"
export TF_VAR_region="westus"

# Create resource group
az group create --location $TF_VAR_region --name $TERRAGOAT_RESOURCE_GROUP

# Create storage account
az storage account create --name $TERRAGOAT_STATE_STORAGE_ACCOUNT --resource-group $TERRAGOAT_RESOURCE_GROUP --location $TF_VAR_region --sku Standard_LRS --kind StorageV2 --https-only true --encryption-services blob

# Get storage account key
ACCOUNT_KEY=$(az storage account keys list --resource-group $TERRAGOAT_RESOURCE_GROUP --account-name $TERRAGOAT_STATE_STORAGE_ACCOUNT --query [0].value -o tsv)

# Create blob container
az storage container create --name $TERRAGOAT_STATE_CONTAINER --account-name $TERRAGOAT_STATE_STORAGE_ACCOUNT --account-key $ACCOUNT_KEY

应用 TerraGoat (Azure)```bash

cd terraform/azure/ terraform init -reconfigure -backend-config="resource_group_name=$TERRAGOAT_RESOURCE_GROUP"
-backend-config "storage_account_name=$TERRAGOAT_STATE_STORAGE_ACCOUNT"
-backend-config="container_name=$TERRAGOAT_STATE_CONTAINER"
-backend-config "key=$TF_VAR_environment.terraform.tfstate"

terraform apply

#### 删除 TerraGoat (Azure)```bash
terraform destroy

GCP 设置

安装 (GCP)

你可以使用参数 TF_VAR_environment 在单个 GCP 项目中部署多个 TerraGoat 堆栈。

创建 GCS 后端以保持 Terraform 状态

要使用 Terraform,需要服务账户和相应的凭据集。 如果它们不存在,则需要为相关项目手动创建。 要创建服务账户:

  1. 登录你的 GCP 项目,进入 IAM > 服务账户。
  2. 点击 创建服务账户。
  3. 为你的服务账户命名(例如 - terragoat),然后点击 创建。
  4. 授予服务账户 项目 > 编辑者 角色,然后点击 继续。
  5. 点击 完成。

要创建凭据:

  1. 登录你的 GCP 项目,进入 IAM > 服务账户,然后点击相关的服务账户。
  2. 点击 添加密钥 > 创建新密钥 > JSON,然后点击 创建。这将创建一个 .json 文件并下载到你的计算机。

我们建议将密钥保存为比自动生成的名称更友好的名称(例如 terragoat_credentials.json),并将生成的 JSON 文件存储在 terragoat 的 terraform/gcp 目录中。 一旦凭据设置完成,如下创建 BE 配置:```bash export TF_VAR_environment="dev" export TF_TERRAGOAT_STATE_BUCKET=remote-state-bucket-terragoat export TF_VAR_credentials_path=<PATH_TO_CREDNETIALS_FILE> # example: export TF_VAR_credentials_path=terragoat_credentials.json export TF_VAR_project=<YOUR_PROJECT_NAME_HERE>

Create storage bucket

gsutil mb gs://${TF_TERRAGOAT_STATE_BUCKET}

#### 应用 TerraGoat (GCP)```bash
cd terraform/gcp/
terraform init -reconfigure -backend-config="bucket=$TF_TERRAGOAT_STATE_BUCKET" \
    -backend-config "credentials=$TF_VAR_credentials_path" \
    -backend-config "prefix=terragoat/${TF_VAR_environment}"

terraform apply

移除 TerraGoat (GCP)```bash

terraform destroy

## Bridgecrew 的 IaC 山羊群
下载工具