SQL Injection (SQLi) — это уязвимость безопасности, которая возникает, когда злоумышленник может вставить произвольный SQL-код в запрос к базе данных. Это возможно, если пользовательский ввод не проверяется или не фильтруется, что позволяет злоумышленнику манипулировать запросами и получать несанкционированный доступ к данным.
SQL-инъекции могут привести к различным последствиям, включая:
- Получение несанкционированного доступа к данным.
- Изменение данных.
- Удаление данных.
- Выполнение административных операций с базой данных.
Этапы тестирования SQL-инъекций с помощью Burp Suite:
1. Перехват запросов с помощью Burp Proxy
Burp Proxy — это основная функция Burp Suite, которая позволяет перехватывать и модифицировать HTTP/HTTPS-запросы между браузером и сервером.
1.1. Настройка прокси: Настройте браузер на использование прокси Burp Suite. Для этого в браузере укажите прокси-сервер, который использует Burp (по умолчанию это 127.0.0.1:8080).
1.2. Перехват запросов: Включите режим перехвата запросов в Burp. Перехватите запрос, который отправляется на сервер при взаимодействии с веб-приложением (например, при отправке формы поиска).
1.3. Модификация параметров: Найдите параметры запроса, которые могут быть потенциально уязвимыми для SQL-инъекций (GET, POST параметры, или данные в заголовках).
2. Ручное тестирование на SQL-инъекции
На начальном этапе можно попытаться выявить уязвимость вручную, добавляя в параметры потенциально вредоносные SQL-запросы.
Примеры простых тестов:
- ' OR '1'='1
- ' OR '1'='1' --
- ' OR '1'='1' #
- admin' --
- admin' #
После вставки подобных строк в параметры запроса отправьте запрос на сервер и посмотрите, как веб-приложение реагирует. Если вы видите странные ошибки базы данных, неожиданные результаты или даже успешный вход в систему без правильных учетных данных, это может указывать на уязвимость.
3. Использование Burp Scanner
Burp Suite Professional предлагает встроенный сканер уязвимостей — Burp Scanner, который может автоматически находить уязвимости, включая SQL-инъекции.
3.1. Запуск сканера:
Перейдите на вкладку "Target", выберите нужную цель (URL или домен).
Щелкните правой кнопкой мыши и выберите "Scan".
Burp Scanner начнёт автоматически просматривать запросы и проверять их на наличие типичных уязвимостей, включая SQL-инъекции.
3.2. Анализ результатов:
После завершения сканирования результаты будут отображены на вкладке "Issues". Если сканер обнаружит SQL-инъекцию, она будет выделена, и вы сможете увидеть детальный отчёт с информацией о том, где и как была найдена уязвимость.
4. Автоматизация тестирования с Burp Intruder
Burp Intruder — это инструмент для автоматизированного перебора значений параметров. Его можно использовать для более глубокого тестирования SQL-инъекций.
4.1. Настройка Intruder:
Перехватите запрос, который хотите протестировать.
Отправьте его в Intruder (правый клик на запросе -> "Send to Intruder").
4.2. Выбор места для атаки:
На вкладке "Positions" выберите параметры, которые будут изменяться во время атаки. Например, это может быть значение поля формы или параметр в строке запроса.
Burp автоматически выделяет потенциально изменяемые части запроса с помощью символов §. Вы можете вручную настраивать эти позиции.
4.3. Выбор атаки:
На вкладке "Payloads" выберите тип атаки. Для SQL-инъекций можно использовать предустановленный набор полезных нагрузок (payloads) или загрузить собственный список.
Например, можно использовать такие полезные нагрузки, как ' OR '1'='1, ' --, и другие.
4.4. Запуск атаки:
Запустите Intruder, и он начнёт отправлять модифицированные запросы на сервер и анализировать ответы. Сравните ответы для различных инъекций, чтобы найти потенциальные уязвимости.
5. Использование Burp Repeater
Burp Repeater — это инструмент для повторного выполнения запросов с изменёнными параметрами.
5.1. Отправка запроса в Repeater:
Перехватите нужный запрос с помощью Burp Proxy и отправьте его в Repeater (правый клик на запросе -> "Send to Repeater").
5.2. Изменение запроса:
На вкладке Repeater модифицируйте параметры запроса вручную, добавляя различные SQL-инъекции.
5.3. Анализ ответов:
Нажмите кнопку "Send" и посмотрите на ответ сервера. Если сервер возвращает ошибки базы данных, странные результаты или другие аномалии, это может указывать на успешную SQL-инъекцию.
6. Анализ ошибок и ответов сервера
При тестировании SQL-инъекций важно обратить внимание на следующие признаки, которые могут указывать на уязвимость:
- Ошибки базы данных (например, SQL syntax error, Unclosed quotation mark, Unknown column).
- Изменённые или неожиданные данные в ответе.
- Успешный вход в систему без правильных учётных данных.
- Неожиданные изменения в поведении приложения.
7. Тестирование различных типов SQL-инъекций
Существует несколько видов SQL-инъекций, которые можно тестировать с помощью Burp Suite:
- Простые SQL-инъекции (In-band): Когда результат инъекции виден прямо в ответе приложения.
- Слепые SQL-инъекции (Blind): Когда приложение не отображает результат инъекции напрямую. В таких случаях можно использовать временные задержки (вызов функций SLEEP() или BENCHMARK() в SQL-запросах) для определения уязвимости.
Пример для временной слепой инъекции:
' OR IF(1=1, SLEEP(5), 0) --1
Если сервер задерживает ответ на 5 секунд, это может указывать на успешную инъекцию.
- Внеполосные SQL-инъекции (Out-of-Band): Когда результат инъекции отправляется на внешний сервер.
Подробнее про Out-of-Band инъекции читайте в статье Внеполосные SQL-инъекции (Out-of-Band SQL Injection). Как защититься?
8. Фильтрация и обход защиты
Иногда веб-приложения используют фильтры для предотвращения инъекций. Однако такие фильтры часто можно обойти. Вот несколько методов, которые можно использовать:
- Кодирование символов:
Использование URL-кодирования, чтобы обойти фильтры (например,
замена ' на %27).
- Использование комментариев:
Некоторые фильтры могут не учитывать комментарии в SQL-запросах. Пример: 1'/**/OR/**/'1'/**/='1.
- Использование альтернативных синтаксисов:
Например, использование функций вместо обычных логических операторов: AND 1=1 можно заменить на AND 1 LIKE 1.
Заключение
Burp Suite — это мощный и гибкий инструмент для тестирования на уязвимости, такие как SQL-инъекции. С его помощью можно как вручную, так и автоматически находить и эксплуатировать уязвимости в веб-приложениях. Однако важно помнить, что тестирование на уязвимости должно проводиться только на тех системах, для которых у вас есть разрешение, так как несанкционированные тесты могут быть незаконными.
Вместо оглавления. Что вы найдете на канале QA Helper - справочник тестировщика?
Не забудьте подписаться на канал, чтобы не пропустить полезную информацию: QA Helper - справочник тестировщика
Пишите в комментариях какой пункт было бы интересно рассмотреть более подробно.
Обязательно прочитайте: Что должен знать и уметь тестировщик
Также будет интересно почитать: Вопросы которые задают на собеседовании тестировщикам