February 6

День 30. IDOR


Узнайте, как находить и использовать уязвимости IDOR в веб-приложениях, предоставляющие вам доступ к данным, к которым у вас быть не должно.

1. Что такое IDOR?

В этой комнате вы узнаете, что такое уязвимость IDOR , как она выглядит, как её обнаружить, а также выполните практическое задание по эксплуатации реального сценария.

Что такое IDOR ?

IDOR расшифровывается как Insecure Direct Object Reference (небезопасная прямая ссылка на объект) и представляет собой тип уязвимости контроля доступа.

Этот тип уязвимости может возникнуть, когда веб-сервер получает предоставленные пользователем данные для извлечения объектов (файлов, данных, документов), при этом слишком большое доверие оказывается этим данным, и на стороне сервера не проводится проверка, подтверждающая, что запрошенный объект принадлежит пользователю, который его запрашивает.

Вопрос: Что означает аббревиатура IDOR?

Ответ: Insecure Direct Object Reference

2. Пример IDOR

Представьте, что вы только что зарегистрировались в онлайн-сервисе и хотите изменить информацию своего профиля. Вы переходите по ссылке http ://online-service.thm/profile ? user_id =1305 и видите свою информацию.

Любопытство берет верх, и вы пытаетесь изменить значение user_id на 1000 ( http ://online-service.thm/profile ? user_id =1000), и, к вашему удивлению, теперь видите информацию другого пользователя. Вы обнаружили уязвимость IDOR ! В идеале на веб-сайте должна быть проверка, подтверждающая, что информация о пользователе принадлежит пользователю, который её запрашивает.

Используя полученные знания, нажмите кнопку «Просмотреть сайт» и попробуйте получить флаг, обнаружив и используя уязвимость IDOR .

Вопрос: Что представляет собой флаг с сайта IDOR (Intelligence, Detroit, Service)?

Ответ: THM{IDOR-VULN-FOUND}

3. Поиск IDOR в закодированных идентификаторах

Закодированные идентификаторы

При передаче данных между страницами, будь то POST-запросы, параметры запроса или cookie-файлы, веб-разработчики часто сначала берут исходные данные и кодируют их. Кодирование гарантирует, что принимающий веб-сервер сможет понять содержимое. Кодирование преобразует двоичные данные в строку ASCII, обычно используя a-z, A-Z, 0-9 and = символ для заполнения. Наиболее распространенный метод кодирования в интернете — кодирование base64, и его обычно довольно легко обнаружить. Вы можете использовать такие веб-сайты, как https://www.base64decode.org/ , для декодирования строки, затем отредактировать данные и повторно закодировать их с помощью https://www.base64encode.org/ , а затем повторно отправить веб-запрос, чтобы проверить, изменилось ли что-нибудь в ответе.

См. изображение ниже в качестве графического примера этого процесса:

Вопрос: Какой тип кодировки чаще всего используется на веб-сайтах?

Ответ: base64

4. Поиск IDOR в хешированных идентификаторах

Хэшированные идентификаторы

Хэшированные идентификаторы немного сложнее в обработке, чем закодированные, но они могут следовать предсказуемому шаблону, например, являясь хэшированной версией целочисленного значения. Например, идентификатор 123 станет 202cb962ac59075b964b07152d234b70, если используется хэширование MD5 .

Стоит проверить все обнаруженные хеши с помощью веб-сервиса, такого как https://crackstation.net/ (который содержит базу данных из миллиардов результатов преобразования хешей в значения), чтобы посмотреть, сможем ли мы найти какие-либо совпадения.

Вопрос: Какой распространенный алгоритм используется для хеширования идентификаторов?

Ответ: md5

5. Поиск IDOR в непредсказуемых ID

Непредсказуемые идентификаторы

Если идентификатор не удается обнаружить с помощью описанных выше методов, отличным способом обнаружения уязвимости IDOR является создание двух учетных записей и обмен идентификационными номерами между ними. Если вы можете просматривать контент других пользователей, используя их идентификационный номер, оставаясь при этом авторизованным под другой учетной записью (или вообще не авторизованным), вы обнаружили действительную уязвимость IDOR .

Вопрос: Какое минимальное количество учетных записей необходимо создать для проверки наличия расхождений между учетными записями?

Ответ: 2

6. Где расположены IDOR?

Где они расположены?

Уязвимой точкой, на которую вы нацеливаетесь, может быть не только то, что вы видите в адресной строке. Это может быть контент, загружаемый вашим браузером через AJAX-запрос, или что-то, на что вы находите ссылки в JavaScript-файле.

Иногда в конечных точках может содержаться неиспользуемый параметр, который мог оказаться полезным во время разработки и был перенесен в рабочую среду. Например, вы можете заметить вызов /user/details , отображающий информацию о вашем пользователе (аутентифицированном через вашу сессию). Но с помощью атаки, известной как «параметрический майнинг», вы обнаруживаете параметр user_id , который можно использовать для отображения информации о других пользователях, например, /user/details?user_id=123 .

7. Практический пример IDOR

Для начала нажмите кнопку «Запустить компьютер» ; после запуска перейдите по ссылке ниже и откройте её в новой вкладке браузера:

https://LAB_WEB_URL.p.thmlabs.com

Для начала вам нужно войти в систему. Для этого перейдите в раздел «Клиенты» и создайте учетную запись. После входа в систему перейдите на вкладку «Ваша учетная запись» .

Регаем аккаунт

admin123

admin123

В разделе «Ваш аккаунт» вы можете изменить свою информацию, такую ​​как имя пользователя, адрес электронной почты и пароль. Вы заметите, что поля «Имя пользователя» и «Адрес электронной почты» предварительно заполнены вашими данными.

Начнём с того, как эта информация заполняется автоматически. Если вы откроете инструменты разработчика в браузере, выберете вкладку «Сеть», а затем обновите страницу, вы увидите вызов конечной точки с путем / api /v1/customer?id= {user_id}.

Эта страница возвращает в формате JSON ваш идентификатор пользователя, имя пользователя и адрес электронной почты. Из пути видно, что отображаемая информация о пользователе берется из параметра id в строке запроса (см. изображение ниже).

Вы можете проверить этот параметр id на наличие уязвимости IDOR , изменив id на идентификатор другого пользователя. Попробуйте выбрать пользователей с ID 1 и 3, а затем ответьте на вопросы ниже.

id 1

username "adam84"

email "adam-84@fakemail.thm"

id 3

username "john911"

email "j@fakemail.thm"

Вопрос: Какое имя пользователя у пользователя с идентификатором 1?

Ответ: adam84

Вопрос: Какой адрес электронной почты у пользователя с идентификатором 3?

Ответ: j@fakemail.thm


Основная группа обучения ИБ
Lab-группу с полезным софтом / книгами / аудио.
Чат для обсуждений, задавай свои вопросы.
P.S. С вами был @Fnay_Offensive
До новой встречи, user_name!