Rompe el contexto de datos de JavaScript para realizar XSS cuando se reemplazan las barras invertidas y las comillas?

3

Supongamos que tengo esto en mi sitio:

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

Esto obviamente es vulnerable a XSS. Ahora supongamos que "limpio" los datos no seguros al reemplazar \ con \ y " con \" (en ese orden). ¿Sigo siendo vulnerable? ¿Qué carga útil podría usarse para escapar del contexto de datos de JavaScript y ejecutar el código?

    
pregunta Anders 28.01.2016 - 21:35
fuente

1 respuesta

4

¿Qué tal

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

?

El analizador JS encontrará el script de cierre, y asumirá que el código original tiene un formato incorrecto. El analizador de HTML verá abrir script e iniciará un nuevo bloque de script. El resto es solo para hacer que el resto del bloque sea ignorado.

Tenga en cuenta que no contiene ninguno de los caracteres de los que se está escapando, no debería verse afectado por su código de limpieza.

    
respondido por el Matthew 28.01.2016 - 21:49
fuente

Lea otras preguntas en las etiquetas