Главная » Хабрахабр » Доступ root через TeamCity

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

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

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

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

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

image

Ура, есть рега обыкновенная, и как правило, у неё прав больше, чем у гостя, см. сравнение ниже
image
                                                                                                                   Гость
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

Демо покупки

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

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

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

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

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

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

                                                             Что для тебя "счастье"?
                                                             Когда как:
                                                             0. Тишина, книга, сок
                                                             1. Жена, настолка, кот,
                                                             2. Кафе, сидр, друг
                                                             3. Код, работа, доступ root


Оставить комментарий

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

Python-установщик Android-сборок из TeamCity своими руками

Аудитория QA-инженеры, тестировщики мобильных приложений, автоматизаторы. Проблема Этот процесс отнимает время и силы, которые эффективнее потратить на поиск багов. Во время тестирования приложений под Android (не только, но далее речь пойдет только про данную платформу), приходится устанавливать множество сборок тестируемого ...

Карьерный Rush

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