L'XSS temporaneo è un problema?

1

Uso regolarmente un sito, quindi volevo assicurarmi che fosse sicuro. Una delle cose che ho controllato è che quando ho cambiato il mio nome in <img src="http://blah.blah/blah/blah.notanextension" onerror=alert(document.cookie);>Henry che non mi ha dato l'avviso con tutti i miei cookie (avevo già stabilito che avevano rimosso% tag% tag). Bene, comunque, dopo aver visitato la home page e aver visitato nuovamente il mio profilo, l'XSS era stato rimosso dal mio nome. Ho verificato che il filtro che lo ha fatto sia applicato in modo ricorsivo e funzioni abbastanza bene per quanto ho potuto dire. Il sito utilizza token CSRF, quindi qualcuno non può inserire XSS tramite CSRF. Si tratta di un problema di sicurezza anche se l'input è disinfettato ogni volta che visito nuovamente la pagina?

    
posta 735Tesla 14.02.2014 - 22:24
fonte

2 risposte

2

Sì, potrebbe essere un problema. Dipende dal punto in cui il campo del nome viene disinfettato. Le mie prime impressioni sul fatto che si trattasse di un aggiornamento DOM che ha causato la visualizzazione dell'avviso (vedere XSS basato su DOM ). Tuttavia, come hai detto potresti aggiornare la pagina, questo è improbabile a meno che non venga aggiunto un hash alla barra degli indirizzi (ad esempio www.example.com/page.aspx#name=foo ).

Forse viene eseguito uno script per disinfettare il valore quando viene visualizzata la pagina iniziale (che sarebbe dispari). C'è anche la possibilità che determinati valori possano aggirare l'igienizzazione e sfruttare la vulnerabilità. Una di queste cose significa che il carico utile XSS può essere eseguito quando un utente amministratore visualizza l'elenco degli utenti.

C'è anche la possibilità che Controlli di accesso interrotti possa consentire ad un altro utente di aggiornare il nome di un altro utente per sfruttare questo difetto XSS quando accedono.

Dipende tutto da quando viene eseguita la sanificazione, quindi sono necessarie ulteriori indagini sul sito per determinarlo.

    
risposta data 17.02.2014 - 12:31
fonte
1

Quindi, da quello che stai dicendo sembra che l'aggiornamento non sia persistente nel database, viene mostrato sulla pagina quando lo salvi, ma non se ti allontani e poi torni indietro.

Se questo è il caso, è probabile che questo sia un rischio limitato (per non dire che non consiglierei di ripararlo), poiché sarebbe difficile costruire uno scenario di attacco valido in cui ciò potrebbe avere un impatto.

Affinché un malintenzionato possa sfruttarlo, sembra che per accedere ai dati sia necessario accedere alla sessione, a quel punto rubare il token di sessione è un po 'inutile.

Poiché non persiste, non vi è alcun rischio che un altro utente visualizzi il tuo nome ed esegua il codice JavaScript.

Se i dati che hai inserito appaiono altrove nell'applicazione (ad esempio in una pagina di amministrazione), allora ovviamente sarebbe un brutto XSS del 2 ° ordine che potrebbe avere un impatto piuttosto grande.

    
risposta data 17.02.2014 - 12:59
fonte

Leggi altre domande sui tag