Nell'articolo precedente abbiamo appreso degli errori XSS (Cross Site Scripting) e dell'effettivo sfruttamento di XSS Reflected. Esiste un altro tipo di XSS considerato più pericoloso: XSS memorizzato.
A differenza di Reflected, che attacca direttamente alcune vittime prese di mira dagli hacker, Stored XSS prende di mira più vittime. Questo errore si verifica quando l'applicazione web non controlla accuratamente i dati di input prima di salvarli nel database (qui utilizzo questo concetto per riferirmi al database, al file o ad altre aree che memorizzano i dati dell'applicazione web).
Con la tecnica Stored XSS gli hacker non lo sfruttano direttamente ma devono farlo in almeno 2 passaggi.
In primo luogo, gli hacker utilizzano punti di input non filtrati (modulo, input, area di testo...) per inserire codice pericoloso nel database.
Successivamente, quando l'utente accede all'applicazione web ed esegue operazioni relative a questi dati salvati, il codice dell'hacker verrà eseguito sul browser dell'utente.
A questo punto l’hacker sembra aver raggiunto il suo obiettivo. Per questo motivo la tecnica Stored XSS è detta anche XSS del secondo ordine.
Lo scenario di sfruttamento è descritto come segue:
L'XSS riflesso e l'XSS memorizzato presentano due differenze principali nel processo di attacco.
- Innanzitutto, per sfruttare Reflected XSS, l'hacker deve indurre la vittima ad accedere al suo URL. Per quanto riguarda Stored XSS, non è necessario farlo: dopo aver inserito il codice pericoloso nel database dell'applicazione, l'hacker deve solo attendere che la vittima vi acceda automaticamente. Per le vittime questo è del tutto normale perché non sanno che i dati a cui accedono sono stati infettati.
- In secondo luogo, l'obiettivo dell'hacker sarà più facile da raggiungere se al momento dell'attacco la vittima si trova ancora nella sessione dell'applicazione web. Con Reflected XSS, un hacker può convincere o ingannare la vittima ad accedere all'URL fornito per eseguire codice dannoso. Ma Stored XSS è diverso, perché il codice dannoso è stato memorizzato nel database Web, quindi ogni volta che l'utente accede alle funzioni correlate, il codice dannoso verrà eseguito e molto probabilmente queste funzioni richiedono l'autenticazione. l'utente è ancora nella sessione.
Da queste cose si evince che Stored XSS è molto più pericoloso di Reflected XSS, i soggetti colpiti possono essere tutti gli utenti di quella applicazione web. E se la vittima ha un ruolo amministrativo, c’è anche il rischio di web hijacking.