Сверлим чат MTV F-22 Хакер, номер #082, стр. 082-076-1 Получение административных привилегий в чате MTV Из наших статей несложно уяснить: использование бесплатных web-скриптов чревато проблемами с безопасностью сайта. Может быть, поэтому серьезные организации предпочитают пойти к настоящим профессионалам и заказать качественный, а главное, уникальный движок для своего проекта. Однако и это еще не гарантирует отсутствие сетевых проблем. Недавно вот мы нашли человека, который согласился рассказать о том, как он поломал популярный чат MTV, сделанный, к слову, перцами из actis.ru. Как видишь, баги есть не только в phpbb :). [о чатах] Вообще-то я терпеть не могу эти web-чаты, настоящий отстой. Но однажды так случилось, что мне пришлось зайти на чат MTV и он оказался наименее отвратительным из всех, что я видел. Во всяком случае, с технической стороны. Во многих аналогичных системах список ников, страница с сообщениями и все остальные динамические части просто тупо перегружаются каждые n секунд. Это все приводит к большому расходу трафика и, вообще, крайне нерационально. Интересно, так ли работает чат MTV? Сейчас узнаем. Открыв html-код страницы с чатом, я принялся изучать его, а также все документы, на которые он ссылался. Первым делом в глаза бросился блок javascript, состоящий из нескольких вызовов функции addUser, каждая, как легко понять из названия, дописывала ник пользователя в общий список. Таким образом, для добавления нового пользователя нужно было всего лишь один раз вызвать эту функцию и передать ей соответствующие параметры, а не перегружать всю страницу целиком. Вызов функции осуществлялся из невидимого фрейма (у которого height="0") и выглядел следующим образом: [так формируется список активных ников] 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 отвечает за вход/выход пользователей, показывает форму аутентификации и осуществляет отправку сообщений |