DVFaaS — Чертовски уязвимые функции как сервис
Проект DHIY (Deploy and Hack It Yourself — разверни и взломай сам), с помощью которого вы можете развернуть и запустить кучу ужасно небезопасных функций на AWS Lambda

Цель и аудитория
- В we45 мы проводим много тренингов по безопасности serverless, облачной безопасности и безопасности современных веб-стеков.
- Мы твердо верим, что разработчики, архитекторы, DevOps и специалисты по безопасности остро нуждаются в изучении и понимании рисков, связанных с этими современными компонентами.
- Этот проект — результат наших учебных усилий по созданию намеренно уязвимых serverless-приложений (FaaS), которые мы решили открыть для широкого сообщества.
Этот проект отлично подойдет вам, если:
- Вы хотите узнать об уязвимостях serverless-приложений, особенно реализаций FaaS.
Этот проект не для вас, если:
- Вы не хотите развертывать (и запускать) собственные функции. Идея в том, чтобы вы учились на практике.
Обратите внимание:
- Функции предназначены для развертывания в AWS Lambda. Но принципы и концепции применимы повсеместно.
- Большинство функций написано на Python, а именно с использованием фреймворка
chalice (предназначенного для Python на AWS Lambda). Развертывание этих функций в вашем окружении Lambda довольно простое.
- В конечном счете проект соответствует OWASP Serverless Top 10, описанному здесь, но некоторые примеры могут отличаться.
- Операции (развертывание) для этого проекта в основном выполняются с помощью Terraform. Документацию можно найти здесь.
- Каждый пример содержит README с инструкциями по установке и т.д. Во многих случаях развертывание нескольких примеров ove
Требования
Код
- Python 3.6
- Pipenv (управление зависимостями)
- Chalice
- PyYAML
- HTTPie
- AWS CLI с root-правами или высокими привилегиями, необходимыми для развертывания/настройки различных компонентов AWS
- jq
Ресурсы AWS
- RDS => MySQL (соответствует условиям бесплатного тарифа)
- DynamoDB (соответствует условиям бесплатного тарифа)
- Amazon SNS (Pub/Sub для тем)
- Amazon Lambda, ну... для функций
- Amazon Cloudwatch Logs
Отказ от ответственности
Используйте только в личных/непроизводственных аккаунтах
Мы не несем ответственности за то, как кто-либо использует эти функции (DVFaaS). Мы четко обозначили назначение приложения, и его не следует использовать в злонамеренных целях. Мы дали предупреждения и приняли меры, чтобы не допустить установки DVFaaS на производственные аккаунты.
Вы несете ответственность за необходимые разрешения (если таковые требуются) для запуска этого приложения в вашем аккаунте AWS.
Установка и настройка
- Клонируйте проект:
git clone <URL>
- Для управления зависимостями проекта мы используем pipenv. Вы можете использовать
pipenv install для установки всех зависимостей.
- Каждая лабораторная работа имеет свою спецификацию развертывания. В большинстве случаев в каждой лабораторной работе есть отдельный каталог развертывания
ops, используемый для управления развертываниями.
- Мы настоятельно рекомендуем использовать
httpie в качестве HTTP-клиента, так как он работает из командной строки и очень прост в использовании.
- Для некоторых развертываний мы используем Terraform для выполнения развертываний, настройки ролей AWS IAM и т.д.
- Обратите внимание, что для работы всего этого вам понадобятся высокие/root-привилегии в AWS вместе с aws cli.
- В настоящее время для всех упражнений мы используем Chalice (фреймворк AWS Lambda на Python).
- Во всех лабораторных работах есть папка
.chalice, которая распознается chalice для целей развертывания.
- Для большинства лабораторных работ вам потребуется настроить файл
.chalice/config.json для конфигурации развертывания. Пожалуйста, прочитайте README каждой лабораторной работы для получения этой информации.
Это необходимо сделать после развертывания (то есть в каталогах ops, где это применимо).
- После этого развертывание выполняется довольно просто — с помощью команды
chalice deploy, которая отправит вашу Lambda-функцию в ваш аккаунт AWS:
TODO
- Серия видео, объясняющих развертывание и проведение атак
- Примеры GraphQL
- Примеры NodeJS