• Non ci sono risultati.

4.2 Contesto di partenza

4.2.3 Juice Shop

A favore del lavoro svolto, si `e scelto di utilizzare la piattaforma Juice Shop16. Uno dei progetti di punta della fondazione OWASP, Juice `e una delle pi`u mo-derne e sofisticate applicazioni web, sviluppata appositamente in maniera insicura per permetterne l’utilizzo in corsi di formazione sulla sicurezza, CTF o come eser-cizio per studenti di Cyber Security. Essa comprende tutte le vulnerabilit`a della OWASP Top Ten, insieme ad altre vulnerabilit`a.

E scritta in Node.js, Express e Angular, comprende un notevole numero di sfide` di sicurezza web di varia difficolt`a che l’utente deve superare e il progresso delle sfide superate viene tracciato su di un tabellone.

E un’applicazione implementata completamente in Javascript e TipeScript. Nel` frontend il framework Angular17 `e usato per creare una Single Page Application e utilizza Angular Flex per ottenere la dinamicit`a delle pagine.

Javascript viene usato anche nel backend come linguaggio di programmazione dove una applicazione Express ospitata in un server Node.js18 fornisce il codice lato client al browser e rende disponibili le funzionalit`a di backend necessarie al client tramite APIs RESTful. Come database viene invece utilizzato un SQLite, grazie alla sua semplicit`a e alla sua natura basata su file.

Come ulteriore database, viene utilizzato anche MarsDB, un derivato Java-script del database NoSQL MongoDB, ampiamente utilizzato e compatibile con la maggior parte delle operazioni di query.

Quando una sfida viene superata con successo viene mostrata una notifica push all’utente, implementata tramite il protocollo WebSocket. L’applicazione

15https://medium.com/csictf/cisco-seccon-2020-ad-ctf-2614b27f387a.

16https://owasp.org/www-project-juice-shop/.

17https://angularjs.org/.

18https://nodejs.org/it/.

Figura 26: Architettura di Juice Shop

offre anche una comoda registrazione utente tramite Oauth 2.0, in modo che gli utenti possano accedere con il loro account Google.

L’utilizzo di Juice Shop per creare un Cyber Range ha diversi vantaggi, tra i quali:

1. Open Source: essendo licenziato sotto licenza MIT, non ha costi ed `e dispo-nibile liberamente;

2. Semplice da deployare e da installare;

3. Di facile utilizzo per chiunque lo usi e con sfide di diversi gradi di difficolt`a;

4. Possibilit`a di brandizzarlo in base al contesto in cui ci si trova, cambiarne i contenuti o le immagini;

5. Gamificazione: l’applicazione notifica all’utente le sfide risolte e tiene traccia delle vulnerabilit`a sfruttare con successo su una dashboard privata;

6. Interoperabilit`a: integrazione con diversi sistemi di formazione tramite We-bHook.

Le vulnerabilit`a presenti in Juice sono categorizzate in diverse classi. La mag-gior parte copre diversi tipi di rischio come la OWASP Top 10, la Common Weak-ness Enumeration del MITRE19e la Web Application Security Consortium Threat Classification (WASC)20.

19https://cwe.mitre.org/.

20http://projects.webappsec.org/w/page/13246978/Threat%20Classification.

Categoria OWASP CWE WASC

Per motivare gli studenti a trovare le vulnerabilit`a `e disponibile inoltre una lista delle sfide in una pagina segreta (Figura 27), nella quale si possono vedere le sfide risolte, quelle mancanti e il livello di difficolt`a. Nella stessa pagina `e possibile avere istruzioni per alcune sfide, alcune molto dettagliate, altre decisamente vaghe.

Figura 27: Scoreboard di Juice Shop

