AzureGoat:一个极易受攻击的 Azure 基础设施
对攻击者来说,入侵组织的云基础设施就像坐拥金矿。有时,一个简单的配置错误或 Web 应用程序中的漏洞,就足以让攻击者入侵整个基础设施。由于云技术相对较新,许多开发人员并不完全了解威胁形势,最终部署了存在漏洞的云基础设施。根据多项报告,Microsoft Azure 云已成为云基础设施提供商中市场份额第二大的供应商,仅次于 AWS。对于安全专业人员来说,AWS 有众多工具和易受攻击的应用程序可用于攻击/防御实践,但 Azure 的情况并非如此。社区可用的选择要少得多。
AzureGoat 是一个在 Azure 上故意设计成易受攻击的基础设施,包含最新发布的 OWASP Top 10 Web 应用程序安全风险(2021)以及基于 App Functions、CosmosDB、Storage Accounts、Automation 和 Identities 等服务的其他错误配置。AzureGoat 模仿真实世界的基础设施,但添加了漏洞。它具有多个提权路径,并专注于黑盒方法。
AzureGoat 使用 IaC(Terraform)在用户的 Azure 账户上部署易受攻击的云基础设施。这使用户可以完全控制代码、基础设施和环境。使用 AzureGoat,用户可以学习/实践:
- 云渗透测试/红队行动
- 审计 IaC
- 安全编码
- 检测和缓解
该项目分为多个模块,每个模块都是一个独立的 Web 应用程序,由各种技术栈和开发实践支持。
曾在以下会议展示
由 INE 倾心开发
技术栈
- Azure
- React
- Python 3
- Terraform
漏洞
该项目计划涵盖所有重要漏洞,包括 OWASP TOP 10 2021 和常见的云配置错误。 目前,该项目包含以下漏洞/配置错误:
- XSS
- SQL 注入
- 不安全的直接对象引用
- App Function 环境中的服务器端请求伪造
- 敏感数据泄露和密码重置
- Storage Account 配置错误
- Identity 配置错误
入门指南
前提条件
- 一个 Azure 账户
安装
为了简化部署过程,用户只需克隆此仓库,登录 Azure CLI,然后初始化并应用 Terraform 文件。这个工作流程将部署整个基础设施并输出托管应用程序的 URL。
以下是需要遵循的步骤:
步骤 1. 克隆仓库
git clone https://github.com/ine-labs/AzureGoat
步骤 2. 登录 Azure CLI
az login
然后按照步骤进行登录。
步骤 3. 创建一个名为 "azuregoat_app" 的资源组。
步骤 4. 使用 Terraform 部署 AzureGoat
terraform init
terraform apply --auto-approve
模块
模块1
第一个模块是一个无服务器博客应用,利用Azure应用功能、存储账户、CosmosDB和Azure自动化。它包含各种Web应用漏洞,并便于利用配置错误的Azure资源。
模块1的升级路径概览
贡献者
Nishant Sharma,INE 实验平台总监 nsharma@ine.com Jeswin Mathai,INE 实验平台首席架构师 jmathai@ine.com Rachna Umaraniya,INE 云开发人员 rumaraniya@ine.com Sherin Stephen,INE 软件工程师(云) sstephen@ine.com Shantanu Kale,INE 云开发人员 skale@ine.com Sanjeev Mahunta,INE 软件工程师(云) smahunta@ine.com D Yashwanth Babu,INE 软件工程师(云) dbabu@ine.com
解决方案
攻击手册可在 attack-manuals 目录中找到,防御手册可在 defence-manuals 目录中找到。
模块1漏洞利用视频:https://www.youtube.com/playlist?list=PLcIpBb4raSZGdYHKpqIu5Boc2ziga4oGY
文档
更多详细信息请参阅"AzureGoat.pdf"PDF文件。该文件包含用于演示的幻灯片。
截图
博客应用首页 博客应用登录界面 博客应用注册页面 博客应用登录后的仪表板 博客应用用户资料
贡献指南
- 欢迎以代码改进、模块更新、功能增强和任何一般性建议的形式做出贡献。
- 也欢迎对当前模块功能的改进。
- 每个模块的源代码可以在
modules/module-<编号>/src
中找到,可用于修改现有的应用程序代码。
许可证
本程序是自由软件:您可以根据自由软件基金会发布的GNU通用公共许可证第2版的条款对其进行再分发和/或修改。
本程序的发布旨在希望它能够有用,但不提供任何保证;甚至不提供对适销性或特定用途适用性的暗示保证。有关更多详细信息,请参阅GNU通用公共许可证。
您应该已经随本程序收到了一份GNU通用公共许可证的副本。如果没有,请访问http://www.gnu.org/licenses/。