Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #92, АВГУСТ 2006 г.

Бажный провайдер – свободный интернет

Ls01r (ls01r@yahoo.com)

Хакер, номер #092, стр. 092-066-2


Вот они – баги

При заходе на mail.rol.ru я увидел сообщение: «Сервис работает в тестовом режиме. Приносим извинения за возможные неполадки». Неполадки? А вот это уже интересно. Первым делом я проверил систему авторизации. Но она была написана должным образом — и меня снова ждал облом. Тогда я залогинился и вошел в веб-интерфейс почтового сервиса. Вспомнив, что перед активными действиями хорошо бы узнать, к чему эти действия могут привести, я заглянул к себе в куки и обомлел... там лежали мои логин и пароль в открытом виде! Причем именно эти данные использовались для выхода в сеть. Разработчики системы не удосужились даже элементарно зашифровать пароль (например, md5 алгоритмом). Это обрадовало меня по двум причинам. Во-первых, для доступа в сеть и для доступа к мылу используются один и тот же логин/пасс. А во-вторых, если суметь каким-то образом похитить куки мыла, можно считать, что ты получаешь полное управление аккаунтом с доступом в личный кабинет. Собравшись с мыслями, я принял единственно верное решение: во что бы то ни стало найти уязвимость в почтовом сервисе. Но, как оказалось, сделать это было не так просто. Скрипты фильтровали все входящие данные, и изменение значений параметров ничего полезного не принесло. Я уже собирался уходить, когда заметил адресную книгу. Ничего особенного в ней не было, разве что не совсем обычная форма добавления контактов... точнее форма добавления необычных контактов:). Я думаю, ты понял, о чем идет речь. Поля «имя» и «email» не фильтровались — и мой код прекрасно выполнялся в браузере. Проблема заключалась в том, что все значения передавались методом post, следовательно, подсунуть юзеру «ядовитый» линк не представлялось возможным. При попытке передать значение внешним запросом скрипт ругнулся, выдав информацию:

A fatal error has occured:

Невозможно загрузить определение Turba_Driver_.

[line 44 of /sites/imp.rol.ru/horde/turba/lib/Driver.php]

Мне стало интересно, что это за скрипт Driver.php, находящийся к тому же в веб-директории. Но все мои попытки получить доступ к каталогу или скрипту из веба не увенчались успехом. Не хватало прав. Я задумался. Картина вырисовывалась следующая: есть куки с открытым пассом внутри, есть xss, но нет возможности сформировать линк для жертвы. Соответственно, проведение атаки становилось невозможным. Такой расклад меня явно не устраивал.

В запасе у меня оставался один непроверенный поддомен photo.rol.ru. Там располагался фотоальбом, куда каждый юзер мог закачать свои фотографии. Мои глаза медленно опустились вниз страницы, к строке «Powered by PhotoPost 4.7j». Как выяснилось, PhotoPost является платным движком, цена версии Pro – $120. Но все же мне удалось найти на него багтрак. Увы, в моем случае версия оказалась патченной. Выход был один – искать баги самому. Сперва мне захотелось поставить движок себе на локалхост и как следует разобраться в нем. Я зашел на официальный сайт фотоальбома и скардил себе Pro-версию. К сожалению, антифрод шопа просил подождать 1 бизнес-день для проверки вбитой мной информации. Так как ждать мне не хотелось, я вернулся на photo.rol.ru. Первым делом требовалось активировать свой аккаунт, после чего предлагалось придумать псевдоним автора, пароль оставался тот же, что и при подключении к сети. Это несколько обрадовало меня, но, посмотрев куки, я обнаружил, что пасс шифровался md5. Я залогинился и вошел внутрь. Здесь находилось меню для закачки фотографий, галерея, профиль, мастер альбомов, помощь, поиск, а также кнопка «Выход», которой я пока не собирался пользоваться. Я понимал, что пробовать закачивать файлы с левыми расширениями бесполезно, поэтому перешел сразу к профилю пользователя. Передо мной появилась страница с моими данными, я выбрал редактирование профиля и стал проверять поля на отсутствие фильтрации. Надо сказать, что я часто нахожу уязвимости, в том числе xss, на достаточно крупных ресурсах, но в тот момент, когда в окне моего браузера появилось окошко alert, я запомнил надолго. Мало того, что скрипт не фильтровал полученные данные из поля «Обо мне», так еще и выглядело все очень аккуратно — поле просто оставалось пустым. Таким образом, мне достаточно было указать в профиле в поле «Обо мне» вот такой скрипт:

Назад на стр. 092-066-1  Содержание  Вперед на стр. 092-066-3