Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #82, ОКТЯБРЬ 2005 г.

Сверлим чат MTV

F-22

Хакер, номер #082, стр. 082-076-1


(http://runtime-studio.nm.ru)

Получение административных привилегий в чате MTV

Из наших статей несложно уяснить: использование бесплатных web-скриптов чревато проблемами с безопасностью сайта. Может быть, поэтому серьезные организации предпочитают пойти к настоящим профессионалам и заказать качественный, а

главное, уникальный движок для своего проекта. Однако и это еще не гарантирует отсутствие сетевых проблем. Недавно вот мы нашли человека, который согласился рассказать о том, как он поломал популярный чат MTV, сделанный, к слову, перцами из actis.ru. Как видишь, баги есть не только в phpbb :).

[о чатах]

Вообще-то я терпеть не могу эти web-чаты, настоящий отстой. Но однажды так случилось, что мне пришлось зайти на чат MTV и он оказался наименее отвратительным из всех, что я видел. Во всяком случае, с технической стороны. Во многих аналогичных системах список ников, страница с сообщениями и все остальные динамические части просто тупо перегружаются каждые n секунд. Это все приводит к большому расходу трафика и, вообще, крайне нерационально. Интересно, так ли работает чат MTV? Сейчас узнаем. Открыв html-код страницы с чатом, я принялся изучать его, а также все документы, на которые он ссылался.

Первым делом в глаза бросился блок javascript, состоящий из нескольких вызовов функции addUser, каждая, как легко понять из названия, дописывала ник пользователя в общий список. Таким образом, для добавления нового пользователя нужно было всего лишь один раз вызвать эту функцию и передать ей соответствующие параметры, а не перегружать всю страницу целиком. Вызов функции осуществлялся из невидимого фрейма (у которого height="0") и выглядел следующим образом:

[так формируется список активных ников]

gt;

top.addUser('6e6a4778-b513-4bb2-98f8-781f7f4aef07', 'D`Avol', false);

top.addUser('bf577c30-38ff-45e8-b19d-07d35feca6d4', 'Inferno_777', false);

top.addUser('f66ac96f-1fd7-4681-94fe-8df429210cfb', 'jogurt_LP', false);

…

Как можно заметить, функция addUser принимала сразу три параметра: какой-то длинный идентификатор, ник и логическую переменную, которая могла принимать два значения: true или false. Так сходу разобраться, что и к чему в этом чате, не представлялось возможным, поэтому я общеизвестным способом сохранил себе на жесткий диск страницу с чатом и все клиентские скрипты, после чего принялся изучать структуру и работу чата.

[о чате в целом]

Чат Mtv состоит из четырех основных серверных aspx-приложений и трех js-файлов со скриптами. Что касается клиентских сценариев, нас будет интересовать только файл chat.js, где собраны все ключевые функции системы. В остальных сценариях производится проверка установленных на компьютере плагинов и возможностей браузера, нам это совершенно не интересно.

Что же касается серверных приложений, то здесь структура следующая:

1) Сценарий speech.aspx отвечает за отображение сообщений в чате

2) list.aspx отображает актуальный список ников

3) input.aspx отвечает за вход/выход пользователей, показывает форму аутентификации и осуществляет отправку сообщений

Содержание  Вперед на стр. 082-076-2