Hack: XSS oculto en imágenes

Esta mañana hemos estado probando una nueva forma de XSS: a través de código en imágenes maliciosas }:).

El XSS no es más que un tipo de ataque o agujero basado en la explotación de vulnerabilidades del sistema de validación de HTML incrustado (wikipedia dixit).

Espero que se entienda mejor con un pequeño taller de 5 minutos, ejemplo incluido.

Creación de la imagen

Vamos a crear una imagen .png válida, para ello debemos introducir en dicho archivo unos datos de cabecera que le indiquen al navegador que se trata de una imagen (extensión aparte).
$ echo -en "\\x89\\x50\\x4E\\x47\\x0D\\x0A\\x00\\x00\\x00\\x0DVILC\\x00\\x00\\x01\\x00\\x00\\x00\\x01" > image.png
Nota: Cuando hablo de "navegador" me refiero a Internet Explorer, aunque no sea demasiado adecuado. Este truco solo funciona en IE, los Navegadores de verdad -con mayúscula- están libres de pecado.

Código XSS

Una vez tenemos el archivo con las cabeceras adecuadas de un supuesto png agregamos el código poco ético:
$ echo -n "<html><body><script>alert('Ponga aqui su insulto');</script></body></html>" >> imagenxss.png
Y habremos completado el proceso de creación de una imagen con XSS oculto.

Comprobación

He subido esta imagen como comprobante. Solo funciona en Internet Explorer. Al visualizar la imagen debería salir un alert javascript con mensaje oculto.
Comprobación XSS

About the author

Óscar
has doubledaddy super powers, father of Hugo and Nico, husband of Marta, *nix user, Djangonaut and open source passionate.