¿Es posible XSS a través del atributo de estilo en los navegadores modernos?

7

Digamos que los usuarios pueden definir el contenido del atributo style , pero de forma restringida. No pueden salir de su valor, ya que el analizador de listas blancas eliminará los atributos / etiquetas no seguros producidos de esta manera.

¿Pueden hacer XSS usando solo el valor del atributo style en los navegadores modernos?
Con "modern" es IE10 + y las versiones más recientes de otros navegadores.

    
pregunta Andrey Shchekin 10.06.2014 - 13:19
fuente

2 respuestas

3

Lo he buscado en todas partes, pero creo que todos los navegadores modernos están a salvo de XSS en CSS. Aunque tuve una prueba en particular y se ejecutó en mi Chrome (y probablemente en otros navegadores)

Si la aplicación está ingenuamente inyectando cualquier entrada en <style>...</style> , este escenario interesante puede suceder:

<html>
<head>
<style>
p {
    text-align: center;
    color: red;
    /*user can inject here*/
    }</style><script>alert()</script>

}
</style>
</head>
<body>

<h1>My First Heading</h1>

<p>My first paragraph.</p>

</body>
</html>

...

O

p {
    /*injecting into bg's url*/
    background: url("garbage"}</style><script>alert()</script>/*) repeat;
    text-align: center;
    color: red;
} 

Obviamente ... un XSS

    
respondido por el AK_ 10.06.2014 - 19:42
fuente
2

Aunque hay trucos peligrosos como behavior: url('some.htc') no están disponibles en los navegadores modernos de forma predeterminada, si está utilizando X-UA-Compatible encabezado o meta etiqueta para forzar a Microsoft Internet Explorer en un modo de renderización diferente, o si está omitiendo la declaración de tipo de documento, Internet Explorer usará el comportamiento de versiones anteriores donde tales cosas estén disponibles.

Una demostración (nota: no puedo hacer que esto funcione en IE 11): enlace

    
respondido por el user2428118 11.06.2014 - 17:03
fuente

Lea otras preguntas en las etiquetas