SQL-инъекция — одна из самых серьёзных и распространённых атак на веб-сайты. Практически каждый веб-сайт имеет базу данных, содержащую конфиденциальную и ценную информацию, которая часто может быть скомпрометирована хорошо спланированной атакой с SQL-инъекцией.
Существует множество инструментов для SQL-инъекций, но, пожалуй, самым популярным является sqlmap. В этом руководстве мы воспользуемся sqlmap для взлома базы данных MySQL, расположенной на веб-сайте.
Как правило, MySQL используется совместно с PHP и веб-сервером Apache (часто называемым LAMPP или XAMPP) для создания динамических веб-сайтов, работающих на основе баз данных. Такие пакеты управления контентом и разработки, как Drupal, Joomla, WordPress, Ruby on Rails и другие, используют MySQL в качестве базы данных по умолчанию. Миллионы веб-сайтов используют MySQL, и зачастую это сайты «домашней разработки», не уделяющие должного внимания безопасности.
В этом руководстве мы рассмотрим, как извлечь информацию из онлайн-базы данных MySQL, прежде чем извлекать её непосредственно из неё. Повторюсь, чем больше мы знаем, тем успешнее будет наш взлом и тем меньше вероятность быть обнаруженным.
Sqlmap можно использовать и для баз данных, отличных от MySQL, например, для Microsoft SQL Server и Oracle, но здесь мы сосредоточим внимание на его возможностях на тех распространенных веб-сайтах, которые созданы с использованием PHP, Apache и MySQL, таких как WordPress, Joomla и Drupal.
Шаг №1 Запуск sqlmap
Сначала запустите Kali и перейдите в Приложения -> Оценка базы данных ->sqlmap , как показано на снимке экрана ниже.
Шаг №2. Найдите уязвимый веб - сайт
Чтобы попасть «внутрь» веб-сайта и, в конечном счёте, в базу данных, мы ищем веб-сайты, заканчивающиеся на «php?id=xxx», где xxx — это некий номер. Те, кто знаком с хаками/дорками Google, могут выполнить поиск в Google, введя:
Эти чудаки выдадут буквально миллионы сайтов по этому базовому критерию уязвимости. Если вы креативны и амбициозны, вы можете найти множество сайтов со списком уязвимых сайтов. Возможно, вам стоит взглянуть на них.
Для наших целей и чтобы уберечь вас от преследования закона, мы взломаем сайт www.webscantest.com , специально предназначенный для этой цели . Мы сможем практиковаться на этом сайте и оттачивать ваши навыки, не беспокоясь о нарушении законов и необходимости вносить за вас залог.
Этот первый экран справки демонстрирует основы использования SQLmap, но есть и другие экраны, демонстрирующие ещё больше возможностей. Для краткости я их исключил, но мы вернёмся к некоторым из этих дополнительных опций и возможностей в будущих руководствах по SQLmap.
Sqlmap — мощный инструмент, написанный на Python (скоро мы разберём его в руководстве по Python), обладающий множеством возможностей. В этом руководстве мы лишь поверхностно рассмотрим его возможности.
Шаг №4. Определите СУБД , лежащую в основе веб - сайта.
Прежде чем начать взламывать веб-сайт, нам нужно собрать информацию. Нам нужно знать, ЧТО мы взламываем. Как я уже много раз говорил, большинство эксплойтов очень специфичны для ОС, приложения, служб, портов и т. д.
Давайте начнем с выяснения того, какая СУБД лежит в основе этого веб-сайта.
Для запуска sqlmap в этой задаче вводим:
kali> sqlmap -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, давайте рассмотрим более продвинутое применение этого замечательного инструмента. Недавно (28 декабря 2016 г.) исследователь безопасности (Tad Group) обнаружил уязвимость к сложной атаке с использованием SQL-инъекции на сайты WordPress, использующие плагин Simply Polls (https://wordpress.org/plugins/simply-polls/). Поскольку эта атака была обнаружена совсем недавно, а издатель ещё не выпустил исправление, большинство этих сайтов уязвимы.
Чтобы найти сайты WordPress, ознакомьтесь с моим руководством по поиску уязвимых сайтов WordPress.
Команда sqlmap для использования этих сайтов WordPress с плагином Simply Polls выглядит следующим образом:
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 в ближайшем будущем, чтобы подробнее рассмотреть его обширные возможности для взлома баз данных.
Существует множество инструментов для SQL-инъекций, но, пожалуй, самым популярным является sqlmap. В этом руководстве мы воспользуемся sqlmap для взлома базы данных MySQL, расположенной на веб-сайте.
Как правило, MySQL используется совместно с PHP и веб-сервером Apache (часто называемым LAMPP или XAMPP) для создания динамических веб-сайтов, работающих на основе баз данных. Такие пакеты управления контентом и разработки, как Drupal, Joomla, WordPress, Ruby on Rails и другие, используют MySQL в качестве базы данных по умолчанию. Миллионы веб-сайтов используют MySQL, и зачастую это сайты «домашней разработки», не уделяющие должного внимания безопасности.
В этом руководстве мы рассмотрим, как извлечь информацию из онлайн-базы данных MySQL, прежде чем извлекать её непосредственно из неё. Повторюсь, чем больше мы знаем, тем успешнее будет наш взлом и тем меньше вероятность быть обнаруженным.
Sqlmap можно использовать и для баз данных, отличных от MySQL, например, для Microsoft SQL Server и Oracle, но здесь мы сосредоточим внимание на его возможностях на тех распространенных веб-сайтах, которые созданы с использованием PHP, Apache и MySQL, таких как WordPress, Joomla и Drupal.
Шаг №1 Запуск sqlmap
Сначала запустите Kali и перейдите в Приложения -> Оценка базы данных ->sqlmap , как показано на снимке экрана ниже.
Шаг №2. Найдите уязвимый веб - сайт
Чтобы попасть «внутрь» веб-сайта и, в конечном счёте, в базу данных, мы ищем веб-сайты, заканчивающиеся на «php?id=xxx», где xxx — это некий номер. Те, кто знаком с хаками/дорками Google, могут выполнить поиск в Google, введя:
- inurl:index.php?id=
- inurl:gallery.php?id=
- inurl
ost.php?id= - inurl:article?id=
Эти чудаки выдадут буквально миллионы сайтов по этому базовому критерию уязвимости. Если вы креативны и амбициозны, вы можете найти множество сайтов со списком уязвимых сайтов. Возможно, вам стоит взглянуть на них.
Для наших целей и чтобы уберечь вас от преследования закона, мы взломаем сайт www.webscantest.com , специально предназначенный для этой цели . Мы сможем практиковаться на этом сайте и оттачивать ваши навыки, не беспокоясь о нарушении законов и необходимости вносить за вас залог.
Шаг
При нажатии на sqlmap вы увидите экран, подобный показанному ниже.
Этот первый экран справки демонстрирует основы использования SQLmap, но есть и другие экраны, демонстрирующие ещё больше возможностей. Для краткости я их исключил, но мы вернёмся к некоторым из этих дополнительных опций и возможностей в будущих руководствах по SQLmap.
Sqlmap — мощный инструмент, написанный на Python (скоро мы разберём его в руководстве по Python), обладающий множеством возможностей. В этом руководстве мы лишь поверхностно рассмотрим его возможности.
Шаг №4. Определите СУБД , лежащую в основе веб - сайта.
Прежде чем начать взламывать веб-сайт, нам нужно собрать информацию. Нам нужно знать, ЧТО мы взламываем. Как я уже много раз говорил, большинство эксплойтов очень специфичны для ОС, приложения, служб, портов и т. д.
Давайте начнем с выяснения того, какая СУБД лежит в основе этого веб-сайта.
Для запуска sqlmap в этой задаче вводим:
kali> sqlmap -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, давайте рассмотрим более продвинутое применение этого замечательного инструмента. Недавно (28 декабря 2016 г.) исследователь безопасности (Tad Group) обнаружил уязвимость к сложной атаке с использованием SQL-инъекции на сайты WordPress, использующие плагин Simply Polls (https://wordpress.org/plugins/simply-polls/). Поскольку эта атака была обнаружена совсем недавно, а издатель ещё не выпустил исправление, большинство этих сайтов уязвимы.
Чтобы найти сайты WordPress, ознакомьтесь с моим руководством по поиску уязвимых сайтов WordPress.
Команда sqlmap для использования этих сайтов WordPress с плагином Simply Polls выглядит следующим образом:
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 в ближайшем будущем, чтобы подробнее рассмотреть его обширные возможности для взлома баз данных.