Доступ root через TeamCity

    GitHub оказался под крупнейшей DDoS атакой, немного обсудили в общем рабочем чате вечерком. Оказалось, что мало кто знает о замечательных поисковиках shodan.io и censys.io.

    Ну и я интересу ради, прям для вау эффекта поискал TeamCity (далее тс), т.к. помню прикольный баг с регой в старых версиях (был исправлен в версии 9.0.2 от января 2015 года).

    Как оказалось, его даже не нужно было применять, т.к. во многих тс админы не закрывали регистрацию, а на некоторых доступен был вход под гостем.

    *картинки можно открывать в соседней вкладке, для лучшего качества
    image

    Взял самый первый попавшийся IP и двинул на их тс.

    image

    Ура, есть рега обыкновенная, и как правило, у неё прав больше, чем у гостя, см. сравнение ниже

    Гость
                                                                                                                       Гость
    А вот так под новым зареганым аккаунтом
                                                                                             А вот так под новым зареганым аккаунтом

    В параметрах явно были прописаны некоторые доступы

    image

    Но логины пароли также и в другом месте есть — в конфигах артефактов:

    image
    image

    Судя по названиям БД ничего интересного быть там не может, но всё же решил попробовать.

    Легковесный и быстрый клиент для монги под винду — robomongo.org

    image

    Сильно шариться по БД не стал, т.к. слово analytics навевает скуку.
    В TFS сходить не удалось, определённо логин не вебовский, курить апи тоже скучно, ибо не самый интересный проект, но для демонстрации достаточно).

    Почта разрабов добыта там же — отписался, ответа нет.

    Если артефакты не были доступны — всегда можно посмотреть change log:

    image
    image

    Удивляют проекты, где пароли — простые слова, тут хоть префикс есть.
    Помню однажды попался пасс — осмотрись, прям забавно.
    Также, определённая категория людей, предпочитает хранить прямо в коде всякие настройки:

    image

    Перехожу к самому интересному — есть проект triplay.com
    Их продукты: emusic.com, estories.com, mydigipack.com, mymusiccloud.com и ещё какие-то. Установок приложения андроид 1000000+, эпловое — не понял где там количество скачиваний смотреть.

    Ну и конечно же — их тимсити был открыт снаружи, + открыта рега:

    image

    120 сборок, но артефакты были далеко не везде, вероятно для экономии места. Зато имеется Common проект, где все артифакты собираются вместе, но серверные вполне себе велись и этого было достаточно:

    image

    Отлично, качаем файл и… я прям не удивлён:

    image
    image

    Пришлось поставить яву и проверить коннект к ораклу (оракл для простого сайтика в проде, ааа, блин, ну почему не postgres):

    image

    Конечно же, несмотря на то, что в конфигах был указан везде префикс prod — без явной проверки этого нельзя было сказать наверняка):

    image

    Ну и конечно, я сам зарегал почту, с которой им отписал о проблеме (только я показал скрины, а не сценарий, т.к. не хотел, чтобы чел из саппорта получил доступ к бд, где 691к аккаунтов, выкачал всё это дома и… я хз, что мог бы сделать. Сценарий немного надуман, но лучше попросить контакт админа/разраба).

    В теории, полный доступ к бд и можно смело заменять чей-нибудь хеш/соль пасса своими и входить под ним.

    Но я лишь почитал данные и успокоился на этом, отписавшись в офф. сапорт, на что мне ответили, что всё рассмотрят, переведут на специалиста, который ответит в порядке очереди и… молчание

    Спустя несколько дней они закрыли доступ к БД, но не к тс, проверил почту — ни вопросов, ни благодарностей.

    Ну ок, полез проверять дальше и… в артефактах нашёл проект, который содержит деплой скрипты, словно он в тс попадает откуда-то из вне и после сам запускает билд.

    image
    image

    Так и было, + ещё логин/пасс от тс.

    Сложно было поверить в это, ну ок, телнет 22 пашет, пробую ссш, но погоди, какой же логин…

    image

    wu la
    ssh -p 22 -i triplay-deployer-priv root@build.triplay-inc.com

    Немного удивился наличию доступа, ок. Осмотрелся в консоли, посмотрел хосты (35 машин прописано) и какие-то ключики (я с никсами не оч, доступ рут и без того ясно, что даст сделать всё, что хочешь, было бы желание).

    Нашёл тестовый доменчик + конкретную машину (и… кажется ssl серт).

    image

    Выше скрин, кстати, когда я с одного сервера хожу на другой, ибо тот из вне по ssh не был доступен. И таких машин там было, конечно же, дофига, сами представьте, какая там инфраструктура.

    И положил файлик с особым приветом (с ошибками, уж сорри, уже спать хотелось).

    image

    После очередного письма они прикрыли лавочку.

    Но не тут то было, у ребят оставался тестовый аккаунт. Я вошёл под ним. Оказалось можно получить трек бесплатно… ну я на всякий F12 и… что я вижу в пейлоаде:

    {
     "trackId": 1559229346,
     "quality": "SD",
     "dailyDownloadPurchase": false,
     "freeTrackPurchase": true
    }
    

    Нет, это не первоапрельская шутка — получить трек бесплатно или купить — решается на фронтенде флагом freeTrackPurchase:

    Демо покупки
    image
    image
    image

    А вот теперь нюанс — работает, видимо, не для всех аккаунтов, а для конкретно тестового)), но имея доступ к нему, можно «купить» все треки. Да и один фиг, они все доступны без авторизации (есть спец урла, инфо из БД, проверено).

    Какие ошибки парни совершили:

    1. Весьма внутренние ресурсы были открыты всему свету (БД, TeamCity, SSH)
    2. Даже если есть такая необходимость — не сделали вайтлиста для подключений
    3. Коннект под рутом извне… чет так себе идея
    4. Тем более, в проект добавлять сертификат для этого от рута!
    5. Все доступы и ключики хранят в… файлах и размножают по проектам (aws, paypal, и т.п., шаблон положил сюда), вместо того, чтобы хранить одно подключение к сервису конфигураций
    6. А самое главное — была разрешена рега в TeamCity, собственно с чего всё началось
    7. Ну и до кучи — там же собирались приложения для google/apple сторов и соответствующие серты и исходники были на месте

    Потому — если у вас имеются какие-либо продукты, которые доступны из вне — подумайте, как их можно использовать не по назначению сторонними людьми и предотвратите это.

    А основное приложение должно быть спроектировано, да и собрано так, что «кодовая база приложения может быть в любой момент открыта в свободный доступ без компрометации каких-либо приватных данных».

    И знайте продукты, с которыми работаете, как то:

    • rabbit — дефолтный логин пасс guest/guest
    • redis — вообще без авторизации по дефолту и позволяет делать такое
    • teamcity — по дефолту разрешена рега
    • и… список можно продолжать, включая тот самый мемкеш, который доступен из вне и завалил гитхаб )

                                                                 Что для тебя "счастье"?
                                                                 Когда как:
                                                                 0. Тишина, книга, сок
                                                                 1. Жена, настолка, кот,
                                                                 2. Кафе, сидр, друг
                                                                 3. Код, работа, доступ root
    • +40
    • 13,6k
    • 9
    Поделиться публикацией
    Комментарии 9
      +14

      Мораль сей истории — нельзя гитхабу ложиться, вообще, ни на минуту. Иначе у людей появляется свободное время, чешутся руки, и начинается бардак. :)

        0
        Напоминает, как я искал какую панель управления проектом выбрать. Увидел Trello. Думал заюзать их, а потом узнал сколько народу случайно оставляет их дешборды публичными с логинами и паролями благодаря гуглу. Там есть и впны и даже тимвиверы.
          +1

          Что за команда?


          wu la
            +1
            это не команда, это voila с ошибками )
          +3
          Для тех, кто как и я (был) не в курсе, что же такое TeamCity, и как там оказались исходные коды:
          так называемые билд-серверы. Такие штуки нужны для обеспечения непрерывной интеграции — это довольно удобная практика при разработке больших проектов, когда над разными частями работают разные команды.

          Если в двух словах, то эти билд-серверы автоматизируют целый ряд рутинных задач (сборка, тестирование кода перед коммитами, инспекция кода и так далее). Попасть в такую систему для пентестера равносильно нехилому такому джекпоту: внутри чаще всего поджидают исходники проектов компании плюс все коммиты, доступы к репозиториям, параметры сборки проектов, списки разработчиков и много чего еще полезного.
          (с)
            0
            Действительно, размещу соответствующую ссылку с названия, спасибо
            FYI: есть альтертативы тс alternativeto.net/software/jetbrains-teamcity, но с ними не работал, подстав не знаю
            0
            Спасибо за статью, наглядно продемонстрирована возможная цена ошибки конфигурации.

            Стоит уточнить, что упомянутый баг с доступной регистрацией был исправлен в версии 9.0.2 (вышла в январе 2015 года), и мы постарались оповестить владельцев серверов, затронутых этой проблемой.
              0
              Да, конечно, добавлю уточнение про версию, спасибо!

            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

            Самое читаемое