OWASP Juice Shop pu`o essere inoltre personalizzato nel suo inventario di pro-dotti e nel suo look & feel per soddisfare eventuali esigenze aziendali o universitarie, sostituendo il logo dell’applicativo o altri dettagli grafici.

La personalizzazione `e permessa da un file di configurazione YAML posto nella cartella /config. Per poter eseguire una propria customizzazione `e necessario:

• Aggiungere il proprio file di configurazione .yml in /config;

• Impostare una variabile d’ambiente NODE ENV al nome del file di configu-razione creato senza l’estensione .yml;

• Lanciare l’applicazione con il comando npm start.

Di seguito un esempio di configurazione yml, utilizzata da Mozilla Foundation per una sua CTF21:

a p p l i c a t i o n :

domain : m o z i l l a−c t f . op name : ’ M o z i l l a CTF’

l o g o : ’ h t t p s : / / g i t h u b . com/ m o z i l l a / c t f−aus ti n /raw/ master / app / p u b l i c / i m a g e s / MozillaCTF . png ’

21https://hacks.mozilla.org/2018/03/

hands-on-web-security-capture-the-flag-with-owasp-juice-shop/.

f a v i c o n : ’ h t t p s : / / g i t h u b . com/ m o z i l l a / c t f−aus ti n /raw/

m a s t e r / app / p u b l i c / f a v i c o n v 2 . i c o ’ theme : d e e p o r a n g e−i n d ig o

showGitHubLinks : t r u e l o c a l B a c k u p E n a b l e d : f a l s e

xssBonusPayload : ’< i f r a m e width =”560” h e i g h t =”315” s r c =”

Un’altra funzionalit`a molto interessante di Juice Shop `e quella di poter essere esportata in un formato speciale che permette di importarla successivamente in certe piattaforme di punteggio, come CTFD22, FBCTF23e RootTheBox24 (Figura 28).

Tramite il tool juice-shop-cli25 `e possibile, sia in modalit`a guidata che in mo-dalit`a non interattiva, esportare tutte le sfide presenti sulla piattaforma, gi`a divise per categoria, in formato zip e poterle poi importare in una piattaforma di scoring in modo da avere gi`a le sfide, le flag e il punteggio preconfigurato.

Figura 28: Export di Juice Shop

CTFd

Juice Shop supporta i CTF in stile Jeopardy generando un codice per ogni sfida risolta. Per abilitarlo `e necessario inserire nel file YAML la variabile

22https://ctfd.io/.

23https://github.com/facebookarchive/fbctf.

24https://github.com/moloch--/RootTheBox.

25https://github.com/juice-shop/juice-shop-ctf.

c t f :

s h o w F l a g s I n N o t i f i c a t i o n s : t r u e

in modo che ogni volta che viene risolta una sfida appaia un pop-up con la flag e la si possa inserire in modo manuale all’interno della piattaforma di scoring.

Una volta impostata la modalit`a CTF, `e possibile esportare le varie flag con lo strumento juice-shop-ctf-cli e importarle in una delle piattaforme pi`u utilizzate per lo scoring durante i CTF, come a esempio CTFD.

CTFD `e un framework CTF (Figura 29) progettato per la facilit`a d’uso sia per gli organizzatori sia per gli utenti. Esso permette di creare le proprie sfide, categorie, suggerimenti e flag all’interno dell’interfaccia di amministrazione.

Figura 29: Piattaforma CTFD Alcune delle feature sono:

• Sfide con punteggio dinamico;

• Flag statiche e basate su regex;

• Suggerimenti sbloccabili per gli utenti;

• Caricamento di file sul server per sfide come reversing o binary exploitation;

• Protezione automatica contro attacco bruteforce;

• Competizioni individuali o a squadre;

• Grafici per la verifica del punteggio tra i vari utenti;

• Supporto email con SMTP;

• Personalizzazione della grafica;

• Importazione ed esportazione di dati.

Per importare una lista di sfide in CTFD `e quindi sufficiente andare in Impo-stazioni - Import ed effettuare l’upload dell’archivio creato precedentemente con juice-shop-ctf, come mostrato in Figura 30).

Figura 30: Import di sfide in CTFD

Documenti correlati