Найти в Дзене

Тестирование SQL Injection с Burp Suite

Оглавление

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 - справочник тестировщика

Пишите в комментариях какой пункт было бы интересно рассмотреть более подробно.

Обязательно прочитайте: Что должен знать и уметь тестировщик

Также будет интересно почитать: Вопросы которые задают на собеседовании тестировщикам