Вчера ближе к полуночи мы попытались украсить платформу цветами. В результате было создано 139 записей с заголовоком "День Цветов на Yvision!" текстом "Когда вы последний раз дарили или получали в подарок цветы?" и красивыми фотографиями цветов. Примерно 400-450 пользователям были разосланы сообщения с таким же текстом.
В результате, на главной страние можно было видеть 10 записей с красивыми цветами. Было красиво!
Как вы уже наверное догадались, сами пользователи эти записи не создавали и не голосовали за них. Они были созданы в результате одной из уязвимостей на платформе.
К моему глубочайшему сожалению, администрация удалила все эти записи с цветами, хотя пользователи, при желании, могли сделать это сами. Интересно также, что удалены были ни только эти записи но и все записи с обсуждениями, как кто то назвал, "цветочного бунта"!
Очень жаль!
Поэтому сейчас на платформе трудно заметить какие либо следы. Единственное что осталось это скачки в рейтинге некоторых пользователей:
Учитывая, что администрация уже в курсе использованых механизмов, в этом и следующем посте я решил поделиться с вами деталями.
Как и прежде были использованы следующие инструменты:
- Flash/Flex - для инъекции JavaScript кода
- JavaScript - собственно код создающий записи, рассылающий сообщения и голосующий за созданные записи
- Python + Twisted - код на сервере, координирующий действия скриптов
- MongoDB - база данных с пользователями yvision и текущей информацией
Вначале было достаточно создать только одну "инфицированную" запись. Если зарегистрированный пользователь открывал такую страницу, от его имени создавалась новая инфицированная запись, рассылалось сообщение 5ти другим пользователям, и добавлялся плюс другим 5ти инфицированным записям. Далее оригинальная запись была удалена, так как записи распространялись сами по себе и постепенно выползли на главную страницу. То есть, было создано что то вроде Worm/Virus.
Весь фокус в том, что у Flash есть возможность вызывать JavaScript на странице где расположен сам Flash. Есть опция выключающая такую возможность, которую и забыли выключить. Речь идёт о "allowScriptAccess" аттрибуте в теге "embed".
В следующем посте я выложу сам код с пояснениями (если это кому то интересно?)