- PVSM.RU - https://www.pvsm.ru -

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

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

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

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

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

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

image

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

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

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

Судя по названиям БД ничего интересного быть там не может, но всё же решил попробовать
Легковесный и быстрый клиент для монги под винду — robomongo.org [5]
image

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

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

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

Ну и конечно же — их тимсити был открыт снаружи, + открыта рега
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, и т.п., шаблон положил сюда [8]), вместо того, чтобы хранить одно подключение к сервису конфигураций
  6. А самое главное — была разрешена рега в TeamCity, собственно с чего всё началось
  7. Ну и до кучи — там же собирались приложения для google/apple сторов и соответствующие серты и исходники были на месте

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

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

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

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

Автор: SanSYS

Источник [11]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/ssh/277783

Ссылки в тексте:

[1] GitHub оказался под крупнейшей DDoS атакой: https://githubengineering.com/ddos-incident-report/

[2] shodan.io: https://shodan.io

[3] censys.io: https://censys.io

[4] прикольный баг с регой: https://xakep.ru/2016/04/19/teamcity-registration-hack/

[5] robomongo.org: https://robomongo.org

[6] triplay.com: http://www.triplay.com

[7] 1000000+: https://play.google.com/store/apps/details?id=com.emusic.android&hl=ru

[8] положил сюда: https://gist.github.com/SanSYS/36473100ea350281ec13af8f1d431186

[9] «кодовая база приложения может быть в любой момент открыта в свободный доступ без компрометации каких-либо приватных данных»: https://12factor.net/ru/config

[10] позволяет делать такое: http://reverse-tcp.xyz/2017/02/09/Redis-Hacking-Tips/

[11] Источник: https://habrahabr.ru/post/353504/?utm_campaign=353504