[Перевод] IDOR & UUIDs для утечки PII

Введение
Привет, сегодня я поделюсь с вами очередным отчетом. Уязвимость, о которой мы поговорим, это IDOR. С помощью которой, я смог раскрыть личную идентификационную информацию (сокращенно PII). Быстро объясню, что такое IDOR и PII.
Что такое IDOR
Это сокращение от Insecure Direct Object Reference (небезопасная прямая ссылка на объект). Что это значит? Проще говоря, это уязвимость, которая позволяет злоумышленнику выполнять CRUD операции (создание, чтение, обновление, удаление) от имени других пользователей, так как приложение не проверяет, действительно ли пользователь, получающий доступ к ресурсу, является его владельцем.
Что такое PII
Это любая личная идентификационная информация, которой может обладать пользователь и которая может позволить создать копию профиля конкретного человека (включая электронные почты, номера телефонов, номера социального страхования и так далее).
Теперь перейдем к делу
Назовем наш объект атаки — target.com. Это поставщик бытовых услуг, работающий как посредник между рабочими и клиентами. После того как вы получили некоторый контекст, давайте поговорим об уязвимости.
Сначала я создал учетную запись на target.com, изучил все возможные функции и получил хорошее представление о логике работы сайта. Я начал тестирование и оформил заказ на сайте как обычный пользователь, затем попытался просмотреть информацию о заказе, которую я предоставил. Клиент отправлял запрос на https://target.com/api/order/123e4567-e89b-12d3-a456–426655440000 (используемый UUID — это пример), в ответе я нашел информацию о своем заказе.

Я подумал, что этот эндпоинт может быть уязвим к IDOR, но я не могу угадать UUID других пользователей для проверки. Поэтому я создал другой аккаунт, сделал заказ, взял UUID заказа и проверил через первый аккаунт. И к моему удивлению это сработало! Это здорово, но не будет ли лучше, если я найду способ получить UUID заказов других пользователей. Поэтому я проверил другие эндпоинты target.com, чтобы выяснить, можно ли получить UUID. Через некоторое время на сайте появилась многообещающее уведомление: «Рабочий прислал мне предложение по поводу моего заказа», и вместе с предложением пришли некоторые отзывы о его прошлых заказах. API-запрос, который возвращал ID отзывов — https://target.com/api/profile/3166044/reviews.

После этого я обнаружил другой эндпоинт, который возвращает текст отзыва, содержащий оценку, данную работнику, и комментарии. Но нашлось и то, что оказалось важнее всего этого — UUID заказов. Эндпоинт возвращает UUID заказа, на который оставлен отзыв.

Соединяя все это воедино, я смог собрать информацию о заказах других клиентов, которая включает их (номер телефона, имя, адрес).
Критичность ошибки была высокой. Влияние: возможность раскрытия конфиденциальной информации о клиентах (номер телефона, имя, адрес). Но, к сожалению, ошибка оказалась дубликатом :»(

Ещё больше познавательного контента в Telegram-канале — Life-Hack — Хакер
Habrahabr.ru прочитано 21253 раза