1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Уясвимость NOT ENOUGH ITEMS

Тема в разделе "Оффтопик", создана пользователем Gammer, 11 июл 2015.

  1. Автор темы
    Gammer

    Gammer Активный участник Пользователь Заблокирован

    Баллы:
    88
    Имя в Minecraft:
    MrSem
    На этих выходных мои сервера подверглись взлому - была проведена раздача большого количества ресурсов.
    Материал был взять с сайта ТЫК

    Это не дюп
    Первое, что нас насторожило - среди ресурсов, которые раздавали были квантовые генераторы (на моём сервере 1.4.7). Это сразу отвергло теорию дюпа, так как предмет сначала нужно получить, чтобы его дюпнуть. А как это сделать с предметом из творческого режима у которого ещё нет крафта?

    Первый поиск - безрезультатно
    Тут напрашивается вывод только один - взлом. Была проведена большая проверка, которая никаких результатов не дала. Оставался только один вариант взлома - с помощью пакетов. Позже выяснилось, что у игрока (и его аккаунтов), проводившего раздачу был творческий режим. Это значительно сузило круг поиска, потому что игровой режим можно переключить только двумя способами: с помощью команды gamemode и с помощью кнопки в NEI. Повторный поиск тоже ничего не дал. Банить аккаунты взломщика не имело смысла - это не решить проблему: он может создать новые, либо его последователи продолжать это дело. Выход из ситуации только один - искать уязвимость и фиксить её.
    Решено было установить "капкан" и ждать визита взломщика.

    "Капкан" сработал
    Взломщик заходит в очередной раз проверить работу уязвимости и успешно попадает в наш "капкан". Правда, сам взловщик при его срабатывании ничего не заметил, а вот мы увидели, где находится сама дырка. Верным помощником взломщика отказался мод Not Enough Items (который стоит не только на клиенте, но и на сервере для полноценной интеграции). Взлом осуществлялся с помощью одного пакета, который серверная часть NEI принимала без каких-либо проверок.

    Что же нам ChickenBones приготовил?
    Давайте рассмотрим, как работает серверная часть NEI.

    ServerPacketHandler - обработчик пакетов, присланных клиентом (игроком). На первый взгляд здесь всё хорошо. Проверка прав доступа есть. Мы выяснили, что взломщик использовал пакет с type=13, который переключает творческий режим. Но как он это сделал, если тут есть проверка доступа?
    111.png
    А теперь посмотрим, как работает функция проверки доступа authenticatePacket() в NEIServerConfig. И тут мы видим, что на некоторые type пакетов она тупо возвращает true не делая никаких проверок! Как раз на наш пакет с type=13 она всегда возвращает true (даёт добро на выполнение действия).
    1111.png
    Вот и вся суть взлома. Сервер спокойно принимает пакет от клиента и включает игроку творческий режим.
    Со стороны клиента отправка пакета очень проста. Остаётся лишь назначить клавишу, которая будет выполнять этот код и установить мод на клиент (лаунчеры не помеха).
    22222.png
    Исследуя этот код, мы нашли ещё одну аналогичную уязвимость. Отправив пакет с type=15 можно изменить тип моба, который создаёт спаунер. Этот пакет тоже не прверяется на наличие прав доступа. Отправка пакета со стороны клиента уже немного отличается - нужно указать местоположение и тип моба, который будет создавать спаунер.
    Этот пакет используется NEI для установки спаунеров мобов игроком, так как в свойства предмета нельзя записать тип моба, который он будет создавать - это не предусмотрено игрой.

    Неудивительно, что автор мода допустил такие ошибки. Проверка доступа к функциями раскидана по разным частям мода, поэтому так легко не заметить отсутствующую проверку. Благо, в версии 1.6.4 автор во время переписывания этой функции, исправил проблему. Таким образом уязвимость работает только на версии Minecraft 1.5.2 и ниже.
    Всем спасибо:3
     
    Последнее редактирование: 11 июл 2015
  2. MySt1k

    MySt1k Старожил Пользователь

    Баллы:
    173
    Ссылку на источник забыли!
     
  3. The-Koljas

    The-Koljas Новичок

    Баллы:
    16
    Имя в Minecraft:
    TheKoljas
    Опять слили, мой метод...
     
  4. Левый

    Левый Старожил Пользователь

    Баллы:
    173
    Взято с чужого сайта! Ещё вчера видел это. ТС, ссылку на источник в студию пожалуйста.
    А насчёт уязвимости. В чем проблема держать сервер выше 1.5.2 версии?
     
  5. Alexey123

    Alexey123 Старожил Пользователь

    Баллы:
    153
    Сколько странного полурекламного(не для rubukkit, конечно, а для редсервера) пафоса тут, не так ли? Я открою страшную тайну: этой баге минимум два года.
     
  6. Левый

    Левый Старожил Пользователь

    Баллы:
    173
    Этот баг никто не правил с тех пор как вышел NEI под 1.5.2, как видишь о нем узнают лишь сейчас))
     
  7. jwplaster

    jwplaster Старожил Пользователь

    Баллы:
    173
    Skype:
    jwplaster.smartworld
    Имя в Minecraft:
    QviNSteN
    На кой чёрт нужен NEI для северной части?...
     
  8. Alexey123

    Alexey123 Старожил Пользователь

    Баллы:
    153
    В качественные сборки(во всяком случае, FTBшные) его ставили. Серверный NEI позволяет, в частности, делать расширенный creative и магнитик, когда это не умели делать сторонние моды.
     
  9. Radviger

    Radviger Активный участник Пользователь

    Баллы:
    88
    Имя в Minecraft:
    Radviger
  10. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
  11. Radviger

    Radviger Активный участник Пользователь

    Баллы:
    88
    Имя в Minecraft:
    Radviger
  12. Alex2772

    Alex2772 Активный участник Пользователь

    Баллы:
    76
    Skype:
    alex277270
    Имя в Minecraft:
    Alex2772
    Динозавры существуют??7? D:
     

Поделиться этой страницей