Ataques CSRF mediante hotlinking

Autor: Armonth | El miércoles 18 de abril del 2007 @ 02:46.

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 es, aparte de un término que usa Alex (Buayacorp) junto a XSS cinco veces por cada párrafo, 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 aquí 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 su página cerrará la sesión y no podra entrar en su CMS para quitar la imagen "hotlinkeada". Es una táctica muy cabrona, tentado estoy de ponerla en uso.

Una solución para estos casos, una vez se "sufre" esa "broma de mal gusto" (o mejor: venganza) 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 quitar el hotlink, al menos en WordPress, aparecerá abajo la entrada previsualizada. Por lo que se volverá a cargar la imagen y te vuelve a meter en el "Dashboard". Es maquiavélico }:P

Aunque todo tiene solución, no por ello un coñazo: editar a mano la BBDD o usar Kill Preview.

Además, lo anterior es una broma pesada (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. Ya que en el ejemplo de Logadmin solamente usamos un script que ya está en tu servidor. Es decir: podemos usar lo que ya tiene el propio servidor. Así que en principio no es "demasiado" peligroso. Pero si además tu sitio es vulnerable a XSS podremos añadir a eso meter código de nuestra propia cosecha...

¿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 comparativamente ;)

Comentarios