Перечисление баз данных на целевом сервере с помощью sqlmap

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

Введение

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

Подтверждение успешной инъекции из предыдущего сканирования

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

Откройте терминал в директории ~/project.

sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" --banner

Эта команда использует sqlmap для подключения к указанному URL и пытается получить баннер базы данных. Успешное получение баннера указывает на успешную инъекцию.

Пример вывода:

        _
       ___ ___ ___ ___
      |_ -| . | . | . |
      |___|_  |_  |_  |
        |_|   |_|   |_|   3.7-1#stable

    [!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. You are responsible for your own actions.
    [!] do you want to enable full support for HTTP(S) proxy? [y/N] N
    [!] do you want to resume the previous session? [Y/n/q] n

    ... (сокращенный вывод) ...

    web server operating system: Linux Debian
    web application technology: Apache 2.2.14, PHP 5.3.2
    back-end DBMS: MySQL >= 5.0.12
    banner: '5.1.73-0ubuntu0.10.04.1'

Строка banner в выводе подтверждает, что sqlmap смог успешно взаимодействовать с базой данных и получить информацию о ее версии, что указывает на успешную инъекцию.

Использование флага --dbs для вывода списка всех баз данных

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

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

Структура команды будет аналогична предыдущему шагу, но с добавлением --dbs:

sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" --dbs

Эта команда предписывает sqlmap идентифицировать и вывести список всех баз данных, доступных через уязвимость SQL-инъекции по указанному URL.

Выполнение команды перечисления баз данных

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

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

sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" --dbs

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

Пример вывода:

        _
       ___ ___ ___ ___
      |_ -| . | . | . |
      |___|_  |_  |_  |
        |_|   |_|   |_|   3.7-1#stable

    [!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. You are responsible for your own actions.
    [!] do you want to enable full support for HTTP(S) proxy? [y/N] N
    [!] do you want to resume the previous session? [Y/n/q] n

    ... (сокращенный вывод) ...

    available databases [4]:
    [*] information_schema
    [*] mysql
    [*] performance_schema
    [*] acuart

Вывод показывает ход выполнения sqlmap и, в конечном итоге, список "доступных баз данных" (available databases). В этом примере перечислены information_schema, mysql, performance_schema и acuart.

Интерпретация списка возвращенных имен баз данных

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

Из вывода предыдущего шага вы могли видеть список, похожий на этот:

available databases [4]:
[*] information_schema
[*] mysql
[*] performance_schema
[*] acuart

Каждый элемент [*] представляет собой базу данных, найденную на целевом сервере.

  • information_schema: Это стандартная база данных в MySQL (и других SQL-базах данных), которая предоставляет доступ к метаданным баз данных. Она содержит информацию обо всех других базах данных, таблицах, столбцах и правах доступа. Это системная база данных.
  • mysql: Это еще одна стандартная системная база данных в MySQL, которая хранит информацию, необходимую для работы сервера MySQL. Она содержит учетные записи пользователей, привилегии и другие данные конфигурации сервера.
  • performance_schema: Это системная база данных в MySQL, используемая для мониторинга выполнения сервера MySQL на низком уровне. Она предоставляет информацию о производительности сервера.
  • acuart: Это имя базы данных, вероятно, является пользовательской базой данных, специфичной для веб-приложения, работающего на сервере. Часто именно эта база данных содержит данные приложения, такие как учетные данные пользователей, информация о продуктах или другие конфиденциальные бизнес-данные.

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

Различение системных баз данных от пользовательских

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

Как наблюдалось на предыдущем шаге, такие базы данных, как information_schema, mysql и performance_schema, обычно являются базами данных системного уровня. Они являются частью основной функциональности системы управления базами данных и обычно содержат метаданные, учетные записи пользователей для самой СУБД и статистику производительности. Хотя их иногда можно использовать для эксплуатации, они редко содержат конфиденциальные данные, специфичные для приложения, которые часто ищут злоумышленники.

С другой стороны, базы данных с именами, которые не являются стандартными системными именами (например, acuart в нашем примере, или webapp_db, users, products и т. д.), обычно являются пользовательскими базами данных. Эти базы данных хранят фактические данные веб-приложения, такие как:

  • Учетные данные пользователей (имена пользователей, хешированные пароли)
  • Информация о клиентах
  • Каталоги продуктов
  • Финансовые записи
  • Другие проприетарные бизнес-данные

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

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

sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" -D acuart --tables

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

Резюме

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