DVFaaS - Funzioni Dannatamente Vulnerabili come Servizio
Un progetto DHIY (Deploy and Hack It Yourself) che puoi distribuire ed eseguire un sacco di funzioni orribilmente insicure su AWS Lambda

Obiettivo e Destinatari
- Noi di we45 facciamo molta formazione sulla sicurezza Serverless, sul Cloud e sulla sicurezza degli stack web moderni.
- Crediamo fermamente che ci sia una grande necessità per sviluppatori, architetti, DevOps e personale di sicurezza di imparare e comprendere i rischi legati a questi componenti moderni.
- Questo progetto è il culmine dei nostri sforzi formativi nello sviluppo di app Serverless (FaaS) intenzionalmente vulnerabili che abbiamo deciso di aprire alla comunità in generale.
Questo progetto è perfetto per te, se:
- Vuoi imparare le falle di sicurezza delle app serverless, in particolare le implementazioni FaaS.
Questo progetto non fa per te, se:
- Non vuoi distribuire (ed eseguire) le tue funzioni. L'idea qui è che tu impari facendo.
Nota bene:
- Le funzioni sono pensate per essere distribuite su AWS Lambda. Ma i principi e i concetti si applicano ovunque.
- La maggior parte delle funzioni sono in Python, in particolare in un framework chiamato
chalice (pensato per Python su AWS Lambda). La distribuzione di queste funzioni nel tuo ambiente lambda è ragionevolmente semplice.
- In definitiva, il progetto si allinea alla OWASP Serverless Top 10, disponibile qui, ma alcuni esempi possono variare.
- Le operazioni (distribuzione) per questo progetto sono in gran parte realizzate con Terraform. Trovi la documentazione qui.
- Ogni esempio ha un README, che contiene istruzioni di installazione, ecc. In molti casi, la distribuzione per più esempi ove
Requisiti
Codice
- Python 3.6
- Pipenv (gestione delle dipendenze)
- Chalice
- PyYAML
- HTTPie
- AWS CLI con privilegi root o elevati richiesti per la distribuzione/configurazione dei vari componenti AWS
- jq
Risorse AWS
- RDS => MySQL (idoneo al Free Tier)
- DynamoDB (idoneo al Free Tier)
- Amazon SNS (Pub/Sub per Topics)
- Amazon Lambda, sai....per le funzioni
- Amazon Cloudwatch Logs
Disclaimer
Si prega di utilizzare solo account personali/non di produzione
Non ci assumiamo la responsabilità del modo in cui chiunque utilizzi queste funzioni (DVFaaS). Abbiamo reso chiari gli scopi dell'applicazione e non dovrebbe essere utilizzata in modo dannoso. Abbiamo fornito avvisi e adottato misure per impedire agli utenti di installare DVFaaS su account di produzione.
Sei responsabile delle autorizzazioni necessarie (se presenti) di cui avrai bisogno per eseguire questo progetto sul tuo account AWS.
Installazione e Configurazione
- Clona il progetto con Git
git clone <URL>
- Utilizziamo pipenv per gestire le dipendenze del progetto. Puoi usare
pipenv install per installare tutte le dipendenze
- Ogni laboratorio ha la propria specifica di distribuzione. Nella maggior parte dei casi, c'è una directory di distribuzione specifica in ogni laboratorio chiamata
ops
che viene utilizzata per gestire le distribuzioni
- Consigliamo vivamente di utilizzare
httpie come client http, dato che è a riga di comando e davvero facile da usare
- Per alcune distribuzioni, utilizziamo Terraform per eseguire le distribuzioni e configurare i ruoli AWS IAM e così via.
- Tieni presente che dovrai avere privilegi elevati/root su AWS con aws cli affinché tutto questo funzioni.
- Attualmente, per tutti gli esercizi utilizziamo Chalice (un framework AWS Lambda in Python).
- Tutti i laboratori hanno una cartella
.chalice che viene riconosciuta da chalice ai fini della distribuzione.
- Per la maggior parte dei laboratori, dovrai configurare il file
.chalice/config.json per configurare la distribuzione. Leggi il README di ciascun laboratorio per queste informazioni.
Questo dovrà essere fatto dopo la distribuzione (che sono le directory ops dove applicabile)
- Una volta fatto, la distribuzione è abbastanza semplice, con un semplice comando
chalice deploy che invierà la tua funzione Lambda al tuo account AWS:
TODO
- Serie di video che spiegano la distribuzione e l'esecuzione degli attacchi
- Esempi GraphQL
- Esempi NodeJS