DVFaaS - Damn Vulnerable Functions as a Service
Un projet DHIY (Deploy and Hack It Yourself) qui vous permet de déployer et d'exécuter tout un tas de fonctions affreusement non sécurisées sur AWS Lambda

Objectif et publics cibles
- Chez we45, nous faisons beaucoup de formation sur la sécurité Serverless, le Cloud et la sécurité des stacks web modernes.
- Nous croyons fermement qu'il est essentiel que les développeurs, architectes, DevOps et professionnels de la sécurité apprennent et comprennent les risques liés à ces composants modernes.
- Ce projet est le fruit de nos efforts de formation dans le développement d'applications Serverless (FaaS) volontairement vulnérables, que nous avons décidé d'ouvrir à la communauté dans son ensemble.
Ce projet est fait pour vous, si :
- Vous souhaitez en apprendre davantage sur les failles de sécurité des applications serverless, en particulier les implémentations FaaS.
Ce projet n'est pas fait pour vous, si :
- Vous ne voulez pas déployer (et exécuter) vos propres fonctions. L'idée ici est d'apprendre en faisant.
Veuillez noter :
- Les fonctions sont conçues pour être déployées sur AWS Lambda. Mais les principes et concepts s'appliquent à tous les environnements.
- La plupart des fonctions sont écrites en Python, plus précisément dans un framework appelé
chalice (destiné à Python sur AWS Lambda). Le déploiement de ces fonctions dans votre environnement Lambda est relativement simple.
- En définitive, le projet correspond à l'OWASP Serverless Top 10, disponible ici, mais certains exemples peuvent varier.
- L'exploitation (déploiement) de ce projet est en grande partie réalisée avec Terraform. Veuillez trouver la documentation ici.
- Chaque exemple contient un README avec les instructions d'installation, etc. Dans de nombreux cas, le déploiement de plusieurs exemples se recou
Prérequis
Code
- Python 3.6
- Pipenv (gestion des dépendances)
- Chalice
- PyYAML
- HTTPie
- AWS CLI avec privilèges root ou élevés requis pour le déploiement/la configuration des divers composants AWS.
- jq
Ressources AWS
- RDS => MySQL (éligible à l'offre gratuite)
- DynamoDB (éligible à l'offre gratuite)
- Amazon SNS (Pub/Sub pour les sujets)
- Amazon Lambda, vous savez... pour les fonctions
- Amazon Cloudwatch Logs
Avertissement
À utiliser uniquement sur des comptes personnels / hors production.
Nous ne sommes pas responsables de la façon dont quiconque utilise ces fonctions (DVFaaS). Nous avons clarifié les objectifs de l'application et elle ne doit pas être utilisée à des fins malveillantes. Nous avons émis des avertissements et pris des mesures pour empêcher les utilisateurs d'installer DVFaaS sur des comptes de production.
Vous êtes responsable des autorisations requises (le cas échéant) pour exécuter ce projet sur votre compte AWS.
Installation et configuration
- Clonez le projet avec
git clone <URL>
- Nous utilisons pipenv pour gérer les dépendances du projet. Vous pouvez utiliser
pipenv install pour installer toutes les dépendances.
- Chaque lab possède ses propres spécifications de déploiement. Dans la plupart des cas, il existe un répertoire de déploiement dédié dans chaque lab, appelé
ops, utilisé pour gérer les déploiements.
- Nous recommandons fortement d'utiliser
httpie comme client HTTP, car il est en ligne de commande et très facile à utiliser.
- Pour certains déploiements, nous utilisons Terraform pour effectuer les déploiements et configurer les rôles IAM AWS, etc.
- Veuillez noter que vous aurez besoin de privilèges élevés/root sur AWS avec aws cli pour que tout cela fonctionne.
- Actuellement, pour tous les exercices, nous utilisons Chalice (un framework AWS Lambda en Python).
- Chaque lab possède un dossier
.chalice reconnu par chalice pour les besoins du déploiement.
- Pour la plupart des labs, vous devrez configurer le fichier
.chalice/config.json pour configurer le déploiement. Veuillez lire le README de chaque lab pour ces informations.
Cela devra être fait après le déploiement (c'est-à-dire dans les répertoires ops le cas échéant).
- Une fois cela fait, le déploiement est relativement simple, avec une simple commande
chalice deploy qui enverra votre fonction Lambda vers votre compte AWS :
À faire
- Série de vidéos expliquant le déploiement et l'exécution des attaques
- Exemples GraphQL
- Exemples NodeJS