Carga útil XSS sin - & "= ()

0

¿Es posible construir una carga útil XSS sin el uso de estos caracteres - & < > "= ()? El servidor no realiza ninguna codificación de salida.

Considere los dos casos en que la entrada del usuario se está colocando en 1. valor de atributo, 2. cuerpo de HTML.

    
pregunta Arka 08.11.2017 - 07:44
fuente

2 respuestas

3

@Arminio lo cubrió bastante bien. Pero hay excepciones dependiendo del atributo HTML. Aquí hay solo dos ejemplos (existen otros, en su mayoría relacionados con las URL, pero onX y algunos otros atributos también son casos especiales; además, con el uso de marcos JS también se pueden usar gadgets de script ).

atributo href:

// user-supplied link:
<a href="[user_input]">click</a>

ataque:

javascript:alert'1'

meta atributo:

// user-supplied link for redirect:
<meta http-equiv="refresh" content="0;url=[user_input]">

ataque:

data:text/html;base64,PHNjcmlwdD5hbGVydCgndGVzdDMnKTwvc2NyaXB0Pg
    
respondido por el tim 08.11.2017 - 12:03
fuente
3

En general, no. Al menos no sin condiciones previas (algunas de las cuales @tim se ha alineado ), porque:

  • Solo puede escapar a partir de un valor de atributo introduciendo la cotización correspondiente . (Supongo que se refiere a un atributo de doble comilla, por lo que una carga útil sin " no lo lleva más allá del valor del atributo. Obviamente, podría escapar de un atributo de comilla simple porque ' no está en la lista negra , o de uno sin comillas usando un espacio.)

  • En el estado de datos (fuera de cualquier etiqueta) solo puede lograr XSS introduciendo nuevas etiquetas. Todo lo demás es tratado como datos. Por lo tanto, si < está en la lista negra, no tendrá suerte.

respondido por el Arminius 08.11.2017 - 10:12
fuente

Lea otras preguntas en las etiquetas