Sto testando con la penna un'applicazione ASP.NET che presenta il comportamento Correzione della sessione . L'applicazione utilizza sessioni basate su cookie . In sostanza:
- Quando atterri sulla pagina non viene creato alcun cookie di sessione
- Dopo il login
ASP.NET_SessionId
cookie viene creato - Durante il logout e il login ripetuto il valore del cookie rimane lo stesso (non esiste la rigenerazione del valore del cookie)
Sono stato in grado di eseguire un attacco di Session Fixation manualmente :
- Sono arrivato alla pagina
- Ho creato manualmente un cookie
ASP.NET_SessionId
con qualche valore (per l'autore dell'attacco) - Ho aperto una nuova sessione del browser e ho impostato lo stesso identico cookie (per la vittima)
- Ho effettuato l'accesso come vittima in questa nuova sessione del browser
- Nella sessione del browser dell'utente malintenzionato ero ora in grado di esplorare il sito Web come vittima
Ora sto avendo problemi a sfruttare questa vulnerabilità di Session Fixation in condizioni reali. Devo creare o modificare il cookie ASP.NET_SessionId
in qualche modo. Da quello che sono in grado di dire, non c'è alcuna vulnerabilità XSS sul sito web che potrei usare.
Ho giocato con due varianti di attacco degne di nota, ma senza fortuna (un caso in cui una vittima avrebbe cliccato su un link che avrebbe impostato un cookie sulla pagina web):
- JavaScript
https://www.example.com/<script>document.cookie='ASP.NET_SessionId=THISISAFIXATEDCOOKIE; expires=Thu, 18 Dec 2015 12:00:00 UTC; path=/; domain=example.com; path=/'</script>
- Iniezione HTML
https://www.example.com/<meta http-equiv=Set-Cookie content="ASP.NET_SessionId=THISISAFIXATEDCOOKIE; expires=Thu, 18 Dec 2015 12:00:00 UTC; path=/; domain=example.com; path=/">
Qualunque cosa abbia provato, ho colpito una pagina di errore predefinita o la pagina di destinazione senza cookie creati / modificati.
Mi manca qualcosa con questi due vettori di attacco?
C'è qualche altro metodo che potrei provare a creare o modificare il cookie ASP.NET_SessionId della vittima oltre a usare man-in-the-middle o man-in-the-browser attacchi (basati su malware)?