Gravatar de Armonth

Ataques CSRF mediante hotlinking

La idea se la leo a Logadmin que a su vez menciona a Gnucitizen y la “técnica” la ha nombrado bajo un suculento título: “Persistent CSRF and the hotlink hell”.

Un CSRF o Cross-site request forgery — aparte de un término que usa Alex de Buayacorp junto a XSS cinco veces por cada párrafo — es un ataque cruzado entre sitios que intenta aprovechar vulnerabilidades en un sitio para (normalmente) atrapar la cookie de un usuario del cual se sabe que está autentificado en otro sitio.

En el ejemplo de la Wikipedia, “Bob” mira un foro y en el mismo “Alice” (el atacante) publica una imagen con un enlace apuntando al banco de Bob y preparado para el ataque a realizar, si Bob mantiene la cookie/sesión activa al intentar acceder mediante su navegador a la imagen rellenara y enviara con su sesión/cookie lo que el atacante quiera al banco (ej: transferencia de dinero a otra cuenta).

El ataque se basa normalmente en algún tipo de XSS, el poder “inyectar” código (habitualmente javascript) y el saber que el usuario está identificado con el servicio.

En el ejemplo de Logadmin se usa el hotlinking como vector para “inyectar” código mediante URLs:

“A” roba (enlaza directamente) una imagen de “B” para usarla en su sitio pero consumiendo el ancho de banda de “B” — hasta ahí la clásica definición de hotlinking — pero “B” en lugar de cagarse en sus muertos o restringir el acceso decide redirigir la imagen al script de logout de “A” lo cual con htaccess y mod_rewrite es fácil.

Con ello cada vez que el sujeto “A” acceda a la página cerrará la sesión y no podra entrar en su CMS para quitar la imagen “hotlinkeada”. Una táctica muy cabrona, tentado estoy de ponerla en uso.

Una solución para esos casos (una vez “atacado” con esa “broma de mal gusto”) sería redirigir temporalmente el script de logout al de acceder (login) el cual normalmente te lleva al panel de administración.

Aunque lo gracioso (sí: me lo estoy imaginando y lo estoy disfrutando xD) es que a la que entras en la entrada para modificarla y quitar ese hotlinking es que, al menos en WordPress, aparece abajo la entrada previsualizada… por lo que el script te vuelve a echar del CMS… maquiavélico. Pero todo tiene solución (lastima): Kill Preview.

Además, lo anterior es una broma (literalmente) comparado con lo que se puede llegar a hacer si la página que es vulnerable a CSRF lo es también a XSS.

¿Lección del día? Usar hotlinking te expone a ataques CSRF y los BOFH de hoy en día tienen un sentido del humor muy ácido, House se queda en una broma en comparación ;)

3 Comentarios (feed)

  1. Gravatar de LA100RRA LA100RRA nos comenta:

    Juas! XD

    Está bastante buena la idea :D

    Miércoles, 18 de Abril/2007 @ 14:15

  2. Gravatar de g30rg3_x g30rg3_x nos comenta:

    Siento que te complicaste con la explicacion…
    Algo mas simple (y didactico) hubiera sido mas facil de entender que el trabalenguas que pusistes…, pero bueno en Logadmin se entiende mejor y mas rapido….

    Ahora con respecto al vector, esto se limita a solo imagenes y no hay de que alarmarse (no mucho, pero si estar concientizados) yo creo que hay tener una confianza mutua entre el sitio que “hot” linkeas a tu blog, si esa confianza no existe entonces es mejor ponerlo bajo tu propio mismo servidor, aunque bueno muchas personas solo “hot”linkean algunas otras piden permiso para hacer eso de ese recurso (o creo que al menos soy el unico XD -que aprendio su leccion una imagen de goatse, con una imagen que hotlinkee-)

    Saludos

    Jueves, 19 de Abril/2007 @ 2:10

  3. Gravatar de logadmin logadmin nos comenta:

    Armonth lo ha explicado muy bien y dando más datos, los hotlinks entre usuarios si son sin permiso expreso molestan. Pero tambien hay que pensar en los cientos de páginas proporcionando estos servicios y lo que podrían hacer con los usuarios.

    Jueves, 19 de Abril/2007 @ 10:22

Comentarios cerrados