Come il browser analizza i caratteri di escape in Javascript (XSS)?

0

Sono nuovo agli attacchi XSS. Di recente, stavo facendo un progetto e ho scoperto che uno dei miei campi di inserimento ( sito web ) è vulnerabile a attacco XSS . Il valore nel campo del sito web viene inserito in un href di un tag anchor che causa l'attacco XSS.

Per verificare i vari modi in cui è possibile eseguire l'attacco XSS, ho fatto riferimento a un documento Github in cui ho trovato il codice seguente,

\j\av\a\s\cr\i\pt\:\a\l\ert\(1\)

Quando il codice sopra è inserito nel campo di input, il tag di ancoraggio diventa come segue:

<a target="_blank" rel="noopener" href="\j\av\a\s\cr\i\pt\:\a\l\ert\(1\)">Sample Code</a>

Facendo clic sul link sopra, viene visualizzata una finestra di avviso che mostra 1

In che modo il codice precedente viene analizzato ed eseguito dal browser quando l'utente fa clic su di esso? Ho letto delle sequenze di escape, ma i caratteri di escape di cui sopra mi mettono in difficoltà.

    
posta Panther Coder 06.07.2018 - 08:30
fonte

1 risposta

2

Come @Jacco menzionato nel suo commento, lo snippet di test che hai usato utilizza sequenze di escape .
In questa situazione, il backslash ( \ ) è il carattere di escape. Quando si incontra una barra rovesciata, significa che "il prossimo personaggio potrebbe avere un significato speciale, se lo fa, usa invece quel significato speciale".
Tuttavia, non tutte le sequenze di escape backslash sono valide. In questi casi, il carattere successivo viene usato così com'è. Ad esempio, \j non ha alcun significato speciale, quindi viene interpretato come un semplice j . Tuttavia, \n (newlines), \r (ritorno a capo), \v (scheda verticale) e \t (scheda orizzontale) do hanno un significato speciale. Questo è il motivo per cui non vedrai i backslash prima di quei caratteri nello snippet di test.

Nel tuo caso, non penso nemmeno che i backslash siano necessari. Sono semplicemente lì per tentare di aggirare qualsiasi corrispondenza basata su pattern che un motore di rilevamento potrebbe impiegare. Immagino che non ingannare troppi motori, perché è una tattica piuttosto comune e si distingue come un pollice dolente.

Per quanto riguarda come l'attacco funziona, quando un browser tenta di visitare un URL con un JavaScript schema (cioè un URL che inizia con javascript: ), interpreta tutto dopo di esso come codice JavaScript e lo esegue.

    
risposta data 06.07.2018 - 18:57
fonte

Leggi altre domande sui tag