che sfrutta XSS nel selettore jQuery

3

Il mio analizzatore di codice statico contrassegna questo pezzo di Javascript sul sito Web del mio cliente come un potenziale XSS basato su DOM:

var x = $('#' + window.location.hash.substr(1))
x.addClass('highlighted').find('div').show();

Il codice è direttamente in $(function(){ ... } , quindi deve essere eseguito ogni volta che viene caricata la pagina? (confessione: ne so troppo poco di jQuery ...)

Su Google, ho scoperto che jQuery ha reso più difficile l'utilizzo di codice come questo dopo questo articolo del 2011:

link

Ma gli attacchi sono ancora possibili, uno che funziona ancora è link .

Il mio cliente è ancora vulnerabile? Penso di sì, ma non riesco a inventare un exploit perché non conosco abbastanza bene jQuery per capire cosa sta succedendo.

Modifica - poiché il valore passato a $() inizia sempre con # Sospetto che questo blocchi qualsiasi exploit di questo, e provarlo sulla console di Firefox e Chrome sembra confermare questo - ma non sono ancora sicuro che non ci sia un altro modo:)

    
posta Mark Koek 19.04.2016 - 12:11
fonte

1 risposta

3

Indipendentemente dal fatto che il client sia vulnerabile dipende dalla versione di jQuery e dal fatto che stiano caricando o meno anche la migrazione di jQuery. Ho costruito questo sito di test qualche tempo fa, dove provo diverse versioni di jQuery contro due di questi bug: link

Retire.js (strumento open source gratuito gestito da me) ti dirà se le versioni di jQuery che hai su quel sito sono vulnerabili o meno: link La versione chrome di Retire.js potrebbe essere la scelta migliore.

    
risposta data 20.04.2016 - 10:29
fonte

Leggi altre domande sui tag