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

Что такое IDOR?
IDOR расшифровывается как Insecure Direct Object Reference и является типом уязвимости контроля доступа.
Этот тип уязвимости может возникнуть, когда веб-сервер получает данные, предоставленные пользователем, для получения объектов (файлов, данных, документов). При этом входным данным оказывается слишком большое доверие, и они не проверяются на серверной стороне, чтобы подтвердить, что запрашиваемый объект принадлежит пользователю, который его запрашивает.
Пример IDOR
Представьте, что вы только что зарегистрировались в онлайн-сервисе и хотите изменить информацию в своём профиле. Ссылка, по которой вы переходите, ведёт на http://online-service.thm/profile?user_id=1305, и вы видите свою информацию.
Любопытство берёт верх, и вы пробуете изменить значение user_id на 1000 (http://online-service.thm/profile?user_id=1000), и, к вашему удивлению, вы теперь видите информацию другого пользователя. Таким образом, вы обнаружили уязвимость IDOR.
В идеале на сайте должна существовать проверка, подтверждающая, что информация пользователя принадлежит тому пользователю, который в данный момент вошёл в систему.
Используя всё, что вы узнали выше, нажмите кнопку View Site и попробуйте получить флаг, обнаружив и эксплуатировав уязвимость IDOR.
Мы видим 4 адреса электронной почты.
Давайте выясним, для какого из них мы можем использовать эту уязвимость:
Попробуйте изменить номер заказа на 1000:
И мы получаем флаг:
Вопрос:
Какой флаг используется на сайте с примером IDOR?
Ответ:
1
THM{IDOR-VULN-FOUND}
Поиск IDOR в закодированных идентификаторах
Закодированные идентификаторы
При передаче данных со страницы на страницу — будь то POST-данные, параметры строки запроса или cookies — веб-разработчики часто сначала берут исходные данные и кодируют их. Кодирование гарантирует, что принимающий веб-сервер сможет корректно понять содержимое. Кодирование преобразует двоичные данные в строку ASCII, обычно используя символы a-z, A-Z, 0-9 и = для заполнения. Самый распространённый метод кодирования в вебе — это base64. Его обычно довольно легко распознать.
Вы можете использовать такие сайты, как https://www.base64encode.org/, чтобы декодировать строку, затем изменить данные и закодировать их снова, после чего повторно отправить веб-запрос и проверить, изменился ли ответ.
Ответ:
1
base64
Поиск IDOR в хешированных идентификаторах
Хешированные идентификаторы
Хешированные идентификаторы немного сложнее в анализе, чем закодированные, однако они могут следовать предсказуемому шаблону, например быть хеш-версией целочисленного значения. Например, идентификатор 123 превратится в 202cb962ac59075b964b07152d234b70, если используется хеширование md5.
Стоит проверять любые найденные хеши с помощью таких сервисов, как https://crackstation.net/, чтобы попытаться найти совпадения.
Ответ:
1
base64
Поиск IDOR в непредсказуемых идентификаторах
Непредсказуемые идентификаторы
Если идентификатор не удаётся обнаружить с помощью описанных выше методов, отличным способом обнаружения IDOR является создание двух аккаунтов и подмена ID между ними. Если вы можете просматривать контент другого пользователя, используя его ID, оставаясь при этом вошедшим под другим аккаунтом (или даже вовсе без авторизации), значит вы нашли реальную уязвимость IDOR.
Ответ:
1
2
Где они находятся?
Уязвимая конечная точка не всегда отображается в адресной строке браузера. Это может быть контент, загружаемый через AJAX-запрос, или ссылка, найденная в JavaScript-файле.
Иногда конечные точки могут содержать неиспользуемый параметр, оставшийся со стадии разработки. Например, вы можете заметить запрос к /user/details, который отображает вашу информацию, но через parameter mining обнаружить параметр user_id, позволяющий просматривать данные других пользователей, например /user/details?user_id=123.
Ответ:
1
Ответ не требуется
Практический пример IDOR
Нажмите кнопку Start Machine и после запуска откройте сайт в новой вкладке браузера:
https://WEBSITE_IP.p.thmlabs.com
Сначала войдите в систему: перейдите в раздел клиента и создайте аккаунт. После входа нажмите вкладку Your Account.
В этом разделе можно изменить имя пользователя, email и пароль. Поля имени пользователя и email уже заполнены вашими данными.
Откройте инструменты разработчика, вкладку Network, затем обновите страницу. Вы увидите запрос:
/api/v1/customer?id={user_id}
Ответ приходит в формате JSON и содержит user id, имя пользователя и email. Видно, что данные берутся из параметра id строки запроса.
Измените имя пользователя и нажмите update:
Кликните правой кнопкой мыши и выберите Edit and Resend:
Измените ID на 1 и нажмите Send:
Теперь отображается другой пользователь:
Ответ:
1
adam84
Повторите то же самое для ID 3:
Ответ:
1
j@fakemail.thm









