Le tecniche descritte in questo articolo devono essere usate solo in ambienti di test o piattaforme dedicate come Hack This Site (HTS). Qualsiasi uso su siti reali senza autorizzazione è illegale.
Dopo aver superato i primi tre livelli introduttivi, più semplici e guidati, chi affronta Hack This Site inizia a incontrare sfide decisamente più stimolanti. I livelli 4 e 5 segnano i primi veri ostacoli per chi muove i primi passi nell’hacking etico: non basta più limitarsi a “leggere il sorgente” o scoprire un file dimenticato. Ora entra in gioco il ragionamento logico, la manipolazione dei form e la comprensione del comportamento lato client.
L’importanza di sbagliare
Prima di iniziare, una premessa fondamentale: fallire è parte del gioco. In questi livelli non esistono trucchi da “smanettoni”, ma piuttosto domande da porsi:
- Cosa fa veramente questo modulo?
- Quali dati vengono inviati al server?
- Posso modificare questi dati?
- Il confronto tra input e password avviene lato client o lato server?
Allenarsi a rispondere a queste domande è il primo passo per sviluppare una mentalità da hacker etico.
🧩 Livello 4 – Cambia il destinatario dell’email
🔙 Hai perso i livelli precedenti?
➡️ Livelli base da 1 a 3: introduzione all’hacking etico
Descrizione ufficiale:
Questa volta Sam ha reso difficile da codificare la password nello script. Comunque sia questa password è lunga e complessa e Sam scorda spesso le cose. Quindi ha scritto uno script che invii la password automaticamente alla sua e-mail nel caso la dimenticasse.
L’obiettivo
In questa sfida, non si tratta più di scoprire una password nascosta nel codice, ma di intercettare una password inviata all’email. Il modulo HTML contiene un campo nascosto che specifica il destinatario del messaggio:
L’intera logica è lato client, il che rende il sistema estremamente vulnerabile.
✅ Come superarlo
- Apri il codice sorgente della pagina (tasto destro → “Visualizza sorgente” o CTRL+U).
- Trova la riga con il campo
inputnascosto. - Cambia il valore dell’attributo
valuecon un’email associata al tuo account su HTS:
<input type=”hidden” name=”to” value=”tuo@email.com”> - Salva la pagina localmente (CTRL+S), aprila con il browser e clicca sul pulsante per inviare la password.
- Se tutto è corretto, riceverai l’email con la password.
🧠 Cosa insegna questo livello
- Mai fidarsi dei dati definiti lato client, nemmeno se “nascosti”.
- I campi
hiddenHTML sono facilmente manipolabili. - Una buona sicurezza web impone controlli server-side per convalidare dati come email, username, token ecc.
🔐 Livello 5 – Manipolazione avanzata del form (con controllo del referer)
Descrizione ufficiale:
Sam è diventato più furbo di tutte quelle persone che hanno scritto il proprio modulo per ottenere la password. Quindi, piuttosto che imparare la password, ha deciso di rendere un tantino più sicuro il suo programma.
Sam ha aggiunto un controllo per evitare che la password venga inviata a qualcuno che non sia lui. Ma è davvero efficace?
Analisi tecnica
Il livello 5 sembra simile al precedente, ma introduce una protezione extra: il sistema controlla anche l’intestazione HTTP Referer, ovvero verifica che il form venga inviato dalla pagina originale di Hack This Site.
Questo impedisce un trucco comune usato nel livello 4: salvare la pagina localmente, modificarla e aprirla dal proprio computer. In quel caso, il referer cambierebbe e il server potrebbe rifiutare l’invio.
✅ Come superarlo
- Il trucco qui è modificare il campo nascosto direttamente dalla console del browser, senza mai uscire dalla pagina originale:
- Accedi al livello 5 e apri la console del browser:
- Chrome/Firefox:
CTRL + SHIFT + JoppureF12> tab Console
- Chrome/Firefox:
- Digita il seguente comando per sovrascrivere il destinatario dell’email:
document.forms[0].to.value = “tuo@email.com”; - Premi invio.
- Clicca il pulsante per inviare la password.
- Se tutto è corretto, la password verrà recapitata alla tua casella di posta.
🧠 Cosa insegna questo livello
Il codice lato client è sempre manipolabile. Anche con controlli sul referer, basta non uscire dalla pagina.
Le console JavaScript non sono solo strumenti per debugging: possono essere usate anche per testare vulnerabilità in tempo reale.
Ogni dato ricevuto dal client (compresi i campi hidden) va verificato lato server. Altrimenti chiunque può modificarli.
🛡️ JavaScript Injection ≠ Console JavaScript
A volte, i principianti pensano che usare comandi JavaScript come:
javascript:alert(“CIAO”);oppure scrivere codice nella console del browser equivalga a un attacco al sito. Ma non è così. Quando usi la console o un bookmarklet javascript:, stai semplicemente dicendo al tuo browser di eseguire codice sulla pagina. È una manipolazione locale, utile per test o esercizi, ma non è un’injection vera e propria.
❗ Quando diventa pericoloso?
Una vulnerabilità di JavaScript injection vera e propria (XSS) si ha quando il sito accetta input dell’utente (come un campo di testo) e lo reinserisce nella pagina senza sanificarlo, ad esempio:
<script>alert(“XSS”)</script>
Se questo codice viene memorizzato o riflesso nella pagina e si esegue automaticamente, allora si è di fronte a un rischio reale, che può compromettere account, sessioni, cookie, e altro.
🔍 Differenza a colpo d’occhio
| Situazione | Esegue JS? | Comporta un rischio per il sito? |
|---|---|---|
| Console o bookmarklet | ✅ Sì | ❌ No (locale) |
| Injection non sanificata (XSS) | ✅ Sì | ✅ Sì (grave) |
✅ In sintesi
| Aspetto | Dettagli |
|---|---|
| Tipo di vulnerabilità | Manipolazione form via console |
| Difficoltà aggiuntiva | Controllo del referer |
| Soluzione | Sovrascrivere il valore del campo to |
| Strumento chiave | Console JavaScript del browser |
Imparare a farsi le domande giuste è la vera svolta nella formazione.
🤔 Riflessioni tecniche e metodologiche
I livelli 4 e 5 di Hack This Site rappresentano un momento cruciale nell’apprendimento dell’hacking etico: qui non si tratta più solo di “leggere il codice”, ma di capire come il browser e il server si parlano, e come sia possibile interferire con questa comunicazione quando le verifiche sono deboli.
🔐 Lezione 1: Lato client ≠ sicurezza
In entrambi i livelli, la protezione della password si basa su un campo nascosto nel form HTML (<input type="hidden" name="to">). Ma tutto ciò che è visibile (o modificabile) nel browser non è sicuro. Se il server accetta dati “al volo” senza controllarli, un utente può manipolarli come vuole.
Regola d’oro: qualsiasi input controllato solo lato client è vulnerabile.
🧠 Lezione 2: L’hacker etico ragiona prima di agire
Nel livello 5 il tentativo più ovvio — modificare la pagina localmente — fallisce a causa del controllo sul Referer. Qui entra in gioco la riflessione critica: “E se modificassi il dato senza uscire dalla pagina?” Questo tipo di ragionamento è tipico dell’hacking etico: porsi domande fuori dagli schemi, senza violare le regole del gioco.
🛠️ Lezione 3: Gli strumenti sono estensioni della mente
- DevTools e Console JS non servono solo per debugging: sono veri e propri strumenti di analisi e manipolazione.
- Basta una riga di JavaScript per deviare un flusso pensato in modo errato dal programmatore.
Imparare a usare gli strumenti ti permette di “vedere” ciò che non è evidente e di intervenire in modo mirato.
📚 Lezione 4: La sicurezza è anche questione di contesto
Il livello 5 ci ricorda che un sistema può sembrare protetto… finché qualcuno non lo guarda da un’altra prospettiva. Il controllo del referer può sembrare una buona idea, ma se tutto il resto è manipolabile, non risolve il problema.
La vera sicurezza sta nel lato server, nella verifica costante e nell’uso di logiche resistenti alla manipolazione.
✅ Conclusione
I livelli 4 e 5 di Hack This Site segnano un primo salto di qualità: dalla semplice ispezione dell’HTML si passa alla manipolazione dei dati e all’analisi del comportamento del codice lato client. Le sfide non sono solo tecniche, ma logiche: si tratta di ragionare come un analista, non solo come un programmatore.
I livelli 4 e 5 di Hack This Site mostrano un concetto essenziale: non serve forzare un sistema con strumenti complessi se chi l’ha costruito ha lasciato aperte le porte.
Attraverso queste sfide, hai imparato a:
- Manipolare input HTML e form nascosti.
- Usare la console JavaScript per interagire dinamicamente con una pagina.
- Comprendere la differenza tra sicurezza lato client e lato server.
- Ragionare in modo critico di fronte a controlli apparenti, come l’HTTP referer.
In un certo senso, questi livelli ti insegnano a guardare il web con occhi diversi. Dove prima vedevi solo un modulo da compilare, ora vedi variabili, vulnerabilità e logiche da analizzare.
Il mondo della sicurezza informatica non è fatto di trucchetti, ma di pratica, riflessione e studio continuo. E Hack This Site è un ottimo campo di allenamento, dove sbagliare non solo è concesso, ma fondamentale per crescere.
Se sei arrivato fin qui, sei già molto più vicino al pensiero di un vero analista di sicurezza. E questo è solo l’inizio.
🔎 Approfondimento – Java e JavaScript: attenzione alle differenze!
Molti alle prime armi confondono Java con JavaScript, ma si tratta di due linguaggi completamente diversi, con scopi distinti.
Cos’è Java?
Java è un linguaggio di programmazione ad alto livello, orientato agli oggetti, nato nel 1995 e progettato per essere multipiattaforma: il suo motto è “Write once, run anywhere”. Significa che un programma Java, una volta compilato, può essere eseguito su qualsiasi sistema operativo che abbia installata una Java Virtual Machine (JVM).
Viene utilizzato per:
- Applicazioni desktop complesse
- Backend server-side (ad esempio in banche, assicurazioni, ecc.)
- Applicazioni Android
- Sistemi embedded e software industriale
Perché non c’entra con Hack This Site (almeno nei primi livelli)
I primi livelli di Hack This Site sono focalizzati su HTML, JavaScript e logica web, quindi Java non entra in gioco. Tuttavia, è importante sapere cosa sia, soprattutto se in futuro vorrai affrontare:
- Analisi di app Android
- Ingegneria inversa di software
- Vulnerabilità lato server (es. deserializzazione Java)
JavaScript invece…
JavaScript è un linguaggio di scripting lato client (anche se oggi è usato anche lato server con Node.js). È pensato per interagire con il browser, controllare elementi HTML, rispondere agli eventi e gestire dinamicamente il contenuto di una pagina.
In breve:
| Linguaggio | Dove si usa | A cosa serve |
|---|---|---|
| Java | Server, desktop, mobile | Applicazioni complete, complesse |
| JavaScript | Browser (client-side) | Interazione dinamica nelle pagine web |
🔙 ➡️ Prosegui con il Livello 6 (link non ancora attivo)
⚡ Questo nodo della rete è alimentato da conoscenza libera e caffeina.
Se hai trovato qualcosa di utile, puoi supportarci con un caffè digitale.
👉 Offrimi un caffè
Powered by Buttondown
