Раскрытие 5 миллионов ссылок в приватные чаты Telegram и возможность редактирования любой статьи
telegra.phВот уже больше года я пользуюсь мессенджером Telegram: это удобно и, насколько мне казалось, полностью конфиденциально. Так как я исследователь безопасности web-приложений, то должен был проверить соответствующую версию приложения на уязвимости. Я не видел в этом острой необходимости из-за репутации мессенджера как «самого защищенного». Я думал, что зря потрачу своё время и ничего не найду. Но недавно, тестируя один сайт, который взаимодействовал с доменом
t.me, мне довелось усомниться в безопасности Тelegram, и решимость проверить его на уязвимости быстро возросла.
Всё началось с того, что я проверял на уязвимости сайт своего клуба, где ранее мной была куплена подписка на рекомендации по покупке криптовалюты.
Регистрация на сайте доступна только по реферальным (пригласительным) ссылкам, а так же есть раздел для отправки сообщения куратору
example.com/profile#curator. После тестирования здесь не оказалось ни csrf, ни xss, ни какой-либо другой уязвимости. Но особое внимание привлек раздел с сообщениями
example.com/messages, где была представлена переписка с моим куратором
example.com/msg132591. Я решил проверить этот url на iDOR уязвимость, увеличив id на одну позицию, и уязвимость подтвердилась — я увидел личные данные другого пользователя. Так как на сайте не было функции для отправки сообщения другим юзерам, мы можем с точностью говорить об iDOR + Disclosure Information.
Двигаемся дальше — покупаем товар, после его успешной покупки происходит редирект на этот url
example.com/?pay_act=success&text=Вы%20успешно%20%20купили%20продукт, при этом, текст можно редактировать — в основном, символы фильтруются, но есть место, где текст попадает в и никакой фильтрации нет. Пишем вот такой payload <iframe/onload=alert(document.domain)> и отсылаем PoC владельцам ресурса. Также там был намёк на Server Side Include, но exec cmd отключена, при таком пейлоаде --#exec cmd="ls" --> (<! в начале, хабр не показывает этот payload) выбивало ошибку swal(' ', '"-->\'-->`-->[an error occurred while processing the directive](none).
Также, заметил страницу с товарами
example.com/?pageid=13156, там нашлась слепая sql injection. В качестве доказательства опасности меня попросили предоставить названия бд и таблиц. Руками раскручивать слепую скуль очень долго, поэтому на помощь пришла программа sqlmap:
После этих трёх уязвимостей была обнаружена CSRF в изменении личных данных, которая вела к захвату аккаунта путём восстановления по email, Stored XSS, а также мелкий баг, который позволял купить товар за цену в два раза меньше, чем его оглашенная стоимость. Главной опасностью этих всех уязвимостей (не считая sql injection), на мой взгляд, была рассылка по спарсеным email-адресам, ссылки на xss в связке с csrf и вывод реферальных начислений на реквизиты злоумышленника. Затем нашлась та самая уязвимость, которая заставила меня усомниться в безопасности telegram для web.
Обычно, в разделе настроек присутствует кнопка для подключения бота, с помощью которого можно получать рекомендации на торги криптовалютой. Кнопка привязана к такой ссылке
t.me/Another_bot?start=CODE.
Имея привычку постоянно проверять чувствительные данные в url на размещение в поисковиках (например, я находил дорк twitter или обменников), на этот раз я проверил
t.me. Дорк получился такой: site:
t.me inurl:Another_bot?start=. Мне выдало один код, и, успешно залогинившись в бота, я начал получать инсайды стоимостью $500, смог увидеть ФИО партнеров и баланс аккаунта.
Судя по тому, что код к телеграмм-боту появился в поисковике, на
t.me присутствуют явные проблемы с запретом индексации конфиденциального контента. Это происходит из-за того, что поисковикам это разрешили. А разрешено им это потому, что нету запретов в файле robots. При попытке его просмотреть
t.me/robots.txt происходит редирект на страницу пользователя, то есть, этого файла не существует.
Из-за отсутствия robots файла вырисовывается уязвимость Disclosure Information. Крафтим дорки для того, чтобы показать