Нацеливание на конкретную систему управления базами данных с помощью sqlmap

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

Введение

В этой лабораторной работе вы научитесь использовать sqlmap — мощный инструмент для тестирования на проникновение с открытым исходным кодом, который автоматизирует процесс обнаружения и эксплуатации уязвимостей SQL-инъекций. В частности, вы сосредоточитесь на ключевом методе оптимизации: нацеливании на конкретную серверную систему управления базами данных (СУБД).

По умолчанию sqlmap тестирует широкий спектр систем баз данных, что может занимать много времени. Указав целевую СУБД (например, MySQL, PostgreSQL или MSSQL), вы можете значительно ускорить процесс сканирования, уменьшить количество запросов, отправляемых на сервер, и сделать ваше тестирование более эффективным.

Мы предварительно настроили для вас уязвимое веб-приложение для практики. Целевой URL для этой лабораторной работы: http://localhost/vulnerabilities/sqli/?id=1&Submit=Submit#

Приступим!

Определение вероятной серверной СУБД (например, MySQL, PostgreSQL)

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

Мы будем использовать флаг --batch, чтобы sqlmap работал с ответами по умолчанию на все вопросы, делая сканирование неинтерактивным. Нам также потребуется предоставить cookie сессии для доступа к уязвимой странице. Для этой лабораторной работы cookie: security=low; PHPSESSID=labex.

Выполните следующую команду в вашем терминале:

sqlmap -u "http://localhost/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=labex" --batch

sqlmap начнет процесс тестирования. Внимательно следите за выводом. После серии тестов sqlmap выведет информацию об операционной системе веб-сервера, технологии веб-сервера и, что наиболее важно, о серверной СУБД.

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

[INFO] the back-end DBMS is MySQL
web server operating system: Linux Ubuntu
web application technology: PHP 8.1.2, Apache 2.4.52
back-end DBMS: MySQL >= 5.0

Как вы видите, sqlmap определил серверную базу данных как MySQL. Это ключевая информация, которую мы будем использовать далее.

Использование флага --dbms для указания целевой системы

На этом этапе мы узнаем о флаге --dbms, который является основой этой лабораторной работы. Теперь, когда из предыдущего шага мы знаем, что цель работает под управлением MySQL, нет необходимости тратить время sqlmap на тестирование других систем баз данных, таких как PostgreSQL, Oracle или Microsoft SQL Server.

Флаг --dbms позволяет точно указать sqlmap, для какой системы баз данных следует проводить тестирование. Это делает инструмент гораздо более эффективным.

Синтаксис прост: --dbms=DBMS_NAME

Вы заменяете DBMS_NAME на имя целевой базы данных. Вот некоторые распространенные значения:

  • MySQL
  • PostgreSQL
  • MSSQL (Microsoft SQL Server)
  • Oracle
  • SQLite
  • Access

Предоставляя эту информацию, вы инструктируете sqlmap использовать только полезные нагрузки (payloads) и методы, специфичные для указанной СУБД. Это фундаментальный навык для эффективного использования sqlmap в реальных сценариях. На следующем шаге вы примените этот флаг к новому сканированию.

Выполнение сканирования с флагом --dbms=MySQL

На этом этапе вы снова выполните сканирование sqlmap, но на этот раз добавите флаг --dbms=MySQL. Это укажет sqlmap сосредоточить свои усилия исключительно на тестах, специфичных для MySQL, основываясь на информации, собранной нами на Шаге 1.

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

sqlmap -u "http://localhost/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=labex" --dbms=MySQL --batch

Сканирование начнется немедленно. Вы заметите, что начальный вывод sqlmap подтверждает принудительное использование MySQL в качестве серверной СУБД.

[INFO] forcing back-end DBMS to 'MySQL'

Дайте сканированию завершиться. На следующем шаге мы проанализируем результаты и сравним их с нашим первым сканированием.

Наблюдение за сокращением количества полезных нагрузок и ускоренным обнаружением

На этом этапе вы увидите прямые преимущества использования флага --dbms. Основные преимущества заключаются в значительном сокращении количества выполняемых тестов и гораздо более быстром завершении работы.

Если вы сравните вывод сканирования из Шага 3 с первым сканированием из Шага 1, вы заметите ключевое отличие. Первое сканирование потратило время на попытку идентификации базы данных, выполняя общие тесты, а затем сужая их. Однако второе сканирование пропустило все это.

Вывод целевого сканирования покажет, что sqlmap выполняет только тесты, относящиеся к MySQL. Вы не увидите, что он тестирует другие системы, такие как PostgreSQL или Oracle.

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

  • Меньшему количеству HTTP-запросов: Инструмент отправляет значительно меньше запросов на целевой сервер.
  • Более быстрому выполнению: Общее время сканирования значительно сокращается.

Эта эффективность критически важна при тестировании на проникновение, где время часто является ограничением, а минимизация сетевого трафика может помочь избежать обнаружения брандмауэрами или системами обнаружения вторжений (IDS).

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

На этом заключительном этапе давайте закрепим наше понимание того, почему нацеливание на СУБД является лучшей практикой для оптимизации.

sqlmap разработан как комплексный инструмент. Без каких-либо указаний его поведение по умолчанию заключается в предположении, что он ничего не знает о цели. Поэтому он выполняет большой набор тестов для охвата многих возможностей:

  1. Финализация (Fingerprinting): Сначала он пытается определить тип СУБД, отправляя различные запросы и анализируя ответы. Каждая база данных имеет уникальные функции, сообщения об ошибках и поведение, которые могут раскрыть ее личность.
  2. Широкое тестирование: Затем он тестирует различные методы SQL-инъекций (булевые слепые, основанные на времени слепые, основанные на ошибках, UNION-запросы и т. д.).
  3. Полезные нагрузки, специфичные для СУБД: Для каждого метода он пробует полезные нагрузки, которые работают в различных системах баз данных.

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

Используя --dbms=MySQL, вы говорите sqlmap полностью пропустить шаг 1 и использовать только те полезные нагрузки из шага 3, которые относятся к MySQL. Это отсекает огромное количество тестовых случаев из его рабочего процесса.

Эта оптимизация дает три ключевых преимущества:

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

Освоение таких флагов, как --dbms, превращает sqlmap из простого автоматизированного сканера в точный и хирургический инструмент тестирования.

Резюме

В этой лабораторной работе вы изучили важнейший метод оптимизации сканирования sqlmap. Вы на собственном опыте убедились, как определение серверной системы управления базами данных (СУБД) и последующее использование флага --dbms могут значительно повысить эффективность тестирования на SQL-инъекции.

Вы начали с выполнения общего сканирования для идентификации бэкэнда как MySQL. Затем вы узнали о флаге --dbms и использовали его для выполнения целевого сканирования. Сравнивая два подхода, вы заметили, что целевое сканирование было значительно быстрее, поскольку оно исключило большое количество нерелевантных тестовых случаев.

Этот принцип фокусировки ваших инструментов является фундаментальной концепцией эффективного тестирования на проникновение. Поздравляем с завершением этой лабораторной работы и добавлением ключевого навыка sqlmap в ваш набор инструментов!