Интеграция sqlmap с прокси, таким как Burp Suite

Kali LinuxBeginner
Практиковаться сейчас

Введение

В этой лабораторной работе вы научитесь интегрировать sqlmap, мощный инструмент для тестирования на проникновение с открытым исходным кодом, который автоматизирует процесс обнаружения и эксплуатации уязвимостей SQL-инъекций, с перехватывающим прокси, таким как Burp Suite.

Использование прокси с sqlmap является важнейшим навыком для специалистов по безопасности. Это позволяет вам видеть точные полезные нагрузки, которые отправляет sqlmap, понимать его логику тестирования, отлаживать потенциальные проблемы и даже изменять запросы на лету. Такая видимость бесценна как для изучения принципов работы атак SQL-инъекций, так и для проведения более продвинутых, индивидуальных оценок безопасности.

К концу этой лабораторной работы вы сможете направлять трафик sqlmap через Burp Suite, наблюдать за сгенерированными запросами и анализировать автоматизированные шаблоны атак.

Настройка Burp Suite для прослушивания локального порта

На этом шаге вы запустите Burp Suite и убедитесь, что его прокси-слушатель активен. Burp Suite действует как веб-прокси-сервер, выступая в роли посредника (man-in-the-middle) между вашим браузером (или в данном случае, sqlmap) и целевым приложением. По умолчанию он прослушивает входящие соединения на порту 8080 локальной машины (127.0.0.1).

Сначала запустим Burp Suite. Вы можете найти его в меню приложений.

  1. Нажмите на Меню приложений (значок в верхнем левом углу экрана).
  2. Перейдите в Web -> Burp Suite Community Edition.
  3. Появится диалоговое окно. Вы можете оставить настройки по умолчанию и нажать Next.
  4. В другом диалоговом окне вам будет предложено выбрать проект. Выберите Use Burp defaults и нажмите Start Burp.

После загрузки Burp Suite вам нужно проверить его настройки прокси.

  1. Нажмите на вкладку Proxy.
  2. Нажмите на подвкладку Options внутри вкладки Proxy.
  3. Найдите раздел "Proxy Listeners". Вы должны увидеть запись с интерфейсом 127.0.0.1:8080 и отмеченным флажком "Running".

Это подтверждает, что Burp Suite активно прослушивает трафик на локальном порту 8080. Любое приложение, настроенное на отправку трафика на этот адрес и порт, будет перехватывать и регистрировать свои запросы с помощью Burp Suite.

Настройка sqlmap для использования прокси с помощью --proxy=http://127.0.0.1:8080

На этом шаге вы научитесь указывать sqlmap отправлять сетевой трафик через настроенный нами прокси Burp Suite.

sqlmap предоставляет простой аргумент командной строки --proxy для указания HTTP-прокси. Вам необходимо указать адрес прокси в формате http://<хост>:<порт>.

Поскольку Burp Suite прослушивает 127.0.0.1:8080, правильный аргумент для использования:

--proxy=http://127.0.0.1:8080

Когда вы добавите этот аргумент к команде sqlmap, вместо отправки запросов напрямую целевому веб-серверу, sqlmap будет отправлять их на http://127.0.0.1:8080. Затем Burp Suite получит эти запросы, зарегистрирует их и перенаправит конечному получателю.

На следующем шаге мы объединим этот аргумент прокси с целевым URL для выполнения сканирования. Пока важно понимать, что этого одного параметра достаточно для интеграции двух инструментов.

Выполнение базового сканирования sqlmap

На этом шаге вы выполните базовое сканирование sqlmap против тестового веб-приложения, направляя трафик через Burp Suite. Мы попросим sqlmap перечислить базы данных на сервере.

Откройте терминал. Мы составим команду, которая будет включать:

  • Целевой URL: -u "http://127.0.0.1/index.php?id=1"
  • Конфигурацию прокси: --proxy=http://127.0.0.1:8080
  • Действие для выполнения: --dbs (для перечисления баз данных)
  • Флаг неинтерактивного режима: --batch (для автоматического ответа 'yes' на все вопросы)

Теперь выполните полную команду в вашем терминале:

sqlmap -u "http://127.0.0.1/index.php?id=1" --proxy=http://127.0.0.1:8080 --dbs --batch

Вы увидите вывод sqlmap в терминале по мере начала тестирования цели. Сначала он подтвердит уязвимость параметра id, а затем перечислит доступные базы данных.

