Пришлите ответы на вопросы в личном кабинете на сайте netology.ru.
Вы рассмотрите проект OWASP Juice Shop, входящий в Vulnerable Web Applications Directory.
Для запуска иcпользуйте docker-compose.yml
:
version: '3.7'
services:
shop:
image: bkimminich/juice-shop
ports:
- 3000:3000
Приложение запустится на порту 3000. Вам нужно открыть localhost:3000
в браузере и выбрать русский язык.
В боковой панели выберете «Помогите начать работу».
- Перейдите на страницу логина.
- Используя ваши знания об SQLi, попробуйте войти в систему.
Часто при работе с СУБД возникают ошибки из-за некорректно составленных SQL-запросов, превышения лимита подключений, проблем с фиксацией транзакций и т. д. Эти ошибки пробрасываются из СУБД в само приложение, которое логгирует их, то есть записывает в лог-файл. Это позволяет программистам проводить анализ случившегося и быстрее исправлять ошибки. Часто для удобства на этапе разработки эти сообщения выводятся не только в лог-файл, но и дублируются в ответе, возвращаемом сервером по HTTP. Так они могут просачиваться в Production, если кто-то забыл отключить эту функцию.
То же самое будет происходить при подборе данных для SQLi — возникнет ошибка, которая может просочиться к вам в виде HTTP-ответа. Тогда вы не вслепую будете подбирать данные. Откройте инструменты разработчика браузера (F12
) и внимательно посмотрите на то, какие ответы на ваш запрос возвращает сервер при нажатии на кнопку «Войти в систему».
Проанализируйте, под каким пользователем вам удалось войти, ваши предположения о том, почему удалось войти именно под этим пользователем.
Подсказка
Для этого нужно:
- Проверить хранилища — Cookie, LocalStorage, SessionStorage — на предмет хранения аутентификационной информации.
- Посмотреть на данные, передаваемые в запросах — Headers.
- Посмотреть на данные, возвращаемые в ответах после аутентификации.
В качестве решения пришлите:
- Использованные для ввода данные.
- Под каким пользователем вам удалось войти.
- Ваши предположения, почему удалось войти именно под этим пользователем.
- Где хранится аутентификационная информация, что она из себя представляет и как передаётся в каждом запросе.
Прочитайте информацию о файле robots.txt
и его описание.
Почитайте статьи на тему корректной настройки robots.txt и использование robots.txt при тестировании безопасности сайта:
Проанализируйте целевой сервис на предмет корректности использования robots.txt
.
Пришлите ваш вывод, корректно ли используется robots.txt
. Если нет, то почему и к каким последствиям это ведёт.
После успешной эксплуатации SQL-инъекции вы войдёте от имени администратора магазина. Чтобы узнать почту пользователя, обратите внимание на запрос http://localhost:3000/rest/user/whoami
. В ответе получите почтовый ящик администратора. Попробуйте проверить на прочность систему — подобрать пароль администратора.
Чтобы подобрать пароль, нужен инструмент для выполнения большого количества запросов. Конечно, можно написать скрипт, но рекомендуется использовать прокси Zed Attack Proxy или Burp Suite.
- Перейдите на страницу логина.
-
Введите почту администратора и случайный пароль. Получите запрос для аутентификации.
-
Отправьте запрос в Intruder (Burp) или «Запуск Фаззинга» (ZAP). Выберите в качестве перебираемого параметра пароль. Используйте списки с самыми популярными паролями. Запустите перебор, найдите искомый пароль.
Пришлите пароль, который стоял у администратора. Объясните, какие меры позволили бы защититься от атаки.