Laboratori di hacking
Perché usare NotHoly per CTF e laboratori
Un modello che scrive l'exploit del tuo challenge e spiega perché funziona, triage statico del binario, e un solve che gira nel tuo lab, non nel nostro.
Esegui OWASP Juice Shop in un container Docker legato alla tua macchina, verifica che risponda e fermalo in modo pulito.
OWASP Juice Shop è un'applicazione web volutamente vulnerabile. Puoi eseguirla in un container Docker sul tuo computer, aprirla in un browser su http://127.0.0.1:3000 ed esercitarti sulla sicurezza web senza toccare i sistemi di nessun altro. Il progetto dice di includere vulnerabilità di tutta la OWASP Top Ten, più altre trovate in applicazioni reali. Di seguito trovi i comandi, cosa controllare dopo ognuno, come tenere privata la porta e come fermare il laboratorio.
Juice Shop contiene falle di proposito. Tienilo su una macchina e una rete che controlli e non esporlo mai a internet.
Esegui questi due comandi in un terminale:
docker --version
docker infoIl primo comando stampa la versione della CLI di Docker. Il secondo contatta il Docker engine e ne stampa la configurazione. Se docker info segnala che non riesce a connettersi al daemon, avvia Docker Desktop o il servizio Docker, poi esegui di nuovo il comando. Il testo esatto dell'errore dipende dalla piattaforma, quindi segui la documentazione di installazione di Docker se non è ovvio come risolvere.
La documentazione del progetto indica l'immagine bkimminich/juice-shop. Il README del progetto la esegue senza tag, quindi scarica latest. Se vuoi un laboratorio ripetibile, scegli un tag di release sulla pagina di Docker Hub e aggiungilo al nome dell'immagine (bkimminich/juice-shop:<tag>), così sai quale versione stai testando.
docker run --rm --name juice-shop-lab \
-p 127.0.0.1:3000:3000 \
bkimminich/juice-shopIl flag -p pubblica una porta del container sull'host. Il valore 127.0.0.1:3000:3000 ha tre parti: indirizzo host, porta host e porta del container. Il riferimento di Docker sulla pubblicazione delle porte spiega che una mappatura senza indirizzo può restare in ascolto su tutte le interfacce dell'host. Mettere 127.0.0.1 per primo rende il laboratorio raggiungibile solo dalla tua macchina.
Il flag --rm rimuove il container quando si ferma. Il comando gira in primo piano, quindi il terminale continua a stampare log finché non lo fermi. La prima esecuzione scarica l'immagine, e può volerci un po'.
Apri http://127.0.0.1:3000 in un browser sulla stessa macchina. Dovresti vedere la home page di Juice Shop. Se non si carica, cerca errori nel terminale, poi esegui docker ps in un secondo terminale per confermare che il container sia in esecuzione e che la mappatura delle porte sia corretta. Client VPN, proxy e reti di macchine virtuali possono cambiare il comportamento del traffico locale, quindi controlla anche quelli prima di cambiare qualche flag.
Non sostituire 127.0.0.1 con 0.0.0.0 per far caricare la pagina. Quell'impostazione espone il laboratorio agli altri dispositivi della tua rete.
Prima di provare una challenge, guarda come dialogano browser e server. Apri gli strumenti per sviluppatori, passa alla scheda Network e ricarica la pagina. Scegli una richiesta e annota:
Content-Type;Puoi ottenere le stesse informazioni da un terminale:
curl -I http://127.0.0.1:3000In Windows PowerShell 5.1, curl è un alias di un altro comando, quindi scrivi curl.exe.
L'opzione -I invia una richiesta HEAD e stampa solo gli header della risposta. RFC 9110 definisce i metodi, i codici di stato e i campi header che stai guardando. Queste sono le prime righe di ciò che l'immagine senza tag ha restituito in un'esecuzione (2026-11-08); altre release possono essere diverse:
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
Content-Type: text/html; charset=UTF-8Annota cosa restituisce il tuo server e confronta.
La documentazione del progetto descrive le challenge di formazione e i relativi suggerimenti. Leggi quel materiale prima di provare un exploit e tieni ogni test puntato su 127.0.0.1. Conoscere prima il ciclo di richiesta e risposta rende più facile valutare in seguito i risultati degli scanner, perché puoi vedere il traffico che questi strumenti inviano e ricevono.
Se il container gira in primo piano, premi Ctrl+C nel suo terminale. Avendo usato --rm, Docker rimuove il container appena si ferma.
Se hai perso quel terminale, ferma il container da un altro:
docker stop juice-shop-labDocker invia un segnale di stop e aspetta che il container termini. Verifica che il laboratorio non ci sia più:
docker psSe il nome del container non compare nell'elenco, il laboratorio è fermo. Chiudere la scheda del browser non ferma il container, quindi controlla docker ps ogni volta.
Se la porta è già occupata, docker run fallisce con Bind for 127.0.0.1:3000 failed: port is already allocated. Scegli un'altra porta host, per esempio -p 127.0.0.1:3001:3000, e apri http://127.0.0.1:3001. Mantieni la parte 127.0.0.1.
Se il container esce subito, leggi i log nel terminale. Cerca la prima riga di errore, non l'ultima.
Se la prima esecuzione richiede molto tempo, Docker sta scaricando l'immagine e i suoi layer. Le esecuzioni successive partono più in fretta perché Docker conserva l'immagine in locale.
Un modello linguistico può spiegare un codice di stato o aiutarti a organizzare gli appunti, e NotHoly è un posto dove farlo. Può anche sbagliare su cosa significa una risposta, e non sostituisce né il permesso scritto né la validazione manuale. Incolla solo output del tuo laboratorio, mai cookie di sessione, token o dati di un target reale.
Scrivi gli appunti partendo da ciò che hai osservato, poi confrontali con i riferimenti qui sotto.
Laboratori di hacking
Un modello che scrive l'exploit del tuo challenge e spiega perché funziona, triage statico del binario, e un solve che gira nel tuo lab, non nel nostro.
Laboratori di hacking
Crea una rete Docker senza accesso a internet, avvia OWASP Juice Shop al suo interno e pubblica una copia per il browser solo su 127.0.0.1. Verifica ogni passo.
Laboratori di hacking
Dai una struttura a un report di pentest e scrivi un finding che altri possano riprodurre, con prove, impatto, un vettore CVSS v4.0 e una correzione.