Вывод должен выглядеть примерно так (номера версий и некоторые детали могут отличаться):

        ___
       __H__
 ___ ___[.]_____ ___ ___  {1.x.x#dev}
|_ -| . [.]     | .'| . |
|___|_  [.]_|_|_|__,|  _|
      |_|V...       |_|   http://sqlmap.org

[INFO] starting @ ...
...
[INFO] GET parameter 'id' is 'MySQL >= 5.0 boolean-based blind' injectable
[INFO] GET parameter 'id' is 'MySQL >= 5.0.12 stacked queries' injectable
[INFO] GET parameter 'id' is 'MySQL >= 5.0.12 time-based blind' injectable
...
[INFO] fetching database names
[INFO] the following databases are available [4]:
[*] information_schema
[*] mysql
[*] performance_schema
[*] sys

[INFO] fetched data logged to text files under '/home/labex/.sqlmap/output/127.0.0.1'

Пока sqlmap работает, он отправляет сотни запросов через Burp Suite.

Наблюдение за трафиком, сгенерированным sqlmap, в HTTP History Burp Suite

На этом шаге вы вернетесь к Burp Suite, чтобы увидеть трафик, который sqlmap сгенерировал во время сканирования.

Выведите окно Burp Suite на передний план.

  1. Убедитесь, что вы находитесь на вкладке Proxy.
  2. Нажмите на подвкладку HTTP history.

Теперь вы увидите таблицу, заполненную HTTP-запросами. Все эти запросы были отправлены sqlmap на целевой сервер через прокси Burp.

Уделите минуту, чтобы изучить список:

  • Host: Все запросы направлены на 127.0.0.1.
  • Method: Большинство запросов — это запросы GET.
  • URL: URL всегда /index.php, но параметр id в строке запроса меняется с каждым запросом.

Этот вид предоставляет полный журнал активности sqlmap. Вы можете увидеть огромный объем запросов, которые автоматизированный инструмент генерирует для тестирования одного класса уязвимостей. Это основное преимущество использования прокси: оно делает "черный ящик" операций инструмента видимым.

Анализ полезных нагрузок, отправляемых sqlmap через прокси

На этом шаге вы более подробно изучите отдельные запросы, чтобы понять конкретные полезные нагрузки (payloads), которые sqlmap использует для обнаружения и эксплуатации уязвимостей SQL-инъекций.

На вкладке HTTP history в Burp Suite щелкните любой запрос в списке. При выборе запроса под списком появятся две новые панели: Request и Response.

Нажмите на панель Request, чтобы просмотреть необработанный HTTP-запрос, отправленный sqlmap. Обратите особое внимание на параметр id в URL. Вы увидите различные тестируемые полезные нагрузки.

Например, вы можете найти полезную нагрузку для булевой слепой инъекции (boolean-based blind payload) следующего вида:

GET /index.php?id=1%20AND%208003=8003 HTTP/1.1
Host: 127.0.0.1
...

Здесь sqlmap проверяет, по-разному ли отвечает приложение при внедрении истинного условия (AND 8003=8003). %20 — это URL-кодированное представление пробела.

Вы также можете найти полезную нагрузку для временной слепой инъекции (time-based blind payload):

GET /index.php?id=1%20AND%20(SELECT%202079%20FROM%20(SELECT(SLEEP(5)))IImL) HTTP/1.1
Host: 127.0.0.1
...

С помощью этой полезной нагрузки sqlmap внедряет команду SLEEP(5). Если сервер отвечает на 5 секунд дольше, sqlmap знает, что инъекция была успешной и база данных уязвима.

Анализируя эти запросы, вы получите гораздо более глубокое понимание того, как работают автоматизированные сканеры. Вы можете увидеть логику, которую они используют для подтверждения уязвимостей, что гораздо более познавательно, чем просто видеть конечный результат в терминале.

Резюме

В этой лабораторной работе вы успешно интегрировали автоматизированный инструмент сканирования sqlmap с перехватывающим прокси Burp Suite.

Вы научились:

  • Запускать Burp Suite и подтверждать, что его прокси-слушатель работает на 127.0.0.1:8080.
  • Использовать аргумент --proxy в sqlmap для маршрутизации всего его трафика через Burp Suite.
  • Выполнять сканирование с включенным прокси для генерации трафика.
  • Наблюдать полный список HTTP-запросов на вкладке HTTP history в Burp Suite.
  • Анализировать отдельные запросы, чтобы понять конкретные полезные нагрузки для булевых и временных SQL-инъекций, которые sqlmap использует для выявления уязвимостей.

Этот метод является фундаментальным для любого специалиста по веб-безопасности, поскольку он предоставляет критически важную информацию о поведении автоматизированных инструментов и позволяет осуществлять больший контроль и анализ во время пентеста.