¿Qué ataques XSS no derrota la "Protección reflectiva XSS"?

4

Ha pasado bastante tiempo desde que he jugado con las vulnerabilidades de secuencias de comandos entre sitios, pero hoy me encontré con un sitio web que pedía una vulnerabilidad básica de XSS.

Así que obedientemente escribí:

http://example.com?query=<script>alert('hey!')</script>

Y quedé bastante sorprendido cuando yo no me encontré con un cuadro de alerta que mostraba el mensaje '¡hey!'.

Verifiqué la fuente y pude ver que el código se estaba inyectando claramente y cuando probé algo más simple como:

http://example.com?query=<h1>hey!</h1>

Se inyectó el HTML como se esperaba.

Esto es cuando revisé mi registro de errores y vi este mensaje (en Chrome):

  

Se negó a ejecutar un script de JavaScript. Código fuente del script encontrado dentro de la solicitud

Después de un poco de investigación, descubrí que esta es una característica llamada " Protección reflectiva XSS "que se introdujo en webkit. Si el código se ve tanto en la consulta como en el cuerpo, no se ejecutará.

Entonces, mi pregunta: cuando he jugado con los scripts entre sitios en el pasado, es básicamente como lo he hecho. ¿Esto elimina efectivamente una gran cantidad de ataques XSS o solo los primitivos?

    
pregunta Andy Smith 16.11.2012 - 14:02
fuente

4 respuestas

4

Hay tres tipos principales de XSS:

  • XSS reflejado
  • XSS almacenado (también conocido como XSS persistente)
  • XSS basado en Dom (también conocido como XSS del lado del cliente)

La protección reflectiva XSS solo protege contra la primera, pero no protege contra XSS almacenados o XSS basados en Dom.

Además, la protección reflectiva XSS a menudo se puede omitir. No protege contra todos los ataques XSS reflejados. Es una mitigación, no una defensa fuerte. Por lo tanto, no debe confiar en él por seguridad: aún necesita corregir todas las vulnerabilidades XSS que encuentre.

    
respondido por el D.W. 16.11.2012 - 20:32
fuente
3

enlace Son maneras seguras de omitir el filtro. (Tomado del sitio del blog).

Siempre hay formas de ofuscar el código: echa un vistazo a enlace para obtener una larga lista de posibilidades de evasión.

    
respondido por el user857990 16.11.2012 - 16:56
fuente
1

En primer lugar, no está implementado en todos los navegadores, por lo que solo algunos usuarios estarán protegidos contra algunos ataques XSS. Seguro que a medida que pase el tiempo, más proveedores adoptarán dicha estrategia, pero habrá muchos usuarios que usarán software obsoleto (y este es el tipo de vulnerabilidad que busca un atacante).

Además, incluso en el artículo del blog se indica that :

  

Somos conscientes de algunas formas de omitir el filtro,

y seguro que la gente encontrará más posibilidades. Como se indica en el blog, puede lidiar con muchos tipos de ataques XSS, no solo con ataques primitivos.

Por lo tanto, en mi opinión, solo obligará a los atacantes reales a experimentar más con XSS y dificultar el aprendizaje de los niños con guiones

Pensándolo un poco más, quiero añadir que, en mi opinión, esto también puede causar daño. Míralo desde esta perspectiva: algunos desarrolladores pueden caer en una conclusión errónea de que si un navegador ya está preparado para la prevención XSS, ¿por qué debería molestarme en hacer algo? Los desarrolladores normales pueden llegar a ser menos conscientes de XSS y cuando alguien encuentre una manera de bloquear esta función en el navegador, surgirán los problemas.

P.S gracias por un post interesante

    
respondido por el Salvador Dali 16.11.2012 - 14:46
fuente
1

Además de los posibles desvíos de la protección como se menciona en las otras respuestas, la sección obvia es donde el vector XSS no se devuelve de inmediato en la misma ventana del navegador, que incluye la mayoría de las vulnerabilidades de XSS almacenadas.

Por ejemplo, cuando un usuario ingresa un vector XSS (por ejemplo, un cuadro de comentarios) y luego se muestra en una interfaz administrativa, el navegador del administrador no tendría una forma efectiva de saber que el script provino de un usuario en lugar de ser parte de la funcionalidad del sitio.

    
respondido por el Rоry McCune 16.11.2012 - 20:23
fuente

Lea otras preguntas en las etiquetas