Всем Салам!
Давно не появлялся на форуме, да и вообще нигде не писал и не выступал. Решил больше времени уделить на прокачивание хард и софт скиллов. Но теперь я решил возобновить свою активность в сети по мере возможности буду писать. Также у меня появился канал в телеграм, где я публикую какие-то краткие заметки из пентестов, багбаунти и менеджмента: Bounty On Coffee . Так что присоединяйтесь.
В апреле 2020 года я решил исследовать партнерский портал Ситимобил и, конечно, попробовать заработать на этом.
Через этот портал они добавляют в систему машины, регистрируют водителей, берут с них комиссию, выводят деньги и так далее. С учетом того, что у компании открыта программа баг-баунти, — заманчивая цель.
Прежде всего нужно было попасть в аккаунт. Я видел три способа это сделать:
Первый — пойти в налоговую, зарегистрироваться, как ИП и подать официальную заявку на подключение к Ситимобил. Это гарантированный способ получить аккаунт в системе, но самый нудный, сложный и не анонимный.
Второй способ — попытаться обойти авторизацию, но без гарантий на успех.
Третий вариант — найти человека, который уже зарегистрирован в системе и попробовать договориться, чтобы мне дали аккаунт менеджера.
Я решил пойти по пути наименьшего сопротивления и начал с третьего варианта.
Там можно собирать публичные коллекции, и многие пользователи намеренно или случайно сохраняют в открытом доступе личные вкладки. С помощью таких dork’ов можно найти много интересного. Например, несколько человек, которые хранят в коллекциях ссылки на партнерские сайты Ситимобил.
Один из них вел какой-то партнерский блог. Я уже собирался написать ему в Skype, но сначала присмотрелся повнимательнее.
Блог не был опубликован, но на GitHub нашлись исходники, а в них ссылки на Google Диск, где в открытом доступе лежали инструкции, которые Ситимобил написал для партнеров.
Документация к личному кабинету: обзор интерфейса и функций портала, инструкции — ничего особенного. Там было и пошаговое руководство созданию нового пользователя. Оно было бесполезно без инвайта, но на одном из скриншотов я увидел поля «логин» и «пароль», заполненные открытым текстом.
Креды подошли. Так, спустя неделю поисков у меня появился доступ к активному демоаккаунту и отправная точка для продолжения исследований.
Поначалу я находил только мелкие, незначительные баги. Был момент, когда казалось, что я нашел способ выводить деньги с чужих партнерок на любой банковский счет, но оказалось, что Ситимобил проверяет каждую транзакцию.
Больше двух недель возни с Burp Suite без заметных результатов. И вот, кажется 5 мая, я вновь зашел на страницу с «моими» водителями и увидел ошибку: «у вас нет доступа».
Нет, аккаунт не заблокировали. Похоже, в тот день шли какие-то технические работы и у учетки отозвали все доступы. Пришлось перебирать известные адреса страниц в надежде, что одна из них будет доступна. Мне повезло, открылась страница с ранней версией этой партнерки. У нее отличался не только дизайн, но и endpoint. Если у всех страниц был /taxiserv/page, то здесь /taxiserv/new/anketa.
Раньше я видел на этой странице только «своих» таксистов, но теперь там появился длинный перечень таксопарков и профили водителей, которые зарегистрированы в этом таксопарке.
При помощи чужого идентификатора и еще одного бага, IDOR — небезопасной прямой ссылки, я подключил к демоаккаунту реального менеджера и таким образом получил его привилегии. Прямо на фронт вывалились карточки с информацией о таксистах (скрины паспорта и водительского удостоверения).
Теперь я мог просматривать и редактировать информацию о водителях, всего больше 400 тысяч анкет.
Судя по числу записей, это могли быть не только действующие водители, но и все те, кто регистрировался в системе за последние годы.
Чуть позже я нашел в полях интерфейса демонстрационного аккаунта пару мест для инъекций, time blind SQL-injection и error based SQL-injection. Ничего нестандартного не было, это были обычные SQLi инъекции, параметр с инъекцией был внутри json запроса.
Обратите внимание на тайминг
Это уже не такой зрелищный способ получить данные, но зато с его помощью можно вытащить все содержимое базы данных. Но в БагБаунти мы баги не эксплуатируем, а останавливаемся после получения подтверждения наличия бага.
У Mail.ru одна из лучших баг-баунти программ. Она входила в
Если у этой истории и есть мораль, она в том, что, не стоит забывать про безопасность внутренних сервисов. То, что к ним имеют доступ только сотрудники и деловые партнеры, не значит, что туда не проникнут злодеи.
Стоит использовать все доступные методы для повышения уровня безопасности, особенно, если купили проект с давней историей разработки. Почаще проводите пентесты, открывайте баг-баунти.
Всем удачной охоты! За помощь в написании статьи спасибо коллеге из Бастиона - Santry.
Давно не появлялся на форуме, да и вообще нигде не писал и не выступал. Решил больше времени уделить на прокачивание хард и софт скиллов. Но теперь я решил возобновить свою активность в сети по мере возможности буду писать. Также у меня появился канал в телеграм, где я публикую какие-то краткие заметки из пентестов, багбаунти и менеджмента: Bounty On Coffee . Так что присоединяйтесь.
Предисловие
С появлением автоматизированных сканеров становится все меньше смысла искать простые уязвимости в публичных сервисах. Чтобы найти что-то крупное, я стараюсь проникнуть вглубь, в служебные сервисы, доступные ограниченному кругу лиц, но не обязательно только из локальной сети.В апреле 2020 года я решил исследовать партнерский портал Ситимобил и, конечно, попробовать заработать на этом.
Через этот портал они добавляют в систему машины, регистрируют водителей, берут с них комиссию, выводят деньги и так далее. С учетом того, что у компании открыта программа баг-баунти, — заманчивая цель.
Прежде всего нужно было попасть в аккаунт. Я видел три способа это сделать:
Первый — пойти в налоговую, зарегистрироваться, как ИП и подать официальную заявку на подключение к Ситимобил. Это гарантированный способ получить аккаунт в системе, но самый нудный, сложный и не анонимный.
Второй способ — попытаться обойти авторизацию, но без гарантий на успех.
Третий вариант — найти человека, который уже зарегистрирован в системе и попробовать договориться, чтобы мне дали аккаунт менеджера.
Я решил пойти по пути наименьшего сопротивления и начал с третьего варианта.
Ищем в открытых источниках
На этом этапе пригодились Яндекс.Коллекции. Так называется сервис для хранения избранного: картинок, видео или ссылок. Он встроен в Яндекс.Браузер.Там можно собирать публичные коллекции, и многие пользователи намеренно или случайно сохраняют в открытом доступе личные вкладки. С помощью таких dork’ов можно найти много интересного. Например, несколько человек, которые хранят в коллекциях ссылки на партнерские сайты Ситимобил.
Один из них вел какой-то партнерский блог. Я уже собирался написать ему в Skype, но сначала присмотрелся повнимательнее.
Блог не был опубликован, но на GitHub нашлись исходники, а в них ссылки на Google Диск, где в открытом доступе лежали инструкции, которые Ситимобил написал для партнеров.
Документация к личному кабинету: обзор интерфейса и функций портала, инструкции — ничего особенного. Там было и пошаговое руководство созданию нового пользователя. Оно было бесполезно без инвайта, но на одном из скриншотов я увидел поля «логин» и «пароль», заполненные открытым текстом.
Креды подошли. Так, спустя неделю поисков у меня появился доступ к активному демоаккаунту и отправная точка для продолжения исследований.
Изучаем окружение
Поначалу я находил только мелкие, незначительные баги. Был момент, когда казалось, что я нашел способ выводить деньги с чужих партнерок на любой банковский счет, но оказалось, что Ситимобил проверяет каждую транзакцию.
Больше двух недель возни с Burp Suite без заметных результатов. И вот, кажется 5 мая, я вновь зашел на страницу с «моими» водителями и увидел ошибку: «у вас нет доступа».
Нет, аккаунт не заблокировали. Похоже, в тот день шли какие-то технические работы и у учетки отозвали все доступы. Пришлось перебирать известные адреса страниц в надежде, что одна из них будет доступна. Мне повезло, открылась страница с ранней версией этой партнерки. У нее отличался не только дизайн, но и endpoint. Если у всех страниц был /taxiserv/page, то здесь /taxiserv/new/anketa.
Раньше я видел на этой странице только «своих» таксистов, но теперь там появился длинный перечень таксопарков и профили водителей, которые зарегистрированы в этом таксопарке.
При помощи чужого идентификатора и еще одного бага, IDOR — небезопасной прямой ссылки, я подключил к демоаккаунту реального менеджера и таким образом получил его привилегии. Прямо на фронт вывалились карточки с информацией о таксистах (скрины паспорта и водительского удостоверения).
Теперь я мог просматривать и редактировать информацию о водителях, всего больше 400 тысяч анкет.
Судя по числу записей, это могли быть не только действующие водители, но и все те, кто регистрировался в системе за последние годы.
Чуть позже я нашел в полях интерфейса демонстрационного аккаунта пару мест для инъекций, time blind SQL-injection и error based SQL-injection. Ничего нестандартного не было, это были обычные SQLi инъекции, параметр с инъекцией был внутри json запроса.
Обратите внимание на тайминг
Это уже не такой зрелищный способ получить данные, но зато с его помощью можно вытащить все содержимое базы данных. Но в БагБаунти мы баги не эксплуатируем, а останавливаемся после получения подтверждения наличия бага.
Резюмируя
В ходе тестирования ни один таксист не пострадал. Я использовал для проникновения демоаккаунт, после, мне админами был сделан тестовый аккаунт (через 2-3 месяца уже у многих были тестовые аккаунты, но и награды соответственно снизили)У Mail.ru одна из лучших баг-баунти программ. Она входила в
Ссылка скрыта от гостей
, теперь ждем Mail на российских площадках. Уже спустя месяц я получил награду: $8 000
Ссылка скрыта от гостей
и $25 000
Ссылка скрыта от гостей
Ссылка скрыта от гостей
и еще чуть более $10 000 за остальные логические баги.Если у этой истории и есть мораль, она в том, что, не стоит забывать про безопасность внутренних сервисов. То, что к ним имеют доступ только сотрудники и деловые партнеры, не значит, что туда не проникнут злодеи.
Стоит использовать все доступные методы для повышения уровня безопасности, особенно, если купили проект с давней историей разработки. Почаще проводите пентесты, открывайте баг-баунти.
Всем удачной охоты! За помощь в написании статьи спасибо коллеге из Бастиона - Santry.
Последнее редактирование: