¿Usar URI de datos para realizar XSS en etiquetas de anclaje - vulnerabilidad? [duplicar]

2

He estado analizando algunos problemas relacionados con XSS. Al hacerlo, me he topado con algunas listas de comprobación de tipo "Evasión del filtro XSS" que demuestran el supuesto XSS a través de los URI de datos. Por ejemplo:

Es obvio que hacer clic en un enlace (como el que se muestra a continuación) provocaría que aparezca una alerta en el navegador.

<a href="data:text/html;base64,PHNjcmlwdD5hbGVydCgiSGVsbG8iKTs8L3NjcmlwdD4=">test</a>

Sin embargo, este código (por lo que puedo decir) no se ejecutará en el mismo origen que la página que contiene la etiqueta de ancla.

¿Por qué la gente llama a esto un vector XSS? ¿Hay algo que me esté perdiendo que haga que esto sea un problema?

    
pregunta Julio 21.07.2017 - 09:10
fuente

1 respuesta

1
  

Sin embargo, este código (por lo que puedo decir) no se ejecutará en el mismo origen que la página que contiene la etiqueta de ancla.

A partir de julio de 2017, eso es cierto para Google Chrome pero no para Mozilla Firefox (y posiblemente para otros navegadores que no estén basados en WebKit). Sin embargo, Mozilla está trabajando actualmente para cambiar ese comportamiento.

Por lo tanto, un clic en este enlace en Firefox alertará al dominio actual, lo que lo convierte en una vulnerabilidad XSS de impacto total:

<a href="data:text/html,<script>alert(document.domain)</script>">click</a>

Estoy citando a un desarrollador de este informe de error :

  

En los datos de Firefox: los URI heredan el contexto de seguridad de la página desde la que se abren, al igual que javascript: URI. Esto incluye el acceso a las cookies. Este es un aspecto bien conocido de cómo manejamos los datos: URI. Hasta hace relativamente poco, las especificaciones HTML se alineaban con lo que hicimos. Esto cambió, y ahora estamos trabajando lentamente para cambiar este comportamiento (pero ese cambio es fundamental y no ocurre de la noche a la mañana).

Pero incluso sin un origen heredado, debe evitar permitir URI de datos proporcionados por el usuario donde la aplicación espera un enlace web normal, como se explica en este hilo .

    
respondido por el Arminius 21.07.2017 - 12:52
fuente

Lea otras preguntas en las etiquetas