explotando XSS en el selector jQuery

3

Mi analizador de código estático marca este fragmento de Javascript en el sitio web de mi cliente como un posible XSS basado en DOM:

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

¿El código está directamente en $(function(){ ... } , por lo que debe ejecutarse cada vez que se carga la página? (Confesión: Sé muy poco acerca de jQuery ...)

En Google, encontré que jQuery hizo más difícil explotar un código como este después de este artículo de 2011:

enlace

Pero aún son posibles los ataques, uno de los que aún funciona es enlace .

¿Mi cliente sigue siendo vulnerable? Creo que sí, pero no puedo encontrar un exploit porque no conozco a jQuery lo suficiente como para entender lo que está pasando.

Editar : dado que el valor transferido a $() siempre comienza con # , sospecho que esto bloquea cualquier vulnerabilidad de esto, y probarlo en la consola de Firefox y Chrome parece confirmarlo. pero todavía no estoy seguro de que no haya otra manera :)

    
pregunta Mark Koek 19.04.2016 - 12:11
fuente

1 respuesta

3

Si el cliente es vulnerable o no, depende de la versión de jQuery y de si también están cargando jQuery migrate. Construí este sitio de prueba hace un tiempo, donde pruebo diferentes versiones de jQuery contra dos de estos errores: enlace

Retire.js (herramienta gratuita de código abierto mantenida por mí) le dirá si las versiones de jQuery que tiene en ese sitio son vulnerables o no: enlace La versión de Chrome de Retire.js puede ser tu opción preferida.

    
respondido por el Erlend 20.04.2016 - 10:29
fuente

Lea otras preguntas en las etiquetas