ocultando javascript en la imagen

5

He leído una publicación en thehackernews y busqué en la red para encontrar cómo funcionó.

¿Cómo puede alguien agregar javascript en una imagen de manera que cuando se muestra la imagen puede ejecutar un script?

¿Se puede hacer esto con otros idiomas?

    
pregunta user38257 04.04.2014 - 18:33
fuente

3 respuestas

4

En el artículo al que has vinculado, el código Javascript no se incluye dentro del propio archivo de imagen, sino que se manifiesta dentro de la página HTML que hace referencia a la imagen. Se están devolviendo datos no confiables dentro de la etiqueta de la imagen sin suficiente validación o desinfección. Esto es secuencias de comandos persistentes entre sitios ya que la información maliciosa se devuelve cada vez que alguien ve la página que incluye esta imagen (es decir, probablemente esté almacenada en la base de datos como parte del perfil del usuario).

Convencionalmente, el marcado HTML para incluir una imagen de perfil podría tener este aspecto:

<img src="/imagename.jpg">

Sin embargo, tiene que ser diferente para cada usuario, por lo que el código de la aplicación que lo genera podría tener este aspecto (por ejemplo, PHP):

<img src="/<?=$imagename?>">

Entonces, si el usuario Alice cargó alicespic.jpg , los usuarios verán esa imagen cuando visiten su perfil, por ejemplo. Sin embargo, aquí es donde puede producirse la vulnerabilidad, si el nombre de la imagen no está correctamente validado o saneado.

Por ejemplo, si Mallory pudiera establecer el nombre de la imagen de su perfil en inncoent.jpg" onload="alert(1) , se generaría el siguiente marcado HTML:

 <img src="/inncoent.jpg" onload="alert(1)">

Utilizar el evento onload significa que el script arbitrario se ejecutará una vez que la imagen haya terminado de cargarse. Básicamente, este código Javascript se ejecutará cada vez que alguien vea el perfil afectado, pero se ejecutará dentro de su navegador.

Esto no ocurriría si el desarrollador solo permitiera que se incluyeran caracteres seguros dentro del nombre de la imagen.

    
respondido por el itscooper 04.04.2014 - 19:20
fuente
2

Hay dos formas de hacer esto, la primera es simplemente escribiendo un script en un archivo de texto y guardándolo como un jpg. Esto obviamente no es una imagen, pero funcionará. Si desea una imagen real, puede tomar su imagen y usar un editor hexadecimal para agregar su script a los metadatos de la imagen. Esto funciona porque los navegadores interpretan el código cuando intentan representar la imagen en el HTML.

    
respondido por el Kotzu 04.04.2014 - 18:59
fuente
1

Editar: la respuesta de itscooper es la interpretación correcta de la vulnerabilidad en el artículo de THN a la que se vincula la pregunta, en mi opinión. La respuesta a continuación es para la pregunta general de cómo ocultar js y hacer que se ejecute dentro de un objeto de imagen.

Históricamente, podrías XSS algunos navegadores insertando "javascript:" URL como fuentes de imagen, porque ejecutarían automáticamente el script ( enlace ). Sorprendentemente, este sigue siendo el caso en Firefox, aunque el javascript está en un espacio aislado y no tiene acceso a los objetos de la página. Aún así, se puede usar para cargas de páginas de DOS ejecutando un bucle sin terminar que congela el hilo principal. He reportado este error a Mozilla, pero aún no se ha solucionado: enlace .

    
respondido por el Yan Z 05.04.2014 - 23:29
fuente

Lea otras preguntas en las etiquetas