Взлом сервера Counter Strike 1.6


Взлом сервера Counter Strike 1.6

Наткнулся на интересную статью на Habrahabr про безопасность сервера CS 1.6. Подробнее под катом.

Администраторам серверов к прочтению обязательно!

Взлом сервера Counter Strike 1.6

Наткнулся на интересную статью на Habrahabr про безопасность сервера CS 1.6. Подробнее под катом.

Текст не мой, речь ведется от лица автора.

________________________________________________________________________________________

Добрый день.
В с появлением различных сервисов, предоставляющих услуги хостингов игровых серверов, появилось много желающих сделать свой сервер, при этом, в ряде случаев, вопросы безопасности остаются проигнорированными.
Пару месяцев назад, просматривая список серверов в поисках «где бы поиграть», я обнаружил сервер, в названии которого содержатся угрозы к тем, кто будет использовать читы.

 Первоначальный план созрел очень быстро:


Зайдя на сервер с администраторской учёткой и обнаружив, что у меня есть доступ к amx_rcon я уже было подумал, что получил доступ к учётке главного администратора, однако, всё прояснилось несколько позже.
Небольшое отступление по поводу прав доступа в Counter Strike
Есть права, которые предоставляются модулем AmxModX, они выставляются флагами (a-u), флаг z — обычный игрок.
Какой флаг за что отвечает, можно посмотреть здесь.
Администратор с флагом amx_kick, amx_ban, и т. д. и т. п., не может как-либо воздействовать на игрока, у которого стоит флаг иммунитета.
Также, есть доступ, предоставляемый RCON-паролем (Remote Console, насколько я понимаю). Думаю, здесь будет уместна аналогия с ssh-ключом. В общем, давать его всем подряд — не самая хорошая мысль.
Это, фактически, прямой доступ к к консоли сервера.
Команда amx_rcon несколько облегчает использования Rcon-a, но и имеет «обратную сторону медали». Администратор, имеющий доступ к этой команде имеет доступ и к amx_showrcon, с помощью которой можно узнать RCON-пароль. Отличаются они тем, что amx_rcon не выводит результат выполнения в консоль, а amx_showrcon — выводит.

 Код, отвечающий за amx_rcon выглядит так:

Прочитать то, что написал сервер у себя в консоли и вывести обратно игроку средствами AmxModX не представляется возможым.

Команда amx_showrcon фактически заменяет 2 стандартные команды, за которые отвечает движок, и для работы которых не нужны модули:

 Показать / Скрыть текст

 Показать / Скрыть текст

То есть, после использования этой команды, достаточно посмотреть, каким стало значение rcon_password, чтобы узнать RCON-пароль сервера.

 Узнав его можно:

Посмотрев командой amx_who какие права кому выданы… в общем, это была не учётка главного администратора. Они всем администраторам ставили все доступные флаги.
В качестве теста я решил кикнуть одного администратора, который громко ругался на сервере и мешал играть, написав в причине «помолчи». Об этом «инциденте» им тут же была создана тема в группе сервера, мол «меня кто-то кикает».
Главный администратор не придумал ничего лучшего, чем снять со всех администраторов доступ к amx_kick.
Так как подделать SteamID достаточно просто, я решил написать об этом главному администратору, который занимался выставлением прав доступа. В ответ получил «Раз ты такой умный, почему ты до сих пор не купил у нас админку?». (Действительно…)
В общем, после наглядной демонстрации возможности кикать администраторов, используя rcon, вместо того, чтобы как-то ограничить у администраторов доступ к amx_rcon он выдал мне бан по IP-адресу, «чтобы не лез, куда не надо».
Это так у нас теперь благодарят за найденную уязвимость.

Ну что же, пишем небольшой скрипт, который кикает всех игроков с сервера и закрывает сервер паролем. Весело, надёжно.
Опять таки, вместо того, чтобы убрать у админов доступ к Rcon-паролю, главный админ решил перевести их на доступ по комбинации ник- пароль
Про то, чтобы поменять RCON-пароль никто так и не подумал.

Часть вторая, получаем доступ к MySQL от AmxBans сервера

Сейчас стало модно держать отдельную веб-страничку со списком игроков, забаненных на сервере.
Этот список формируется из MySQL таблицы, данные в которую заносит плагин AmxBans.
Так же, AmxBans позволяет хранить информацию о админах не в файле users.ini, а в той же самой БД.
Данные для доступа к этой базе прописываются в кварах(CVar) сервера. Их можно прочитать командой rcon amxx cvars

Нас интересуют значения:

 Показать / Скрыть текст

В качестве способа общения с БД, я традиционно использую SQLYog
База принадлежала игровому хостингу и была настроена на доступ только с доверенных IP-адресов.
SQLYog может использовать HTTP-туннель для доступа к базе, для этого достаточно закинуть SQLyogTunnel.php на нужный ресурс и указать к нему путь.
Пришлось немного раскошелиться и купить на этом же хостинге сервер и страничку для AmxBans. На всё про всё- 200 рублей.

В базе данных AmxBans все пароли хранятся в виде MD5 хешей. Всего их там было около 50, при этом практически все были раскодированы с помощью сервиса по декодированию различных хешей так как состояли из 7-8 цифр без использования каких-либо буквенных символов.

Выставлением прав доступа прямым редактированием БД мало кто занимается, поэтому на веб-странице AmxBans можно залогиниться под администраторской учёткой и выставлять права через удобный веб-интерфейс.
Там было 3 администратора. Их пароли так же хранятся в виде MD5 хешей, но у одного был длинный и с виду надёжный пароль, но он состоял из часто встречаемых слов и года, у другого — дата рождения. Пароль третьего был расшифрован где-то через час.

Сообщать об этом администрации, я, разумеется, уже не буду, более того, когда я сообщил о уязвимости первый раз, мне было сказано, что из-за того, что я нашёл уязвимость и сообщил о ней администрации — «сам понимаешь доверие пропадает». (Ну да, действительно, надо было пользоваться и ни кому о ней не говорить :) )

 P.S


Комментарии:


Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Zombie-Mod.com — крупнейший игровой портал по Counter Strike