¿Es posible hacer un xss con solo etiquetas html?

5

No estoy al tanto de todos los trucos xss ...

Durante la programación en Ruby on Rails, utiliza un método de desinfección para permitir solo ciertas etiquetas y hace Es mejor borrar todas las demás etiquetas y scripts

las etiquetas restantes son

    "small", "dfn", "sup", "sub", "pre", "blockquote", "ins", "ul", "var", "samp", "del",
 "h6", "h5", "h4", "h3", "h2", "h1", "span", "br", "hr", "em", "address", "img", "kbd",
 "tt", "a", "acronym", "abbr", "code", "p", "i", "b", "strong", "dd", "dt", "dl", "ol",
 "li", "div", "big", "cite"

¿Es posible crear un ataque XSS con una combinación de estas etiquetas?

    
pregunta Nick Ginanto 03.12.2012 - 17:10
fuente

4 respuestas

14

Sí. Es trivial.

<div onmouseover="alert(1)" style="position:fixed;left:0;top:0;width:9999px;height:9999px;"></div>

Sin embargo, es posible que desee guardar tu trabajo antes de intentarlo: la alerta puede aparecer repetidamente a medida que mueves el mouse por la pantalla.

Por supuesto, un mejor ataque implicaría destruir div tan pronto como se llame el JavaScript, para que se vea legítimo.

Debes escapar de todas las salidas para evitar esto.

    
respondido por el Polynomial 03.12.2012 - 17:16
fuente
14

Sí, casi todas las etiquetas HTML le permiten declarar un controlador de eventos. Algunos de estos eventos podrían activarse cuando la página se carga sin la interacción del usuario:

<img src=x onerror=alert(1) />

Las etiquetas de eventos no son la única forma de activar xss:

<a href=javascript:alert(1)>xss</a>

Una posible solución es establecer la Política de seguridad del contenido para esta página

X-Content-Security-Policy: unsafe-inline

Solo asegúrate de probar tu solución. No tomes la palabra de nadie. (También el CSP es nuevo)

Otra opción es HTMLPurifer de PHP , que es más avanzada que Ruby's Sanitize.

    
respondido por el rook 03.12.2012 - 17:37
fuente
2

Sí: <img onerror=alert(document.cookie) src=1 />

Los requisitos para el escape de salida varían según la ubicación en el documento. El texto que está destinado a estar en un atributo HTML debe escaparse de manera diferente ( '" ) que el texto que está en un elemento HTML ( <> ), por ejemplo. La API de seguridad empresarial OWASP (ESAPI) es una buena manera de manejar esto, ya que proporciona mecanismos de escape para Todos los diferentes contextos. La versión de Ruby se puede encontrar en Github .

    
respondido por el bonsaiviking 03.12.2012 - 17:42
fuente
2

Para obtener una buena 'hoja de trucos' que contiene varios ataques HTML XSS, consulte aquí: OWASP.org Se vuelven muy creativos. Vale la pena usar esa hoja para probar su sitio tal como está construido y para revisar cada vez que se actualiza esa lista.

Espero que ayude!

    
respondido por el NULLZ 10.01.2013 - 08:38
fuente

Lea otras preguntas en las etiquetas