XSS dentro de la etiqueta de anclaje (a) sin interacción del usuario?

4

¿Es posible inyectar una carga útil dentro de la etiqueta <a> de manera que el script se ejecute sin la interacción del usuario?

La inyección está dentro del atributo href . Puedo inyectar los atributos onmouseover o onclick , pero se requiere la interacción del usuario.

El truco onfocus y autofocus no funciona en la etiqueta <a> (corríjame si me equivoco).

En mi caso, la página no se puede cargar en iframe, por lo que no puedo hacer trucos con iframes.

¿Conoces algunos otros trucos?

    
pregunta Gari BN 06.09.2017 - 17:47
fuente

2 respuestas

10

Puede forzar la interacción del usuario con CSS, haciendo que el elemento a sea un elemento de bloque de posición fija con un gran tamaño e índice z.

<a style="display: block; position: fixed; top: 0; left: 0; z-index: 99999; width: 9999px; height: 9999px;" onmouseover="alert('xss')">

    
respondido por el Polynomial 06.09.2017 - 18:26
fuente
2

Sí, eso es posible.

  

El truco onfocus y autofocus no funciona en la etiqueta (corríjame si me equivoco).

Correcto, el atributo autofocus no existe para las etiquetas <a> . Pero en su lugar, puede aprovechar los nombres de ancla para lograr el efecto de enfoque automático.

Por ejemplo, cree un documento con este enlace:

<a href="#" onfocus="alert('Gimme bounty!')" name="foo">Click me</a>

Ahora abre el documento como https://example.com/anchor.html#foo . El ancla #foo hará que el navegador enfoque automáticamente el elemento de enlace con el nombre foo y active la carga útil de JS.

(Esto me funciona en Google Chrome, pero no en Firefox).

    
respondido por el Arminius 06.09.2017 - 18:12
fuente

Lea otras preguntas en las etiquetas