Захват учетной записи - внутри арендатора

Резюме :
Захват учетной записи (ATO) — это атака, с помощью которой злоумышленник получает доступ к учетной записи другого человека. Существует несколько способов атаки с захватом учетной записи, а именно подбор учетных данных, подмена учетных данных, манипулирование ответами, отравление при сбросе пароля, социальная инженерия и фишинг, обходные атаки 2FA и т. д.
Описание :
Я нашел уязвимость в частной программе на одной из платформ Bug Bounty, за что получил 150 долларов США. Просматривая приложение, я обнаружил функцию приглашения, которая была уязвима для утечки токена приглашения. Я воспользовался утекшим токеном приглашения, чтобы завладеть учетной записью жертвы через незарегистрированное электронное письмо, которое было обработано мной (злоумышленником).
Что такое Арендатор?
Простыми словами арендатор определяется как группа пользователей из одной организации или компании. В арендаторе есть админ, который может приглашать других пользователей работать в компанию, которой создан арендатор. Арендатором может быть ИТ-отдел, бухгалтерия, отдел продаж и т. д.

Как я нашел эту уязвимость?
- Я вошел в учетную запись (учетные данные администратора были предоставлены платформой) и нажал кнопку «Пригласить пользователя».


3. Затем я перехватил запрос с помощью burpsuite и щелкнул правой кнопкой мыши по запросу > Перехватить > Ответить на этот запрос.



4. Я создал URL-адрес для токена приглашения и открыл его в браузере, потому что токен уже просочился в ответ, затем я нажал «Принять», и он попросил меня ввести адрес электронной почты.


5. Затем я зашел на временную почту, скопировал незарегистрированное электронное письмо и вставил его на веб-сайт, нажал кнопку, а затем нажал «Утвердить».



6. Затем код был отправлен на незарегистрированный адрес электронной почты (адрес злоумышленника)


7. Я использовал код и принял приглашение, отправленное жертве



Почему это произошло?
По моему мнению,
В веб-приложении было два недостатка
- Токен приглашения просочился в ответ при приглашении пользователя
- Проверка приглашенного пользователя по токену приглашения не была выполнена
Любой администратор может взять на себя учетную запись любого пользователя, приглашенного администратором в клиент.
Серьезность будет от низкой до средней, потому что атака происходит внутри арендатора, и, кроме этого, единственное, что здесь может сделать администратор, — это выдать себя за приглашенного пользователя и выполнить действия от имени этого пользователя, а администратор не может выдать себя за существующего пользователя. .
Расчетный CVSS
Векторная строка — CVSS:3.0/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N
Оценка - 5,4 (средний)

Смягчение
Здесь будет два смягчения
- Код приглашения не должен быть отправлен в ответе от сервера
- Проверка должна выполняться в отношении кода приглашения и адреса электронной почты приглашения.
// Проверяем, соответствует ли указанный адрес электронной почты коду приглашения
if (email == importCode) {
// Электронный адрес соответствует коду приглашения
// Продолжаем остальную часть процесса аутентификации
// …
} else {
// Электронный адрес не соответствует приглашению code
// Возвращаем сообщение об ошибке или запрашиваем правильный инвайт-код
// …
}
