Esclusione del contesto dei dati JavaScript per eseguire XSS quando vengono sostituiti il backslash e le virgolette?

3

Supponiamo di avere questo nel mio sito:

<script> var x = "<? echo unsafe_data; ?>"; </script>

Questo è ovviamente vulnerabile all'XSS. Ora supponiamo di "pulire" i dati non sicuri sostituendo \ con \ e " con \" (in quest'ordine). Sono ancora vulnerabile? Quali payload possono essere utilizzati per uscire dal contesto dei dati JavaScript ed eseguire il codice?

    
posta Anders 28.01.2016 - 21:35
fonte

1 risposta

4

Che ne dici di

</script><script>alert('xss');</script><script>/*

Il parser JS troverà la chiusura script e presumerà che il codice originale non sia corretto. Il parser HTML visualizzerà script aperto e avvierà un nuovo blocco di script. Il resto è solo per ignorare il resto del blocco.

Nota che non contiene nessuno dei caratteri che stai sfuggendo: non dovrebbe essere influenzato dal tuo codice di disinfezione.

    
risposta data 28.01.2016 - 21:49
fonte

Leggi altre domande sui tag