DVFaaS - Verdammt verwundbare Funktionen als Service
Ein DHIY-Projekt (Deploy and Hack It Yourself), mit dem Sie eine Menge schrecklich unsicherer Funktionen auf AWS Lambda bereitstellen und ausführen können

Zielsetzung und Zielgruppen
- Wir bei we45 führen viele Schulungen zu Serverless Security, Cloud und Sicherheit moderner Web-Stacks durch.
- Wir sind fest davon überzeugt, dass Entwickler, Architekten, DevOps- und Sicherheitspersonal dringend lernen und verstehen müssen, welche Risiken mit diesen modernen Komponenten verbunden sind.
- Dieses Projekt ist der Höhepunkt unserer Schulungsbemühungen bei der Entwicklung absichtlich verwundbarer Serverless-Apps (FaaS), die wir der gesamten Community zugänglich machen möchten.
Dieses Projekt ist ideal für Sie, wenn:
- Sie mehr über Sicherheitslücken bei Serverless-Apps erfahren möchten, insbesondere bei FaaS-Implementierungen.
Dieses Projekt ist nichts für Sie, wenn:
- Sie nicht Ihre eigenen Funktionen bereitstellen (und ausführen) möchten. Die Idee dahinter ist, dass Sie durch eigenes Handeln lernen.
Bitte beachten:
- Die Funktionen sind für die Bereitstellung in AWS Lambda ausgelegt. Die Prinzipien und Konzepte gelten jedoch allgemein.
- Die meisten Funktionen sind in Python geschrieben, insbesondere in einem Framework namens
chalice (für Python auf AWS Lambda). Die Bereitstellung dieser Funktionen in Ihrer Lambda-Umgebung ist relativ einfach.
- Letztendlich ist das Projekt an der OWASP Serverless Top 10 ausgerichtet, die Sie hier finden; einige Beispiele können jedoch abweichen.
- Der Betrieb (Deployment) dieses Projekts wird größtenteils mit Terraform durchgeführt. Die Dokumentation finden Sie hier.
- Jedes Beispiel hat eine README mit Installationsanweisungen usw. In vielen Fällen überschneidet sich die Bereitstellung mehrerer Beispiele übe
Anforderungen
Code
- Python 3.6
- Pipenv (Abhängigkeitsverwaltung)
- Chalice
- PyYAML
- HTTPie
- AWS CLI mit Root- oder erweiterten Rechten, die für die Bereitstellung/Einrichtung verschiedener AWS-Komponenten erforderlich sind.
- jq
AWS-Ressourcen
- RDS => MySQL (für das Free Tier geeignet)
- DynamoDB (für das Free Tier geeignet)
- Amazon SNS (Pub/Sub für Themen)
- Amazon Lambda, na ja....für Funktionen
- Amazon Cloudwatch Logs
Haftungsausschluss
Bitte nur auf persönlichen/Nicht-Produktionskonten verwenden
Wir übernehmen keine Verantwortung dafür, wie jemand diese Funktionen (DVFaaS) nutzt. Wir haben die Zwecke der Anwendung klar dargelegt, und sie sollte nicht böswillig eingesetzt werden. Wir haben Warnungen ausgesprochen und Maßnahmen ergriffen, um zu verhindern, dass Benutzer DVFaaS auf Produktionskonten installieren.
Sie sind für erforderliche Genehmigungen (falls vorhanden) verantwortlich, die Sie benötigen, um dies auf Ihrem AWS-Konto auszuführen.
Installation und Einrichtung
- Klonen Sie das Projekt mit
git clone <URL>
- Wir verwenden pipenv zur Verwaltung der Abhängigkeiten des Projekts. Sie können
pipenv install verwenden, um alle Abhängigkeiten zu installieren.
- Jedes Lab hat seine eigene Bereitstellungsspezifikation. In den meisten Fällen gibt es in jedem Lab ein spezielles Bereitstellungsverzeichnis namens
ops
das zur Verwaltung der Bereitstellungen verwendet wird.
- Wir empfehlen dringend,
httpie als HTTP-Client zu verwenden, da es ein einfach zu bedienendes Befehlszeilentool ist.
- Für einige Bereitstellungen verwenden wir Terraform, um Deployments durchzuführen und AWS-IAM-Rollen usw. einzurichten.
- Bitte beachten Sie, dass Sie dafür Root- bzw. erweiterte Rechte bei AWS mit aws cli benötigen.
- Derzeit verwenden wir für alle Übungen Chalice (ein AWS-Lambda-Framework in Python).
- Alle Labs enthalten einen
.chalice-Ordner, der von Chalice für die Bereitstellung erkannt wird.
- Bei den meisten Labs müssen Sie die Datei
.chalice/config.json konfigurieren, um die Bereitstellung einzurichten. Bitte lesen Sie dazu die README-Datei jedes Labs.
Dies muss nach der Bereitstellung erfolgen (was die ops-Verzeichnisse betrifft, wo zutreffend)
- Danach ist die Bereitstellung mit einem einfachen
chalice deploy-Befehl relativ einfach durchzuführen, der Ihre Lambda-Funktion auf Ihr AWS-Konto überträgt:
TODO
- Videoserie, die Bereitstellung und Durchführung von Angriffen erklärt
- GraphQL-Beispiele
- NodeJS-Beispiele