¿Cómo es posible usar un tipo incorrecto y aún así obtener el archivo cargado por el usuario?
Si fuera el navegador quien lo cargaba, de hecho se manejaría como un GIF y fallaría, en general. (Hay problemas de rastreo de contenido en los navegadores web, pero no se pueden activar aquí).
Sin embargo, cuando crea una instancia de un applet con el atributo <applet src>
/ <object data>
apuntando hacia él, el complemento de Java carga la dirección como una clase de applet / jar, independientemente del Content-Type
con el que se sirve.
(Eso no es un buen comportamiento, pero es un síntoma del continuo malestar de MIME: los navegadores / complementos no quieren ser estrictos al requerir los tipos de medios correctos porque hay muchos servidores configurados incorrectamente, pero los UA son permisivos acerca de los tipos de medios significa que los administradores perezosos no tienen que configurar sus servidores correctamente ...)
Esto es especialmente pernicioso, dado que la versión bizarro de Java de la Política del mismo origen opera principalmente en la fuente de la clase / tarro en lugar de la página del documento que contiene - si puede colocar un archivo de applet en el servidor de alguien, hasta cierto punto puede , cross-site-script en él. Sin embargo, no parece que el ataque haya hecho ningún uso de esto, las explotaciones funcionan independientemente del origen.
A menudo es difícil detectar esto porque es (/ fue) posible crear un archivo políglota que sea un GIF y JAR válidos al mismo tiempo ("GIFAR"). Sin embargo, una vez más, esto no se ha hecho aquí. El atacante puede elegir cualquier nombre de archivo / tipo que le guste para un applet, y aparentemente pensaron que un GIF sería menos visible que un JAR.