Одна из наиболее критических уязвимостей, перечисленных в топ-10 OWASP, это уязвимость IDOR ( Insecure Direct Object Reference). В статье поговорим об уязвимости IDOR и разберемся, как злоумышленник эксплуатируя уязвимости Broken Authentication может выполнить атаку IDOR.
Еще по теме: Уязвимость IDOR на примере bWAPP
Что такое уязвимость IDOR
Аутентификация — проверка личности пользователя и предоставление этому пользователю доступа к определенным запросам, если пользователь аутентифицирован. Но если пользователь не аутентифицирован и может просматривать файлы, то есть открывать файлы неправильным образом, это называется Broken Authentication (нарушенная аутентификация).
В веб-приложении, когда пользователь генерирует, отправляет или получает запрос с сервера, существуют некоторые HTTP-параметры, такие как « id», « uid», « pid» и т. д., которым пользователь был назначен уникальные значения. Злоумышленник может видеть такие значения параметров в кукисах, заголовках или захваченных пакетах Wi-Fi. С помощью этого злоумышленник может изменять эти значения, и такие изменения могут привести к IDOR.
Некоторые примеры, демонстрирующие ненадежные данные, которые можно изменять с помощью IDOR:
1 2 3 4 |
www.xyz.com/myaccount/uid=12 www.xyz.com/myaccount/uid=14 www.xyz.com/myaccount/uid=15 www.xyz.com/myaccount/uid=19 |
Здесь мы видим, что uid в урле кажется уязвимым и может быть изменен злоумышленником для обхода аутентификации.
Статья в образовательных целях и предназначена для обучения этичных хакеров. Баг Баунти — это программа, которую владелец сайта (web-приложения) проводит для привлечения сторонних специалистов к поиску уязвимостей. При участии в программе Bug Bounty нужно действовать этично и придерживаться установленных правил. Не забывайте, что несанкционированный взлом является незаконным и расценивается, как уголовное преступление.
Типы IDOR
Существует различные виды IDOR:
- Directory Traversal — также известна как атака Path Traversal, при которой злоумышленник может получить доступ к файлам и папкам. Если в веб-приложении существует уязвимость Directory Traversal, злоумышленник сможет просматривать некоторые чувствительные файлы или папки, такие как изображения, темы, скрипты и т. д.
- URL Tampering — это изменение значения параметра в URL-адресе. Например, предположим, что есть URL-адрес примера, который выглядит примерно так: http://example.com/category/photos_id=1. В этом параметре мы имеем разрешение на просмотр данных с ID « 1». Но если мы изменим значение с 1 на 2, например, http://example.com/category/photos_id=2, и если мы сможем просматривать данные этого конкретного урла, это будет URL Tampering.
- Cookie ID Manipulation — манипуляция с кукисами. Обычно кукисы используются для хранения и обмена данных между клиентом и сервером. Это помогает идентифицировать конкретных пользователей. В таких случаях, если существует уязвимость IDOR, может появиться возможность изменить идентификатор cookie. Например, в веб-приложении есть идентификатор cookie, который может выглядеть так: _gid=123456, который относится к пользователю A, и другой идентификатор cookie _gid=789012, который относится к пользователю B. Таким образом, если пользователь A может изменить значение _gid и заменить идентификатор пользователя B, и просматривать информацию, которая принадлежит пользователю B, тогда это IDOR.
Давайте сначала рассмотрим работу веб-приложения с неаутентифицированным доступом к SQL, что приводит к доступу к информации учетных записей пользователей.
1 2 3 4 |
String query = "SELECT * FROM accts WHERE account = ?"; PreparedStatement pstmt = connection.prepareStatement(query, ... ); pstmt.setString(1, request.getParameter("acct")); ResultSet results = pstmt.executeQuery(); |
В приведенном выше коде злоумышленник изменит параметр accts в веб-приложении и сможет ввести несколько номеров счетов для получения информации.
Выполнение атаки IDOR
Теперь давайте рассмотрим IDOR на практике. Для демонстрации нам понадобиться инструмент Burp Suite.
Шаг 1: Перейдите на сайт portswigger.net.
Шаг 2: После входа в систему перейдите на страницу access lab.
Шаг 3: Теперь нажмите на Live chat. Вы увидите, что чатбот подключен. Теперь просто отправьте ему произвольный текст.
Шаг 4: Теперь откройте Burp Suite и захватите запрос для просмотра транскрипции.
Шаг 5: В Burp Suite перейдите на вкладку HTTP history и щелкните по захваченному запросу на скачивание транскрипции.
Шаг 6: Теперь отправьте запрос в Repeater и нажмите Send. Вы увидите свои данные чата.
Шаг 7: Обратите внимание на адрес после параметра GET, там написано 4.txt. Изменим значение на 1.txt и посмотрим, что произойдет.
Шаг 8: Теперь, если вы обратите внимание на выделенный текст во вкладке ответа, там видны пароли. Давайте войдем на сайт, используя этот пароль, и посмотрим, сможем ли мы получить доступ к этому пользователю.
Мы получили доступ и успешно изменили адрес электронной почты.
Устранение уязвимости IDOR
- Избегайте отображения приватных объектных ссылок, таких как ключи или имена файлов.
- Параметры должны быть правильно проверены на валидность.
- Должна выполняться проверка всех ссылочных объектов.
- Токены должны быть сгенерированы таким образом, чтобы они были связаны только с пользователем и не являлись общедоступными.
- Используйте случайные идентификаторы, чтобы их было сложнее угадать.
- Проверка пользовательского ввода должна быть правильно реализована.
ПОЛЕЗНЫЕ ССЫЛКИ:
- Автоматизация атак в Burp Suite
- Уязвимости в сервисах совместной разработки
- Взлом веб-приложения с помощью брута Burp Suite