¿Cómo analiza el navegador los caracteres de escape en Javascript (XSS)?

0

Soy nuevo en los ataques XSS. Recientemente, estaba haciendo un proyecto y descubrí que uno de mis campos de entrada ( sitio web ) es vulnerable a ataque XSS . El valor en el campo del sitio web se inserta en un href de una etiqueta anchor que causa el ataque XSS.

Para verificar las diversas formas en que se puede realizar el ataque XSS, recomendé un documento de Github donde encontré el siguiente código,

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

Cuando el código anterior se inserta en el campo de entrada, la etiqueta de ancla se convierte en la siguiente:

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

Al hacer clic en el enlace anterior, aparece un cuadro de alerta que muestra 1

¿Cómo analiza y ejecuta el código anterior el navegador cuando el usuario hace clic en él? He leído sobre secuencias de escape, pero los caracteres de escape anteriores me ponen en un dilema.

    
pregunta Panther Coder 06.07.2018 - 08:30
fuente

1 respuesta

2

Como @Jacco mencionó en su comentario, el fragmento de prueba que usaste utiliza secuencias de escape .
En esta situación, la barra diagonal inversa ( \ ) es el carácter de escape. Cuando se encuentra una barra invertida, significa que "el siguiente carácter puede tener un significado especial, si lo tiene, use ese significado especial en su lugar".
Sin embargo, no todas las secuencias de escape de barra invertida son válidas. En esos casos, el siguiente carácter se usa como está. Por ejemplo, \j no tiene un significado especial, por lo que se interpreta como un simple j en su lugar. Sin embargo, \n (líneas nuevas), \r (retorno de carro), \v (pestaña vertical) y \t (pestaña horizontal) do tienen un significado especial. Esta es la razón por la que no verá barras invertidas antes de esos caracteres en su fragmento de prueba.

En su caso, ni siquiera creo que las barras invertidas sean necesarias. Simplemente están ahí para intentar sortear cualquier coincidencia basada en patrones que pueda emplear un motor de detección. Sin embargo, me imagino que no engañaría a muchos motores, ya que es una táctica bastante común y se destaca como un pulgar adolorido.

En cuanto a cómo funciona el ataque, cuando un navegador intenta visitar una URL con un JavaScript esquema (es decir, una URL que comienza con javascript: ), interpreta todo lo que sigue como código JavaScript y lo ejecuta.

    
respondido por el Mr. Llama 06.07.2018 - 18:57
fuente

Lea otras preguntas en las etiquetas