Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лр3

.docx
Скачиваний:
32
Добавлен:
11.12.2020
Размер:
229.93 Кб
Скачать

ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ

Ордена Трудового Красного Знамени федеральное

государственное бюджетное образовательное

учреждение высшего образования

Московский технический университет

связи и информатики

──────────────────────────────────────

Кафедра информационной безопасности

ЛАБОРАТОРНАЯ РАБОТА № 3

«Исследование способов защиты баз данных от атак методом внедрения SQL-кода»

по дисциплине

«Системы обнаружения вторжений в компьютерные сети»

Выполнил:

Москва, 2020

  1. Цель работы:

Изучение основных способов проведения атак на базы данных методом внедрения SQL-кода, а также способов их предотвращения. Используя методику встраивания SQL-кода найти 4 уязвимости, которые позволят получить пароль определённого пользователя, пароль администратора, секретный документ из таблицы «docs», а также добавить в таблицу «users» нового администратора.

  1. Выполнение лабораторной работы:

Для обхода процесса аутентификации можно воспользоваться модификацией запроса для поля «pass» добавив в строку «’ OR 1=1 --» указав какой-либо «Login (ID)». Данный модификатор добавляет дополнительное условие в SQL-запрос которое идентифицирует пароль как «True». На рисунке 1 отображен результат SQL- injection

Рис.1 Изображение, демонстрирующее обход процесса аутентификации.

Для того чтобы прочитать чужой документ можно использовать оператор «UNION» так как на странице имеется уязвимость SQL-injection через «GET» запрос сайта «http://localhost:8081/web/sqlinj/user/doc.do?id=1». Оператор «UNION» позволяет объединять результаты нескольких запросов. Добавив в значение «id = -1 UNION SELECT id, text FROM DOCS Where id = 5 --» можно прочесть документ, к которому у активированного пользователя нет доступа. На рисунке 2 изображено выполнение команды.

Рис. 2 Демонстрация выполнения SQL-инъекции для чтения чужого документа.

Для получения пароля администратора можно воспользоваться уязвимостью на этой же странице и выполнить запрос на чтения пароля по роли пользователя «UNION SELECT 1, pass FROM users WHERE role = ‘admin’ --». На рисунке 3 изображена работа запроса.

Рис. 3 Получение пароля администратора.

С помощью этой же страницы можно выполнить запрос на добавления нового пользователя с ролью «admin» добавив в строку «id=1; insert into users values (250, 'TestName', 'Test', 'Test123', 'admin') --». На рисунке 4 изображено выполнение запроса на добавление нового администратора.

Рис. 4 Добавление нового администратора.

Вывод: В данной работе были получены теоретические и практические навыки по проведению основных атак на базы данных методом внедрения SQL-кода. Используя методику встраивания SQL-кода найдены 4 уязвимости, которые позволят обойти форму аутентификации, прочитать секретный документ из таблицы «docs», получить пароль администратора, а также добавить в таблицу «users» нового администратора.

  1. Контрольные вопросы:

  1. Что такое SQL injection?

Внедрение SQL-кода (SQL injection) – один из способов взлома баз данных путём манипуляций с запросами. Данный метод часто используется для взлома сайтов и программ.

  1. Для чего используется оператор UNION? Как он может быть использован злоумышленником?

Язык SQL позволяет объединять результаты нескольких запросов используя оператор «UNION», пример запроса «SELECT name, lastname FROM users WHERE id=-1 UNION SELECT login, null FROM admins». Так как первый запрос не вернёт никого ответа (пользователя с id = -1 не существует), то вернётся результат второго запроса: «SELECT login, null FROM admins».

  1. Что такое экранирование хвоста запроса?

Экранирование конца запроса представляет собой использование символов комментария (-- или /*), которые позволяют отбросить часть запроса.

  1. Для чего может быть использован символ точка с запятой в SQL запросах?

Символ точка с запятой используется в языке SQL для разделения команд в одном запросе. Расщепление SQL-запроса методика, которая позволяет злоумышленнику выполнить несанкционированные действия при передаче параметров.

  1. Для чего используется фильтрация параметров?

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

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

Использование параметризованных запросов позволяет кэшировать SQL запросы пользователя и обеспечивать защиту от SQL-инъекций путём автоматического преобразования.

  1. Какие методы защиты от атак типа внедрения SQL-кода Вы знаете?

Фильтрация строковых параметров, усечение входных параметров, использование параметризованных запросов.

Список литературы.

  1. SQL injection для начинающих. Часть 1. URL: https://habr.com/ru/post/148151/

  2. SQL Injection. URL: https://www.w3schools.com/sql/sql_injection.asp

  3. Внедрение SQL-кода. URL: https://ru.wikipedia.org/wiki/Внедрение_SQL-кода

  4. Практикум по дисциплине СИСТЕМЫ ОБНАРУЖЕНИЯ ВТОРЖЕНИЙ В КОМПЬЮТЕРНЫЕ СЕТИ (для студентов направлений подготовки 11.04.02, 09.04.01)

Соседние файлы в предмете Системы обнаружения вторжений в компьютерные сети