Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Взлом bukkit/(minecraft?) сервера используя уязвимость в авторизации

Тема в разделе "Руководства, инструкции, утилиты", создана пользователем blackalegator, 27 окт 2013.

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

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

    Баллы:
    63
    Доброго вам вечера. Это тред не является туториалом. Здесь я хочу обсудить и найти решение одной проблеме в безопасности, которая по моему мнению существует на многих проектах. Начну издалека: некоторое время назад я услышал от третьего лица, что были взломаны несколько крупных проектов (в том числе futurecraft, hil.su и еще несколько). Технических подробностей получить не удалось, поэтому я решил связаться с администрацией этих проектов. Далее наша переписка:

    ------------------------------------------------------------------------------------------------------------------
    Здравствуйте. Недавно услышал услышал интересную информацию: вас и несколько других проектов взломали через дырку в авторизации bukkit. Услышал не от первого лица, поэтому технических подробностей мне не дали) Знаю только, что вы, вроде, единственные проект, кто пофиксил эту дырку. Остальные установили xAuth, но по мнению взломщиков это их не спасет. Понимаю, вам пришлось немало попотеть, чтобы найти и устранить эту уязвимость, однако мне бы все-таки очень хотелось узнать от вас способ взлома и (если нетрудно) способ устранения этой уязвимости. Будет достаточно имени класса и номера строчки (названия функции) с GitHub

    Если честно, я совершенно не знаю как работает авторизация Bukkit (еще и не глядел), но по косвенным данным я понял, что присылали пакет с ником другого игрока уже после первого этапа авторизации. Удивительно, что вы смогли понять каким образом вас взломали, или же в логе все-таки был Exception который вам помог? Если его не было - респект вам ;D
    ------------------------------------------------------------------------------------------------------------------
    Ответ:
    Здравствуйте. Мы не единственный проект который пофиксил эту уязвимость. Нам помог дружественный проект (Точнее даже сказать его создатель) который дал нам фикс, за что им, Hil.SU, отдельное спасибо. К сожалению я не могу вам сказать как работает данная уязвимость и как её пофиксить, т.к. мы не являемся авторами данного фикса.

    Приятной игры на FC.
    -----------------------------------------------------------------------------------------------------------------

    Администрация HIL.SU на мое письмо вовсе не ответила. Считаю, что эта проблема должна быть рассмотрена всеми, а ее решение выложено публике.

    Что хотелось бы услышать от вас?
    1. Как по-вашему работает default авторизация minecraft (не лицензионная)
    2. Какие классы используются
    3. Сталкивались ли вы с этой проблемой
    4. Решение, если у вас таковое имеется
     
  2. Хостинг MineCraft
    <
  3. Автор темы
    blackalegator

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

    Баллы:
    63
    PS Просьба не выкладывать никаких готовых для школьных рук решений для взлома серверов.
     
  4. Spurkle

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

    Баллы:
    68
    Насколько я знаю в 1.6.2 была дырка. Чтобы зайти под любым именем надо было изменить время между хандшейками. Видел даже специально клиенты для этого.
     
  5. ZloYCRipeeR

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

    Баллы:
    153
    Skype:
    cry_zloy
    Имя в Minecraft:
    ZloYCRipeeR
    Не вижу в этом опасности, ведь прмдётся отключать защмту в лаунчкре, а на серверах, которые есть смысл ломать, он имеет хорошую защиту.
     
    Official_dizziel нравится это.
  6. Killing

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

    Баллы:
    103
    Имя в Minecraft:
    Killing
    Что за хренотень??? Этому взлому уже месяц, ТС - слоупок...

    Читай блин
     
    ВремяПриключений нравится это.
  7. Автор темы
    blackalegator

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

    Баллы:
    63
    Ничего себе я слоупок(
     
  8. Dr.Death

    Dr.Death Старожил Пользователь

    Баллы:
    153
    Skype:
    asn008
    Имя в Minecraft:
    DrDeath
    http://wiki.vg
     
  9. Sirse

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

    Баллы:
    173
    Имя в Minecraft:
    Sirse
    ВремяПриключений нравится это.
  10. Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Что могу сказать, вы слоу.
     
  11. Googleman

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

    Баллы:
    173
    Skype:
    google-apps
    Имя в Minecraft:
    Googleman
    Это эксплойт в авторизации на версии 1.5.2. Пофиксили на 1.6.2, так что можешь посмотреть как там фиксанули это.
     
  12. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Фикс уже есть и под 1.5.2.
     
  13. oleg57zls

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

    Баллы:
    173
    Skype:
    BlayzerQ
    Имя в Minecraft:
    Blayzer
    Оффициальный в ядре? или кастомизировать нужно?
     
  14. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Официальный в mcpc+, в простом ведре не смотрел.
     
  15. The_Luuzzi

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

    Баллы:
    103
    Интересно - интересно. Александр,соизвольте пожалуйста посмотреть пофикшено ли это в ведре 1.5.2 буду весьма благодарен.
     
  16. Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    могу сказать за него, ответ - нет.
     
    alexandrage нравится это.
  17. The_Luuzzi

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

    Баллы:
    103

    Не может ли кто-то помочь устранить столь не приятную дыру?
     
  18. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    http://yadi.sk/d/nIs_CmcfA98ua Мой напильник справился за 5 минут :).
    Код:
      public void a(Packet2Handshake packet2handshake)
      {
        if (this.g != null) {
          disconnect("Quit repeating yourself!");
        } else {
          this.hostname = (packet2handshake.c + ':' + packet2handshake.d);
    
          this.g = packet2handshake.f();
          if (!this.g.equals(StripColor.a(this.g))) {
            disconnect("Invalid username!");
          } else {
            PublicKey publickey = this.server.F().getPublic();
    
            if (packet2handshake.d() != 61) {
              if (packet2handshake.d() > 61)
                disconnect("Outdated server!");
              else
                disconnect("Outdated client!");
            }
            else {
              this.loginKey = (this.server.getOnlineMode() ? Long.toString(random.nextLong(), 16) : "-");
              this.d = new byte[4];
              random.nextBytes(this.d);
              this.networkManager.queue(new Packet253KeyRequest(this.loginKey, publickey, this.d));
            }
          }
        }
      }
     
    Сникерсни нравится это.
  19. The_Luuzzi

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

    Баллы:
    103
    Благодарвствую ;)
     
  20. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Для слоу ммору можно изменить сообщение "Quit repeating yourself!" класс транслятором.
     
  21. Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Кстати это не совсем фикс, но при шансе срабатывания дырки в данном слчае в 0.0001% уже можно наплевать.
    Вот что получается когда моджанг пытается писать многопоточный код.
     

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