Omita el filtrado de comillas simples para XSS en el campo de entrada

1

¿Existe una forma posible de escribir una carga útil que pueda omitir el filtrado de ' , " , < y > ? Por lo que sé, es javascript:alert() ya que no utiliza ninguno de los anteriores. Entonces, ¿debería funcionar si lo uso en un campo de entrada donde se filtran todos los caracteres mencionados anteriormente?

Tengo un campo como este:

<input type="text" name="name" value=''></input>

Ahora tengo que cerrar la cotización en value y colocar mi cadena (por ejemplo, ' onload=javascript:alert() ), pero esa comilla simple no aparece en la fuente de mi recurso.

    
pregunta user144140 06.04.2017 - 22:33
fuente

2 respuestas

4

No, XSS no puede funcionar aquí sin una sola cita.

En javascript:alert() , la primera parte es el protocolo javascript. Debe estar en un contexto de URL para que funcione (por ejemplo, dentro de un atributo href ). También funcionará, pero no será necesario, en un atributo de evento (por ejemplo, onload ).

Para realizar XSS en su contexto, debe poder salir del contexto de cadena del atributo de valor. Para hacer esto, necesitas comillas simples. Si se filtran correctamente, no hay XSS aquí.

(Hay un ligero cambio en el hecho de que el filtro no funciona correctamente; por ejemplo, el filtrado puede realizarse primero, después de lo cual la entrada se maneja aún más, por ejemplo, se descodifica de algún formato, lo que podría permitirle omitir el filtro, pero si no puede omitir el filtro e inyectar una sola cita, no puede realizar XSS).

    
respondido por el tim 07.04.2017 - 08:35
fuente
0

La respuesta anterior a esta pregunta, que yo sepa, es incorrecta. Puede omitir comillas simples mediante el uso de funciones que no den como resultado valores de retorno nulos.

Por ejemplo

<img src=javascript:eval(alert(new Data.now()))>

Esto provocaría una alerta XSS sin comillas.

    
respondido por el Dimi Tree 18.05.2018 - 14:46
fuente

Lea otras preguntas en las etiquetas