
Gioco di formazione pratico su AWS WAF con tutorial, laboratori con punteggio ed esami in cui i giocatori scrivono regole Web ACL per bloccare forme di attacco reali evitando falsi positivi.
Un gioco di formazione pratica per imparare AWS WAF difendendosi da attacchi reali.
English | 日本語
Per gli amministratori: come costruire l'ambiente, distribuirlo ai partecipanti, eseguirlo e ripulirlo è descritto nella Guida per amministratori (docs/ADMIN.md), mentre il documento da consegnare ai partecipanti è Per iniziare per i giocatori (docs/PLAYER_GUIDE.md). Entrambe le guide sono attualmente in giapponese.
Un ambiente pratico per imparare AWS WAF mentre si è sotto attacco.
Gioca da solo o sfida gli altri.

Il flusso che va dalla lettura dell'attacco e dei passaggi di un tutorial, alla progettazione di una regola in un laboratorio di vulnerabilità, all'avvio dell'attacco, alla revisione del punteggio e della soluzione modello, fino all'apertura di una gara dalla pagina di amministrazione (circa 70 secondi). Una versione di qualità superiore è disponibile in docs/demo-en.mp4.
Registrato in modalità sviluppo (
make dev), che assegna il punteggio con la soluzione modello invece che con un vero AWS WAF.
┌───────────────────── per player ──────────────────┐
Browser ── Lambda Function URL (gameapi: UI + API) │
│ async invoke │
▼ │
Lambda (trafficgen) ── HTTPS ─▶ ALB ◀── Web ACL (edited by the player)
│ │ │
│ ▼ │
│ Lambda (targetapp: dummy online shop) │
▼ └────────────────────────────────────┘
DynamoDB (runs, best scores, locks)
wafdojo-<name>-cf, us-east-1). CloudFront fa da frontend direttamente al Lambda Function URL dell'app fittizia anziché all'ALB, quindi le regole del Web ACL dell'ALB non si applicano lì. Imposta enable_cloudfront = false per saltarlo.X-Forwarded-For (si presume che il sito si trovi dietro una CDN).| ID | Argomento | Cosa impari |
|---|---|---|
| tutorial-1-sqli | SQL injection | Gruppi di regole gestiti |
| tutorial-2-xss | XSS nel modulo di recensione | Regole personalizzate (Rule builder), ispezione del body, trasformazioni del testo |
| tutorial-3-ipset | IP su una lista di minacce | IP set, CIDR, X-Forwarded-For |
| tutorial-4-useragent | Scanner di vulnerabilità | Corrispondenza di stringhe sulle intestazioni, istruzioni OR, trasformazione in minuscolo |
| tutorial-5-ratelimit | Flood da un singolo IP | Regole basate sulla frequenza, chiavi di aggregazione |
| tutorial-6-ja4 | Uno scraper che si finge un browser | Come funzionano le impronte JA4 e come leggerle (a_b_c), corrispondenza esatta JA4, analisi dei log WAF |
| ID | Argomento | Cosa impari |
|---|---|---|
| game-1-fakebot | Uno scraper che si finge Googlebot | Combinare AND / NOT (lo UA dice Googlebot AND l'IP non è di Google) |
| game-2-admin | Accesso esterno al pannello di amministrazione | Condizioni sul percorso URI + lista di IP consentiti, distinzione tra maiuscole e minuscole |
| game-3-traversal | Path traversal | Impilare trasformazioni del testo (doppia decodifica), evitare falsi positivi |
| game-4-cms | Una regola XSS che blocca i tuoi editor | Creare eccezioni, priorità delle regole, rivedere le regole esistenti |
| game-5-bruteforce | Brute force sul login + NAT aziendale | Istruzioni scope-down, progettazione delle soglie |
| game-6-ja4regex | Un esercito di bot che continua a modificare il proprio JA4 + un partner che usa la stessa libreria | Espressioni regolari JA4 (intercettare la parte b condivisa), prepararsi a varianti mai viste, eccezioni con AND NOT |
Le regole create nei tutorial restano attive, quindi in modalità gioco a volte causano falsi positivi (fasi 4 e 5). Devi rivedere le regole esistenti, non solo fermare nuovi attacchi.
Ogni sfida recita: "È uscita una nuova vulnerabilità. Può essere bloccata a queste condizioni. Scrivi la regola." L'obiettivo è essere in grado di scrivere le tue regole ogni volta che compare una nuova vulnerabilità. Dopo un tentativo puoi vedere il JSON della regola di risposta modello (pronto da incollare nell'editor Rule JSON della console) e una spiegazione. Molte sfide di Livello 2 e 3 includono anche una regola "errore comune" e il motivo per cui fallisce.