>
Июнь 2018
Пн Вт Ср Чт Пт Сб Вс
« Апр    
 123
45678910
11121314151617
18192021222324
252627282930  

Взлом Teamcity. Обход отключенной регистрации пользователей.

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

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

Ну все, довольно скучать, переходим к делу. Я хочу рассказать об уязвимости в популярном билд-сервере TeamCity от компании JetBrains. Бaг довольно банален, однако очень опасен последствиями, потому что позволяет получить доступ в систему.

Дело вот в чем. С сервером можно работать через браузер. Авторизация осуществляется с помощью обычной пары логин:пароль. Также присутствует возможность регистрации пользователей. Однако, когда администратор в настройках отключает свободную регистрацию в системе, недоступной становится только сама форма регистрации. А экшен, который непосредственно создает пользователя, эту настройку не проверяет.

Для регистрации пользователя нам нужно отправить POST-запрос на скрипт registerUserSubmit.html, который содержит email, имя пользователя, публичный ключ и два раза пароль в зашифрованном виде. Ключ уникален для каждого посещения, и им же шифруется пароль перед отправкой. Его можно найти, посмотрев исходный код страницы авторизации например. Ищи скрытый input с именем publicKey.

Страница авторизации и publicKey для шифрования пароля

Страница автoризации и publicKey для шифрования пароля

Чтобы тебе не заморачиваться со всей этой мишурой, я написал небольшой JS-скрипт, который все сделает за тебя. Вот gist. Тебе нужно только скопировать код, открыть страницу авторизации TeamCity, открыть консоль разработчика (для Хрома и Файрфокса — хоткей F12), вставить код и нажать Enter. Если баг присутствует, то тебя зарегистрирует, авторизует и переадресует на домашнюю страницу системы. Дальше начинай шерстить ее на предмет нужной тебе информации. Например, я советую сразу же заглянуть в раздел Projects. С большой долей вероятности там ты найдешь список актуальных проектов. А щелкнув на Artifacts, скорее всего, и их исходники.

Эксплоит отработал успешно. Мы в системе

Эксплоит отработал успешно. Мы в системе

Этот баг актуален для всех версий TeamCity вплоть до 9.0.2. На данный момент самая последняя версия 9.1.6, но, как я успел заметить, никто не спешит обновляться. И во время тестов мне попадались такие динозавры, как 7.1. В любом случае, проверить на наличие уязвимости — дело одной минуты.

Такжe хочу упомянуть о том, что часто сервер TeamCity доступен с внешки. Попробуй побрутить поддомены и виртуальные хосты. Чаще всего это tc, ci, teamcity, tcity, ci-tc.

На этом все, удачных аудитов.

Share Button
[Всего голосов: 4    Средний: 2.5/5]

Вам может быть интересно также:

Last updated by at .

1 comment to Взлом Teamcity. Обход отключенной регистрации пользователей.

Leave a Reply

You can use these HTML tags

<a href="" title="" rel=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">