Вы когда-нибудь слышали про Google Issue Tracker? Вряд ли, если вы не находитесь в кругах, близких к разработчикам Google. Я и сам не знал о нём, пока не обратил внимание, что для моего отчёта об уязвимости была создана тема в Issue Tracker.
И тут я решил сломать его.
Что это за сайт? Согласно документации, Issue Tracker (рабочее название − Buganizer System) − это инструмент, используемый компанией Google для отслеживания ошибок и уязвимостей в процессе разработки продуктов. Он доступен также сторонним компаниям, разрабатывающим расширения и интеграции для Google, а простые пользователи не могут узнать о проблемах.
Наблюдая за тем, какие числовые идентификаторы назначаются последним обнаруженным проблемам, я выяснил, насколько часто этот инструмент используется. Так, в течение рабочего дня появляется по 2000-3000 новых записей в час, и лишь единицы общедоступны, а значит, все остальные представляют серьёзную угрозу.
Одной из первых вещей, которую я заметил, стала возможность участия в обсуждениях разработчиков, если попасть в базу рассылки электронных писем. Адрес выглядит примерно так:
buganizer-system + componentID + issueID @ google.com
(componentID − это число, представляющее категорию, а identID − уникальный идентификатор для потока)
Это напомнило мне историю про взлом службы поддержки Ticket Trick, который позволил хакерам проникнуть в системы чатов организаций, используя подобную систему электронной почты.
Учитывая, как оканчивается адрес электронной почты @google.com, я пытался присоединиться к команде Google в Slack. Поначалу это было многообещающе:
Увы, письма от Slack я так и не получил.
Затем я попробовал просто зарегистрировать учётную запись с окончанием в @google.com:
Но и это не привело к успеху. Тем не менее я нашел метод обхода фильтра: если при регистрации с любым другим поддельным адресом письмо с подтверждением не пришло, то можно изменить этот электронный адрес. Используя данный метод, я изменил адрес электронной почты новой учетной записи Google на [email protected]
Вскоре я получил письмо с подтверждением:
Да! Я кликнул по ссылке и вошёл в систему баг-трекинга.
И почти сразу был перенаправлен на другую страницу, где снова нужно было войти. Там мои данные не сработали. Тем не менее я продолжил поиски возможных путей обхода. Кстати, за эту уязвимость я получил $3 133: ей был установлен критический приоритет. В течение 11 часов проблему устранили.
Еще одна функция, которая привлекла мое внимание − возможность следить за открытыми тикетами, добавив их в избранное. Когда состояние проблемы обновится или появится новый комментарий, приходит уведомление.
Ещё одна любопытная проблема, на которую я обратил внимание, − это плохая регуляция доступа. Ограничения прав будто вообще никак не применяются к этому сервису.
Например, я попробовал добавить баг в избранное, не имея к нему доступа (подменив в запросе Issue ID на идентификатор из другого своего аккаунта). И этот запрос выполнился успешно:
Я решил проверить, поймут ли другие, что я посторонний, и опубликовал следующее сообщение:
Снова не получилось. Я не отчаялся и решил побаловаться с последними полученными Issue ID (скорее всего, они совпадают с номерами в базе данных), после чего все эти проблемы я добавил в избранное.
Проверив почту через несколько минут, увидел следующее:
Но нет, все новые записи оказались бессмысленными обсуждениями. Я даже сначала решил попытаться найти решение проблем самостоятельно, но в итоге сдался и просто отправил информацию в Google. За это я получил $5 000.
Когда обычный пользователь заходит в Tracker Issue, большинство функций блокируются или глубоко скрываются.
Разработчик ограниченной версии Tracker Issue оставил возможность удаления из списка рассылки обновлений по проблеме. Нужно отправить запрос POST:
И тут я обнаружил серьёзные баги:
- Система не проверяет, имел ли пользователь доступ к рассматриваемой проблеме ранее.
- Если вы указали адрес электронной почты, который ещё не был включен в список рассылки, то вылезает сообщение об успешном удалении из списка.
- Все детали бага в ответе: если ошибок не произошло во время выполнения действия, то остальная часть системы подразумевает, что у пользователя достаточно прав. Поэтому абсолютно вся информация по заданному issue ID будет возвращена в теле HTTP ответа.
Я смог просмотреть сведения о каждой проблеме в базе данных, заменив issueIds в запросе выше: подробности отчетов об уязвимостях, всё, что есть в Buganizer. Более того, система никак не ограничивала скорость обработки данных пользователем, то есть я смог получить информацию о нескольких тикетах одним запросом.
Быстро заполнив данные о проблеме, я получил 7500$. К слову, решение проблемы командой Google заняло всего час.
Источник: Как я взломал систему баг-трекинга Google и получил $15 600 за обнаруженные баги on freeCodeCamp