DVFaaS - 该死的脆弱函数即服务
一个 DHIY(自行部署并入侵)项目,你可以在 AWS Lambda 上部署并运行一堆极其不安全的函数

目标与受众
- 我们在 we45 围绕 Serverless 安全、云以及现代 Web 技术栈的安全开展了大量培训。
- 我们坚信,开发人员、架构师、DevOps 和安全人员非常有必要学习和理解这些现代组件所面临的风险。
- 本项目是我们培训工作的结晶,我们在培训中开发了有意设计的易受攻击 Serverless 应用(FaaS),并决定向广大社区开放。
如果你符合以下情况,本项目非常适合你:
- 你想了解 serverless 应用(尤其是 FaaS 实现)中的安全缺陷。
如果你符合以下情况,本项目不适合你:
- 你不想部署(和运行)自己的函数。这里的理念是让你通过动手实践来学习。
请注意:
- 这些函数面向 AWS Lambda 部署,但相关原理和概念适用于所有平台。
- 大多数函数使用 Python 编写,具体来说基于名为
chalice 的框架(专用于 AWS Lambda 上的 Python)。将这些函数部署到你的 lambda 环境相当简单。
- 本项目最终映射到 OWASP Serverless Top 10,见此处,但部分示例可能有所不同。
- 本项目的运维(部署)主要使用 Terraform 完成。请参阅这里的文档。
- 每个示例都包含 README,其中包含安装说明等。在很多情况下,多个示例的部署
要求
代码
- Python 3.6
- Pipenv(依赖管理)
- Chalice
- PyYAML
- HTTPie
- AWS CLI,部署/设置各种 AWS 组件需要 root 或高级权限
- jq
AWS 资源
- RDS => MySQL(符合免费套餐条件)
- DynamoDB(符合免费套餐条件)
- Amazon SNS(用于主题的发布/订阅)
- Amazon Lambda,嗯...用于函数。
- Amazon CloudWatch Logs
免责声明
请仅在个人/非生产账户中使用
我们不对任何人使用这些函数(DVFaaS)的方式负责。我们已经明确了应用程序的用途,不应将其用于恶意目的。我们已发出警告并采取措施,防止用户将 DVFaaS 安装到生产账户中。
你负责在 AWS 账户上运行此项目所需的必要授权(如果有)。
安装与设置
- 使用 Git 克隆项目
git clone <URL>
- 我们使用 pipenv 管理项目依赖。你可以使用
pipenv install 安装所有依赖。
- 每个实验都有各自的部署规范。大多数情况下,每个实验都有一个名为
ops 的专用部署目录,用于管理部署。
- 我们强烈推荐使用
httpie 作为 HTTP 客户端,因为它基于命令行且非常易用。
- 对于某些部署,我们使用 Terraform 来执行部署并设置 AWS IAM 角色等。
- 请注意,你需要拥有具备 root/高级权限的 AWS 账户并安装 aws cli,这一切才能正常工作。
- 目前,所有练习都使用 Chalice(一个基于 Python 的 AWS Lambda 框架)。
- 每个实验都有一个
.chalice 文件夹,chalice 会识别该文件夹以进行部署。
- 对于大多数实验,你需要配置
.chalice/config.json 文件来配置部署。请阅读每个实验的 README 获取相关信息。
这必须在部署完成后进行(在适用情况下即 ops 目录)
- 完成后,部署就相当简单了,只需一条
chalice deploy 命令即可将你的 Lambda 函数推送到 AWS 账户:
- 请注意,你需要拥有具备 root/高级权限的 AWS 账户并安装 aws cli,这一切才能正常工作。
待办事项
- 解释攻击部署与执行的视频系列
- GraphQL 示例
- NodeJS 示例