Esta página recibe información de una fuente que no es de confianza y la publica directamente en el navegador como HTML.
En este caso, la fuente no confiable es window.name
. Para el programador inexperto, esto puede parecer inofensivo, pero en realidad, se puede establecer en cualquier valor arbitrario, porque se deriva del nombre del marco:
<iframe
src="http://www.domxss.com/domxss/01_Basics/05_jquery_html.html?681973661#message"name="<script>alert(0)</script>"
></iframe>
En el código que has dado, hay otro agujero deslumbrante: el selector también se toma de una fuente no confiable (la URL), que permite a los atacantes mostrar el HTML en cualquier lugar que deseen. No es necesario que sea un marco, solo visite la siguiente URL:
http://www.domxss.com/domxss/01_Basics/05_jquery_html.html?681973661#whatever],body,[whatever
t
se establece en "whatever],body,[whatever"
(de location.hash
), y se usa para construir un selector jQuery ( "div[id="+t+"]"
). Juntos, dan como resultado un selector que selecciona (por ejemplo) el elemento <body>
:
"div[id=whatever],body,[whatever]"
Aunque no es tan dañino como window.name
, podría valer la pena arreglarlo.