Skip to: [ home ] [ search ] [ menus ] [ content ] [ mostrar/esconder menu de contenido ]


01010010011000010110010001101001011011110101001001100101011000100110010101101100011001000110010100100001

IXSS: XSS thru Image.

ixss-xss-thru-image

Siguiendo con este maravilloso ataque que es el Cross-Site Scripting, si alguien esta siguiendo mi blog se darían cuenta que estoy enfatizando todos los post hacia esta técnica porque es una de las mas peligrosas en el momento, claro que no tan potente como SQL Injection o CSRF, pero es impresionante cuantas se pueden encontrar en casi cualquier pagina lo que hace a la ingeniería social mucho mas fácil de llevar acabo. Este es uno de los temas que vengo posponiendo por diferentes motivos, que van desde testeo a proyectos.. Pero aquí estamos, entonces les presento una nueva técnica (por ahora) que si bien es un XSS solo afecta (por ahora XD) a plataformas MSIE 6, y quizas 7.

Una de las razones por las que le preste mucha atencion a esta técnica es por su alto grado de invisibilidad. ¿A que me refiero con esto? Bueno, sabiendo que Microsoft Windows es el OS mas usado podemos adivinar, pero no siempre acertar, que la víctima usa el IE por defecto. Y otro punto, quizás el mas “oportunista”, es el siguiente: ¿Quien dudaría de una imagen? Nadie, es por eso que me tomo por sorpresa esto.

Empezamos? Lo que tenemos que hacer es crear un archivo, que puede tener un nombre que escojamos siempre y cuando tenga la extención del tipo de imagen que vamos a usar (en mi caso *.gif). Lo abrimos con el editor de textos que nos guste (en linux puede ser gedit y en windows notepad..) y escribimos:

%137%71%73%70%13%10%26%10%00%00%00%13%00 %00%00%01%00%00%00%01<script>alert(’XSS alert by C1c4Tr1Z’)</script>

Se estarán preguntando que son los números con los signos de porcentaje antes del <script> que lanza la alerta, esa es la cabecera de la “imagen” GIF pero en URL decimal. Para ver el header de una imagen simplemente debemos verlo atraves de un editor hexadecimal o algún programa que nos devuelva los valores en hex. La primera linea del dump seria algo asi (yo utilize el comando hexdump -C imgaen.gif):

00000000 47 49 46 38 39 61 c8 00 f2 00 f7 00 00 00 00 00 |GIF89a……….|

Y ya tendríamos el header de la imagen:

GIF = ASCII(GIF) - HEX(%47%49%46) - DEC(%71%73%70)

Algunos otros pueden ser:

BMP= ASCII(BM)-HEX(%42%4D)-DEC(%66%77)
PNG=ASCII(PNG)-HEX(%50%4E%47)-DEC(%80%78%71)

*JPG=ASCII(ÿØÿà�JFIF�)-HEX(%FF%D8%FF%E0%00%10 %4A%46%49%46%00)-DEC(%255%216%255%224%38%35 %54%53%53%51%51%59%16%74%70%73%70%38%35%54 %53%53%51%51%59)

*No estoy el %100 seguro de que este correcto. Algunos lo toman como JPG al la cabezera, en ASCII,de estos tipos de archivos, pero segun el dump en hex me indica ese valor..

Volviendo a lo nuestro, guardamos y lo subimos a algún host nuestro o que permita subir imágenes (como vamos a ver en un instante). Nos tendría que dar un resultado como el siguiente (IE 7):

Pero en otros browsers (mas seguros!) como Mozilla Firefox, Opera y Safari, esto no sucede.

Firefox:

2 Comments to “IXSS: XSS thru Image.”

  (RSS feed for these comments)

Si, en algo tenes razón, la técnica no es nueva, yo la presente como “nueva” por el uso que se le esta dando últimamente y porque cada vez se presentan nuevos host que permiten alojar imágenes sin checkear su contenido o validarlas. Pero lo que vos presentaste es diferente a lo que yo hablo en este post, en lo único en lo que se asimila es en el comportamiento de IE al tomar la imagen JPG, que aunque no lo checkee, las reconoce como HTML a diferencia de Firefox que actúa correctamente..
Al mismo tiempo se puede usar otro lenguaje que sea reconocido por el servidor, pero ese es otro tema para después ;)..

Saludos!

C1c4Tr1Z said this on March 30th, 2008 at 7:00 pm

Es buena tenica, pero no es nueva, tiene varios meses (diria años pero bueno no se sabe bien cuando se dio a conocer…). Por otro lado si queres te podes fijar en http://logickey.wordpress.com/, una ezine de la cual participe y maneje hace unos meses, en la cual escribi un articulo que se titula: Vulnerabilidad en WordPress, que tiene q ver sobre esta tecnica, no solo se puede insertar Javascript, sino todo lenguaje del lado del cliente…

Saludos

InyeXion said this on March 30th, 2008 at 4:15 pm