Pull to refresh

Cross-Site Content Forgery в Facebook

Reading time2 min
Views716
Некие ребята нашли в Facebook интересную особенность. Когда пользователи добавляют на свою стену ссылку на фото, Facebook на фоне подтягивает это фото и добавляет уменьшенную копию рядом с постом. Но при этом они а) используют определенный User-Agent, и б) определенный домен, с которого идет запрос. Если использовать эту информацию, то можно выдать этому роботу JPEG, а всем остальным выдавать Location: www.domain.com/my_awful_script.php с любым функционалом. Google+, кстати, делает то же самое.



Вот тут все описано с примером скрипта:

www.blackhatacademy.org/security101/index.php?title=Facebook#Content_Forgery

Товарищи предлагают сделать

AddType x-httpd-php .jpg

+ AddHandler. Можно также включить mod_rewrite:

RewriteEngine On

RewriteRule .jpg$ serve.php

И имеем профит. На момент написания этого поста проблема еще не решена. Странно, что этим еще никто не воспользовался всерьез (а может уже и воспользовался).

Источник: slashdot.org.

UPD: Поправил ошибочный вывод про AddType.

Так же попросили рассказать, как этого можно избежать. Во-первых, это дело отлавливают по User-Agent — ну тут робот может притвориться какой-нибудь Оперой. А вот как обойти тот факт, что все такие запросы идут с определенных IP — я не знаю. Любой список IP будет конечным, кроме использования чего-то вроде TOR, но в масштабах проекта с посещаемостью, сравнимой с таковой у Facebook, такой сервис использовать вряд ли реально.

И еще — ответ на то, чем это отличается от просто миниатюры картинки со ссылкой, ведущей совсем не туда. В основном отличается тем, что народ знает про тот факт, что Facebook автоматически подтягивает миниатюры, и вероятность того, что кто-то впохыхах кликнет, куда выше. Вторая опасность для юзера в том, что в этот момент он гарантированно залогинен в FB, и таким образом оказывается в опасности кражи сессии, или тот же CSRF итп.
Tags:
Hubs:
Total votes 54: ↑43 and ↓11+32
Comments16

Articles