Тестирование на IDOR-уязвимости |
14.02.2019 00:00 |
Автор: Кристин Джеквони (Kristin Jackvony) Сегодня мы узнаем, как тестировать на наличие IDOR. IDOR расшифровывается как Insecure Direct Object Reference (небезопасные прямые ссылки на объекты) и подразумевает ситуацию, когда пользователь может успешно получить доступ к странице, данным или файлу, доступа к которым у него быть не должно. Мы обсудим четыре способа, которыми эта уязвимость проявляется, а затем поэксплуатируем ее в тестовом приложении, используя инструменты разработчика Chrome и Postman. Простой способ поискать IDOR – это взглянуть на параметр URL. Допустим, вы клиент онлайн-банка – очень, очень небезопасного банка. Когда вы хотите зайти в учетку, вы авторизуетесь и перемещаетесь на этот адрес: http://mybank/customer/27. Разглядывая URL, можно отметить, что вы – пользователь номер 27. Что будет, если вы измените URL на http://mybank/customer/28? Если вы при этом увидите данные клиента 28, то вы определенно наткнулись на IDOR! Другой легкий способ поискать IDOR – это параметр запроса. Допустим, вас зовут Джон Смит, и вы работаете в компании, которая проводит ежегодное ревью своих сотрудников. Свое ревью вы можете посмотреть, перейдя на http://mycompany/reviews?employee=jsmith. Вам крайне интересно, получила ли ваша коллега, Эми Джонс, ревью получше вашего. Вы меняете URL на http://mycompany/reviews?employee=ajones, и вуаля! У вас есть доступ к ревью Эми. Третий путь поиска IDOR – это попытка пробраться на страницу, к которой у вашего пользователя в норме не должно быть доступа. Если у вашего сайта есть админ-панель, доступная по URL http://mywebsite/admin, которая в норме доступна через меню и видна там, только если у пользователя есть администраторские права, посмотрите, что будет, если авторизоваться обычным пользователем, а затем вручную изменить URL на URL админ-панели. Если вы можете открыть админ-панель, вы нашли IDOR. И, наконец, IDOR-уязвимость может выглядеть как доступ к файлам, к которым у пользователя не должно быть доступа. Допустим, на вашем сайте есть файл userlist.txt с именами и адресами ваших пользователей. Если вы можете авторизоваться как обычный пользователь, а затем успешно перейти на http://mywebsite/files?file=userlist.txt, то ваши файлы не защищены. Давайте посмотрим на IDOR в действии, используя Postman, инструменты разработчика Chrome и прелестный сайт OWASP Juice Shop! OWASP Juice Shop – это приложение, созданное Бьорном Кимминихом для демонстрации наиболее распространенных уязвимостей безопасности. Его можно скачать и запустить локально, зайдя сюда: https://github.com/bkimminich/juice-shop, или, как вариант, получить к нему доступ виртуально: https://juice-shop.herokuapp.com. В рамках этой статьи мы воспользуемся второй ссылкой. Перейдя на сайт через Chrome, создайте для себя логин. Нажмите на кнопку Login слева сверху, а затем на ссылку "Not yet a customer?". Вы можете использовать любую почту и пароль для регистрации (не пользуйтесь реальными!) Авторизуйтесь как новый пользователь, а затем нажмите на любой сок на странице поиска, чтобы добавить его в корзину. Прежде чем смотреть в свою корзину, откройте инструменты разработчика Chrome, нажав на многоточие в правом верхнем углу браузера. Выберите "Дополнительные инструменты", а затем – "Инструменты разработчика". Справа или снизу откроется новое окно. В его навигационной панели вы должны увидеть вкладку "Сеть". Нажмите туда. Этот инструмент отображает все сетевые запросы, сделанные вашим браузером. Кликните на ссылку "Your Basket" в правом верхнем углу страницы Juice Shop. Вы переместитесь в вашу корзину и увидите ранее добавленный сок. Взгляните на секцию "Сеть" в инструментах разработчика. Запрос, который вам нужен, назван просто номером, к примеру, 6 или 7. Нажмите на него, и вы увидите, что URL этого запроса - https://juice-shop.herokuapp.com/rest/basket/<id_вашей_учетки>, а тип запроса – GET. Проскролльте чуть ниже, и вы увидите, что в заголовках запроса авторизация установлена на Bearer, а затем идет длинная строка букв и цифр. Это токен авторизации. Скопируйте из токена все, включая слово Bearer. Теперь перейдем в Postman. Нажмите на плюсик, чтобы создать новый запрос – он должен быть установлен на GET по умолчанию. Введите https://juice-shop.herokuapp.com/rest/basket/<ваш_Id> в поле URL. Теперь перейдите в секцию Headers, и под секцией Key напишите Authorization, а в Value – вставьте строку, которую вы скопировали. Нажмите "Send", и если все сделано верно, в ответе вы увидите вашу корзину. А теперь – танцы! Измените ID учетной записи на другое число, что-нибудь между 1 и 5, и нажмите "Send". Вы увидите содержимое чьей-то чужой корзины! Поздравляю! Вы нашли уязвимость IDOR! |