💬 #заметки #web #offense
➡️Прочитала
статью и вспомнились подобные случаи из своей практики; Но мне нельзя такое рассказывать, поэтому просто раздам непрошеные советы 👋
🧩 ‟
Службы поддержки: где искать баги и получать награды” (
@kosecchannel)
1️⃣
Входные точкиПравильно говорят: подумайте, откуда поддержка принимает обращения и как их регистрирует;
➖Встроенный самописный чат?
➖Встроенный third-party чат?
➖Мессенджеры / Соц. сети?
➖Электронная почта?
➖Звонки?
(заявки могут регистрироваться ботом)2️⃣
Связь пользователь-заявкаВ случае встроенных чатов: не забывайте про ошибки логики; В частности — Improper Access Control и Mass Assignment!
▪️Гляньте, как авторизуются обращения:
▪️Что в cookie?
▪️Что в заголовке Authorization?
▪️А если использовать чужие cookie / заголовок?
▪️А если удалить что-то одно / всё вместе?
▪️Гляньте, как обращения привязываются к пользователю:
▪️Что если переписать данные в обращении?
▪️Что если дописать к имеющимся параметрам: телефон, почту, ФИО, юзернейм, идентификатор пользователя, идентификатор тикета, ещё одно обращение?
➖Как элемент объекта-словаря:
{"name": "Ivan", "phone": "12345", "phone": 🚩, "email": "ivan@gmail.com", "text": "test"}
{"name": "Ivan", "phone": "12345", "email": "ivan@gmail.com", "text": "test", "clientId": 🚩}
➖Как значение внутри массива:
{"name": "Ivan", "phone": "12345", "email": ["ivan@gmail.com", "🚩"], "text": "test"}
➖Как доп. объект:
[{"name": "Ivan", "phone": "12345", "email": "ivan@gmail.com", "text": "test"}, {"name": "🚩", "phone": "🚩", "email": "🚩", "text": "test"}]
▪️Отправляются ли такие сообщения / Вызывают ошибку?
▪️Если есть возможность проверить: к какому пользователю привязалось обращение?
➖К тому, чьи данные были указаны в обращении;
➖К тому, кому принадлежат куки / заголовки в рамках запроса;
3️⃣
Информация ОТ поддержки ДЛЯ васОбратите внимание на информацию, предоставляемую пользователю в интерфейсе обращения / в самом ответе!
💬 В моём случае однажды служба поддержки переслала мне цитату из моего обращения, где чётко читались заголовки письма (см. прикреплённую картинку-пример) – они могут быть встроены почтовым сервисом / сервисом тикетов – это помогло понять, на какой параметр опирается сервис для образования связи пользователь-заявка;
4️⃣
Вектора атакВ зависимости от сервиса, обрабатывающего обращения, подумайте над векторами атак, например:
▪
Data LeakИзвлечение информации о пользователях приложения;
💬 В примере на картинке: если заявка отправлялась без входа в аккаунт, она привязывалась к указанному номеру телефона, ответы приходили на почту из заявки ➡️ в ответах раскрывались настоящие данные пользователя, если указанный телефон был зарегистрирован в приложении; оставалось автоматизировать ⚡️
▪
XSSВзаимодействие с другими обращениями, эксфильтрация информации из интерфейса оператора, ...;
▪
HTML InjectionПлощадка для соц. инженерии, потенциальные UI Redressing➡️Clickjacking;
▪
E-mail InjectionПотенциальные имперсонация➡️спуфинг / XSS через
ошибки парсинга;
➡️ Рекомендую почитать
наш материал на эту тему!
▪
DoSКрупные
(или маленькие!) письма и файлы, которые могли бы остановить работу конкретного оператора или сервиса в целом;
➡️ Рекомендую посмотреть
пост на эту тему!
▪
SSTIА если содержимое писем подставляется в шаблон? Можно попробовать получить отстук на свой хост, чтобы убедиться;
▪
Prompt InjectionА если на том конце формы прячется ИИ-агент? 🤔
5️⃣
Информация ОТ вас ДЛЯ поддержки💬 Смешно, но работает:
Некоторые службы поддержки могут [полу-]автоматически отзываться на сообщения вида "тест" / "test" / "ping" — попробуйте как-нибудь!😊
@HaHacking 🐇