всем привет. играл позавчера с этим юзером в контру он мне показал одну фишку с правом доступа к командам админа и я по этому поводу нашел статью и решил её выложить сюда!
в общем, начнем.
Администратор с флагом amx_kick, amx_ban, и т. д. и т. п., не может как-либо воздействовать на игрока, у которого стоит какой то флаг
Цитата:
Access Flag Purpose
a immunity (can't be kicked/baned/slayed/slaped and affected by other commmands)
b reservation (can join on reserved slots)
c amx_kick command
d amx_ban and amx_unban commands
e amx_slay and amx_slap commands
f amx_map command
g amx_cvar command (not all cvars will be available)
h amx_cfg command
i amx_chat and other chat commands
j amx_vote and other vote commands
k access to sv_password cvar (by amx_cvar command)
l access to amx_rcon command and rcon_password cvar (by amx_cvar command)
m custom level A (for additional plugins)
n custom level B
o custom level C
p custom level D
q custom level E
r custom level F
s custom level G
t custom level H
u menu access
z user (no admin)
Команда amx_rcon несколько облегчает использования Rcon-a, но и имеет «обратную сторону медали». Администратор, имеющий доступ к этой команде имеет доступ и к amx_showrcon, с помощью которой можно узнать RCON-пароль. Отличаются они тем, что amx_rcon не выводит результат выполнения в консоль, а amx_showrcon — выводит.
Код, отвечающий за amx_rcon выглядит так:
Код:
public cmdRcon(id, level, cid)
{//в id хранится идентификатор того, кто эту команду использует. Остальные атрибуты нужны для проверки прав доступа.
if (!cmd_access(id, level, cid, 2))
return PLUGIN_HANDLED//Если нет доступа, прекращаем выполнение команды.
new arg[128], authid[32], name[32]
read_args(arg, 127)
get_user_authid(id, authid, 31)//Получаем SteamID использующего эту команду.
get_user_name(id, name, 31)//Получаем его имя.
log_amx("Cmd: ^"%s<%d><%s><>^" server console (cmdline ^"%s^")", name, get_user_userid(id), authid, arg)//Записываем в лог, что он произвёл какое-то действие с RCON-ом.
console_print(id, "[AMXX] %L", id, "COM_SENT_SERVER", arg)//Пишем в консоль того, кто эту команду использовал, что-то вроде "команда отправлена на сервер".
server_cmd("%s", arg)//Выполняем команду в консоли сервера.
return PLUGIN_HANDLED
}
Прочитать то, что написал сервер у себя в консоли и вывести обратно игроку средствами AmxModX не представляется возможым.
Команда amx_showrcon фактически заменяет 2 стандартные команды, за которые отвечает движок, и для работы которых не нужны модули:
rcon_password _пароль_
rcon _команда_
Код:
public cmdShowRcon(id, level, cid)
{
if (!cmd_access(id, level, cid, 2))
return PLUGIN_HANDLED
new password[64]
get_pcvar_string(rcon_password, password, 63)//получаем значение CVar "rcon_password"
if (!password[0])
{
cmdRcon(id, level, cid) // Если RCON-пароль на сервере не установлен, выполняем обычный amx_rcon
}
else
{
new args[128]
read_args(args, 127) //считываем аргументы команды
client_cmd(id, "rcon_password %s", password)//устанавливаем нужное значение rcon_password администратору
client_cmd(id, "rcon %s", args)//выполняем команду из консоли администратора.
}
return PLUGIN_HANDLED
}
То есть, после использования этой команды, достаточно посмотреть, каким стало значение rcon_password, чтобы узнать RCON-пароль сервера. Узнав его можно:
1. Изменять настройки сервера (Поставь гравитацию 10000000, говорили они, это весело, говорили они)
2. Переименовать сервер.
3. Кикать игроков, даже тех, у которых есть иммунитет (rcon kick #userid).
4. Менять карту на своё усмотрение (rcon changelevel _mapname_)
5. Менять результат голосования за следующую карту (rcon amx_nextmap _mapname_)
6. Банить от имени сервера
… короче, творить всяческие безобразия.
Посмотрев командой amx_who какие права кому выданы… в общем, это была не учётка главного администратора. Они всем администраторам ставили все доступные флаги.
В качестве теста я решил кикнуть одного администратора, который громко ругался на сервере и мешал играть, написав в причине «помолчи». Об этом «инциденте» им тут же была создана тема в группе сервера, мол «меня кто-то кикает».
Главный администратор не придумал ничего лучшего, чем снять со всех администраторов доступ к amx_kick.
Так как подделать SteamID достаточно просто, я решил написать об этом главному администратору, который занимался выставлением прав доступа. В ответ получил «Раз ты такой умный, почему ты до сих пор не купил у нас админку?». (Действительно...)
В общем, после наглядной демонстрации возможности кикать администраторов, используя rcon, вместо того, чтобы как-то ограничить у администраторов доступ к amx_rcon он выдал мне бан по IP-адресу, «чтобы не лез, куда не надо».
Это так у нас теперь благодарят за найденную уязвимость.
Ну чтож, пишем небольшой скрипт, который кикает всех игроков с сервера и закрывает сервер паролем. Весело, надёжно.
Опять таки, вместо того, чтобы убрать у админов доступ к Rcon-паролю, главный админ решил перевести их на доступ по комбинации ник- пароль
Про то, чтобы поменять RCON-пароль никто так и не подумал.
что бы был amx_rcon делайте себе стим админа. любым способов. гуглите или яндексите
Про сам алгоритм генерации SteamID у RevEmu можно почитать в исходниках Dproto. У первых версий они были открытыми.
Там вся сложность заключается в том, что так или иначе нужно подбирать строку, которая даст нужный хеш.
Хеш считается по такому вот алгоритму и должен быть равен желаемому SteamID.
Код:
unsigned int CRevSteamID::revHash(const char* Str)
{
int i;
unsigned int Hash;
int CurChar;
i = 0;
Hash = 0x4E67C6A7;
CurChar = Str[i++];
while (CurChar)
{
Hash ^= (Hash >> 2) + CurChar + 32 * Hash;
CurChar = Str[i++];
}
return Hash;
}
Пока варианта лучше, чем банальный брутфорс я не придумал.
И да, таким методом можно сгенерировать только SteamID вида STEAM_0:0:XXXXXXX…
STEAM_0:1:XXXXXXX -генерации таким методом не поддаётся.
GoshaRodionov, Это основной способ монетизации CS серверов. Выглядит как чистосердечное признание.
no-steam игроки себя уже наказали, зачем еще и ломать их сервер?
c.r.a.t.o.s., если так рассуждать, зачем хакеры что-то взламывают? Наверное потому что некоторым нравится потролить школьников, у взрослых людей есть лицензия. А подразнить админа-школьника весело
либо я не понял или скажите как сгенерировать себе стим айди администратора или хотябы zCL игрока
Любым генератором, или же этим [Ссылки могут видеть только зарегистрированные пользователи. ] , находишь ссылку на пользователя в стиме, и достаешься его Steam, сами циферки меняй в пиратской версии.
На пиратке еще можешь воспользоваться другим способом, прогой Steam ID Change, меняющей ID жеского диска, но она только сможет разбанить.
МылЬНый-Пу3ыРь,
Часть вторая, получаем доступ к MySQL от AmxBans сервера
Цитата:
Сейчас стало модно держать отдельную веб-страничку со списком игроков, забаненных на сервере.
Этот список формируется из MySQL таблицы, данные в которую заносит плагин AmxBans.
Так же, AmxBans позволяет хранить информацию о админах не в файле users.ini, а в той же самой БД.
Данные для доступа к этой базе прописываются в кварах(CVar) сервера. Их можно прочитать командой rcon amxx cvars
Код:
amx_sql_host
amx_sql_user
amx_sql_pass
Цитата:
В качестве способа общения с БД, я традиционно использую SQLYog
База принадлежала игровому хостингу и была настроена на доступ только с доверенных IP-адресов.
SQLYog может использовать HTTP-туннель для доступа к базе, для этого достаточно закинуть SQLyogTunnel.php на нужный ресурс и указать к нему путь.
Цитата:
В базе данных AmxBans все пароли хранятся в виде MD5 хешей. Всего их там было около 50, при этом практически все были раскодированы с помощью сервиса по декодированию различных хешей так как состояли из 7-8 цифр без использования каких-либо буквенных символов.
Выставлением прав доступа прямым редактированием БД мало кто занимается, поэтому на веб-странице AmxBans можно залогиниться под администраторской учёткой и выставлять права через удобный веб-интерфейс.
Там было 3 администратора. Их пароли так же хранятся в виде MD5 хешей, но у одного был длинный и с виду надёжный пароль, но он состоял из часто встречаемых слов и года, у другого — дата рождения. Пароль третьего был расшифрован где-то через час.
Сообщать об этом администрации, я, разумеется, уже не буду, более того, когда я сообщил о уязвимости первый раз, мне было сказано, что из-за того, что я нашёл уязвимость и сообщил о ней администрации — «сам понимаешь доверие пропадает». (Ну да, действительно, надо было пользоваться и ни кому о ней не говорить )
На 1.6 ещё ярче есть, 2 плагина (он как бы один но работает в двух направлениях) которые стоят на 80% серверов, кроме КВ. Тоже через скрипт в определённый момент.
На 1.6 ещё ярче есть, 2 плагина (он как бы один но работает в двух направлениях) которые стоят на 80% серверов, кроме КВ. Тоже через скрипт в определённый момент.
SM Bullet Time(CSS/HL2DM/CSGO)
WarriorMod 2.2.0 by Snake60 в конце раунда, или когда мяч будет забит можно прописать sv_cheats и выдаст 1
Еще помню вроде есть плагин на бесконеыне гаранты, так вот с ним тоже баг есть, в какой-то момент включается sv_cheats 1, в какой именно момент не знаю.
Генерирование SteamID - великий взлом CS серверов Только на нормальные сервера никто не поставит права по SteamID
а по чем еще та? по ип практически нигде не ставится. т.к. траблы происходят из-за этого. ник это вообще бред
онли стим )) бывает по двум сразу привязка идет. бывает привязывают по винчестеру или по железу, но это более тяжелый способ.
а по чем еще та? по ип практически нигде не ставится. т.к. траблы происходят из-за этого. ник это вообще бред
онли стим )) бывает по двум сразу привязка идет. бывает привязывают по винчестеру или по железу, но это более тяжелый способ.
Может, бывает еще и подсеть дают и тяжело снять бан, но все-таки возможно.
ИП наврятли, ибо у половины пользователей стоит динамика айпи адреса и школьники играют вечно.
а стим обходится, соглашусь что дают привязку к оба параметрам бана.
а зачем тебе именно флаг стим красть?генератор все равно не узнает что это за стим, он просто его присвоит игроку, а то что на этом стиме есть , то и окажется у игрока.