День первый:
Обычный весенний вечер, обычного буднего дня. Придя домой с работы и, включив комп, я получил сообщение от друга, который просил проверить на наличие уязвимостей некий сервер, назовем его N. (На момент происходивших событий он-лайн сервера 950+)
Скачав патч, и запустив phx пытаюсь приконектиться. Но, увы, неудача… На сервере стоит новомодная защита, которая пропускает весь трафик через l2.bin (да-да-да, тут же мне скажут добавь его в строку в phx и т.д. и т.п., хpeнушки, господа! «это был не нескафе» (с), эта защита шифрует трафик и добавление ни к чему не приводит, способ подключится к такому серверу есть, но писать дешифратор нет никакого желания, да и смысла особого в этом не вижу, так как ключ у каждого сервера свой.)
Что же делать дальше? Так как я терпеть не могу бруты аккаунтов («никакого изящества, как молотом по наковальне»(с) История рыцаря), вывод пришел сам собой, надо искать уязвимости в web-составляющей сервера.
Памятуя о недавно описанном сплоите под IPB, первым делом я направился на форум, но и тут меня ждало разочарование, форум хоть и находился на IPB, но версия его была отлична от необходимой.
Оставался последний вариант – сайт. Потыкав по ссылкам и не найдя к чему придраться я натравил на него программку, которая ищет sql уязвимости, но результат был нулевой… Я уже был близок к тому, что бы бросить это дело и ложиться спать, но решил проверить кое что еще…
Поиск директорий! И вот тут меня ждало истинное удивление, на общий доступ была открыта директория, в которой хранились сессии пользователей… Причем вида: сессия – логин – хеш. Удивительное дело…
Но, время позднее, завтра на работу… Я набросал простенький скрипт, который выдергивал нужные мне данные и складывал в отдельный файл и лег спать…
День второй:
Осмотрев файл с данными, я обнаружил более 200 аккаунтов, и среди них акк админа

. Далее предстояло брутить хеш… Скачав сборку используемой web-обвязки я нашел алгоритм хеширования (хоть скачанная мною сборка была и старее используемой, но алгоритм не изменился

).
Код:
base64_encode(pack('H*', sha1(utf8_encode($pass))))
Опять таки, набросав простейший скриптик я привел все найденные хеши к чистому sha1, но, как известно, sha1, в отличие от base64 не обратим

и дальше предстояло брутить… Но что-то как-то было лениво

Меня посетила очередная догадка, зарегавшись на сайте и пройдя авторизацию я подменил свою сессию в Куках (спасибо разработчикам Оперы

) на сессию админа… Жмем F5 и.. О, Боги!!! Я админ

Далее все было элементарно, залитый шелл, полученный доступ к базе и возможность творить что угодно…
Мораль №1: По мере развития игровых проектов внутриигровая защита становится все серьезнее и серьезнее, если админы не жалеют на это денег, но всегда остается человеческий фактор, благодаря которому происходит огромное количество взломов, это раз, во-вторых, как говорилось в фильме «Западня»: «зачем грабить пентхауз, если почта внизу?» Не всегда целесообразно лезть на таран, наверняка есть небольшая дырка, через которую все делается легче и проще
Мораль №2: На zhyk.ru все больше и больше появляется тем, которые рассказывают о брутах, взломах, sql-иньекциях и прочем подобном, это уже не читерство, это хакерство, за которое грозит как минимум 272 статья УК РФ. В погоне за халявными благами игры мы зачастую переступаем грань между безобидными проделками (вроде нарисованного шмота или опыта) и настоящим преступлением, мелким, конечно, но от того не перестающего быть преступлением.
Одумайтесь, люди, оно Вам надо?
Р.S. о найденной уязвимости было рассказано администрации за обычную благодарность.