open core »

Correr javascript no IE a partir de uma imagem

No Internet Explorer, desde o 6 até ao actual 8, é possível correr código javascript ou html através de uma imagem especialmente criada com esse propósito.

Desde o tempos do IE 6 que a Microsoft sabe deste problema, mas nunca o chegou a corrigir por considerar uma "feature" e não um bug.

Aqui fica um exemplo de como é fácil explorar esta "feature". Este exemplo não funciona no Firefox, nem Opera.

Primeiro temos de criar uma imagem. A maneira mais fácil será recorrer ao photoshop. Cria-se uma imagem qualquer e depois em File -> File info acedemos ao campo Copyright notice, onde lá colocamos o código javascript (talvez um iframe para ir buscar um trojan, who knows). Para simplificar a demonstração vamos apenas colocar o código:

<script>alert('Teste!');</script>

Outra maneira, mais rápida é colocar um header de imagem num editor de texto normal, bastando para isso colocar o seguinte no editor:

%137%74%80%71%13%10%26%10%00%00%00%13%00%00%00%01%00%00%00%01<script>alert('Teste!');</script>

Agora é só gravar o ficheiro com a extensão .jpg e abrir o ficheiro com o Internet Explorer.

Aqui fica um ficheiro com este exemplo para testarem.

Update: Ao que parece a Google suspendeu o site onde alojei a imagem de teste devido a esta violar as condições. Um bom sinal de que a Google trabalha de modo a dar alguma segurança aos seus serviços. Não me vou dar ao trabalho de realojar a imagem, poderão seguir as instruções acima para recriar a mesma e testarem. No entanto é de notar que esta terá de estar alojada online para resultar. Não pode ser aberta localmente.

Update 2: Mais sobre o assunto aqui e aqui.