sqlmap

'

Описание sqlmap

sqlmap — это инструмент с открытым исходным кодом для тестирования на проникновение, который автоматизирует процесс выявления и эксплуатации уязвимости SQL-инъекця и захват серверов баз данных. Он поставляется с мощным движком выявления и многими нишевыми функциями для конечного тестера на проникновение, имеет широкий набор возможностей, начиная от сбора отпечатков баз данных по полученной от них данным, до доступа к файловой системе и выполнения команд в операционной системе посредством внеполосных (out-of-band) подключений.

Особенности

  • Полная поддержка для таких систем управления базами данных как MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase, SAP MaxDB и HSQLDB.
  • Полная поддержка шести техник SQL-инъекций: слепая логическая (boolean-based blind), слепая, основанная на времени (time-based blind), основанная на ошибке (error-based), основанная на запросе UNION (UNION query-based), многоярусные запросы (stacked queries) и внеполосная (out-of-band).
  • Поддержка прямого подключения к базе данных без прохода через SQL инъекцию, посредством введения учётных данных СУБД, IP адреса, порта и имени БД.
  • Поддержка перечисления пользователей, хешей паролей, привилегий, ролей, БД, таблиц и колонок.
  • Автоматическое распознавание форматов хешей паролей и предложение их взлома с использованием атаки по словарю.
  • Поддержка сдампливания записей таблиц БД, диапазона записей или указанных колонок по пользовательскому выбору.
  • Пользователь также может выбрать сдампливать только диапазон символов из каждой записи колонки.
  • Поддержка поиска указанных имён БД, указанных таблиц по всем БД или указанным колонкам по всем таблицам БД. Это полезно, например, для идентификации таблиц, содержащих пользовательские учётные данные приложений, где колонки с соответствующими именами колонок содержат такие строки как имя и пароль.
  • Поддержка загрузки и выгрузки любого файла из файловой системы с сервера БД, когда ПО БД MySQL, PostgreSQL или Microsoft SQL Server.
  • Поддержка выполнения произвольных команд на ОС сервера БД и получение их стандартного вывода когда ПО MySQL, PostgreSQL или Microsoft SQL Server.
  • Поддержка установления внедиапазонного TCP подключения между атакующей машиной и лежащей в основе сервера базы данных операционной системой. Этот канал по выбору пользователя может быть интерактивным приглашением командной строки, сессией Meterpreter или сессией графического пользовательского интерфейса (VNC).
  • Поддержка повышения пользовательских привилегий процесса базы данных через команду Metasploit'а – Meterpreter getsystem.

Домашняя страница: http://sqlmap.org/

Автор: Bernardo Damele Assumpcao Guimaraes, Miroslav Stampar

Лицензия: GPLv2

Справка по sqlmap

Использование:

python sqlmap [опции]
Опции:
-h, --help Показать базовую справку и выйте
-hh Показать продвинутую справку и выйти
--version Показать номер версии программы и выйти
-v VERBOSE Уровень вербальности: 0-6 (по умолчанию 1)
Цель:
По крайней мере одна из этих опций должна быть указана, чтобы задать цель(и)
-d DIRECT Строка подключения для прямого соединения с базой данных
-u URL, --url=URL Целевой URL (например, "http://www.site.com/vuln.php?id=1")
-l LOGFILE Парсить цель(и) из файлов логов Burp или WebScarab
-x SITEMAPURL Парсить цель(и) из удалённого файла sitemap(.xml)
-m BULKFILE Сканировать множество целей, заданных в текстовом файле
-r REQUESTFILE Загрузить HTTP запросы из файла
-g GOOGLEDORK Обработать результаты дорков Google как целевых URL
-c CONFIGFILE Загрузить опции из конфигурационного файла INI
Запросы:
Эти опции могут использоваться для определения как подключиться к целевому URL
--method=МЕТОД Принудительно использовать заданный HTTP метод (например, PUT)
--data=ДАННЫЕ Строка данных для отправки через POST
--param-del=РАЗД_ПАР Символ, используемый для разделения величин параметров
--cookie=КУКИ Значение заголовка HTTP куки
--cookie-del=РАЗДЕЛИТЕЛЬ_КУКИ Символ, используемый для разделения величин куки
--load-cookies=ФАЙЛ_ДЛЯ_ЗАГРУЗКИ Файл, содержащий куки в формате Netscape/wget
--drop-set-cookie Игнорировать заголовок Set-Cookie из ответа
--user-agent=AGENT Значение заголовка HTTP User-Agent
--random-agent Использовать случайно выбранное значение заголовка HTTP User-Agent
--host=ХОСТ Значение заголовка хоста HTTP
--referer=РЕФЕРЕР Значение заголовка HTTP Referer
-H ЗАГОЛОВОК, --header Дополнительный заголовок (к примеру, "X-Forwarded-For: 127.0.0.1")
--headers=ЗАГОЛОВКИ Дополнительные заголовки (к примеру, "Accept-Language: fr\nETag: 123")
--auth-type=ТИП_АУТ HTTP тип аутентификации (Basic, Digest, NTLM или PKI)
--auth-cred=ДАННЫЕ_АУТ учётные данные HTTP аутентификации (имя:пароль)
--auth-file=ФАЙЛ_АУТ файл HTTP аутентификации PEM сертификат/частный ключ
    --ignore-401        Игнорировать ошибку HTTP 401 (Unauthorized) (Неавторизован)
    --ignore-proxy      Игнорировать дефолтные системные настройки прокси
    --ignore-redirects  Игнорировать попытки редиректа
    --ignore-timeouts   Игнорировать таймауты соединений
--proxy=ПРОКСИ Использовать прокси для подключения к целевому URL
--proxy-cred=УЧЁТКА_ПРОКСИ Учётные данные аутентификации прокси (имя:пароль)
--proxy-file=ФАЙЛ_ПРОКСИ Загрузить список прокси из файла
--tor Использовать анонимную сеть Tor
--tor-port=TORPORT Установить порт прокси Tor отличный от дефолтного
--tor-type=TORTYPE Установить тип прокси Tor (HTTP (по умолчанию), SOCKS4 или SOCKS5)
--check-tor Проверить, используется ли Tor должным образом
--delay=ЗАДЕРЖКА Задержка в секундах между каждым HTTP запросом
--timeout=ТАЙМАУТ Секунды для ожидания перед таймаутом соединения (по умолчанию 30)
--retries=ПОПЫТКИ Попытки при таймаутах соединения (по умолчанию 3)
--randomize=ПАРАМЕТРЫ Случайно менять значения данного параметра(ов)
--safe-url=БЕЗОПАСНЫЙ_EURL URL адрес для частого посещения во время тестирования
--safe-post=POST Данные POST для отправки на безопасный URL
--safe-req=БЕЗОПАСНЫЙ_ФАЙЛ Load safe HTTP request from a file
--safe-freq=КОЛИЧЕСТВО Тестовые запросы между двумя визитами на заданный безопасный URL
--skip-urlencode Пропустить URL кодирование данных для запросов
--csrf-token=CSR.. Параметр используемый для удержания токена anti-CSRF
--csrf-url=CSRFURL URL адрес для посещения для извлечения токена anti-CSRF
--force-ssl Принудительное использование SSL/HTTPS
--hpp Использовать метод загрязнения параметра HTTP
--eval=EVALCODE Выполнить данный код Python перед запросом (например,
"import hashlib;id2=hashlib.md5(id).hexdigest()")
Оптимизация:
Эти опции могут использовать для оптимизации производительности sqlmap
-o Отключить все переключатели оптимизации
--predict-output Прогнозировать общий вывод запросов
--keep-alive Использовать постоянные соединения HTTP(s)
--null-connection Получить длину страницу без фактического тела ответа HTTP
--threads=ПОТОКИ Максимальное количество одновременных HTTP(s) запросов (по умолчанию 1)
Инъекция:
Эти опции могут использоваться для определения, какой параметр тестировать,
обеспечивать пользовательскую инъекционную нагрузку и дополнительные скрипты обфускации
-p TESTPARAMETER Тестируемый параметр(ы)
--skip=SKIP Пропустить тестирования данного параметра(ов)
--skip-static Пропустить тестирование параметров, которые не кажутся динамическими
    --param-exclude=..  Регулярное выражение для исключения параметров из тестирования (например, "ses")
--dbms=DBMS Принудительно указать СУБД
--dbms-cred=DBMS.. Данные аутентификации СУБД (пользователь:пароль)
--os=OS Принудительно указать операционную систему СУБД
--invalid-bignum Использовать большие числа для недействительных значений
--invalid-logical Использовать логические операции для недействительных значений
--invalid-string Использовать случайные строки для недействительных значений
--no-cast Отключить механизм отбора полезной нагрузки
--no-escape Отключить механизм экранирования строк
--prefix=PREFIX Предваряющая строка инъекционного запроса
--suffix=SUFFIX Завершающая строка инъекционного запроса
--tamper=TAMPER Использовать данный скрипт(ы) для обфускации инъекционных данных
Выявление:
Эти опции можно использовать для настройки фазы выявления
--level=УРОВЕНЬ Уровень выполнения тестирования (1-5, по умолчанию 1)
--risk=РИСК Риск выполняемого тестирования (1-3, по умолчанию 1)
--string=СТРОКА Строка, когда запрос выполнен в True (Истина)
--not-string=НЕ_ИСТИНА Строка, когда запрос выполнен в False (Ложь)
--regexp=РЕГУЛЯРНОЕ_ВЫРАЖЕНИЕ Регулярное выражение, когда запрос выполнен в True (Истина)
--code=КОД HTTP код, когда запрос выполнен в True (Истина)
--text-only Сравнить страницы основываясь только на текстовом содержимом
--titles Сравнить страницы основываясь только на их заголовках
Техники:
Эти опции можно использовать для поднастройки тестирования отдельных техник SQL инъекции
--technique=ТЕХНИКА Техники SQL инъекций для использования (по умолчанию "BEUSTQ")
--time-sec=TIMESEC Секунды для задержки ответа СУБД (по умолчанию 5)
--union-cols=UCOLS Диапазон колонок для тестирования с запросами UNION SQL инъекций
--union-char=UCHAR Символ для использования при брутфорсинге количества колонок
--union-from=UFROM Таблица для использования в FROM части UNION запроса SQL инъекции
--dns-domain=ДОМЕН Доменное имя, используемое для эксфильтрационной атаки DNS
--second-order=СТРОКА В результате по URL ищется ответ второго порядка
Отпечатки:
-f, --fingerprint Выполняет обширную сверку версии СУБД
Перечисления:
Эти опции могут использоваться для перечисления информации
системы управления базами данных, структуры содержащихся в
таблицах данных. Более того, вы можете запустить ваши собственные
SQL выражения
-a, --all Получить всё
-b, --banner Получить банер СУБД
--current-user Получить текущего пользователя СУБД
--current-db Получить текущую базу данных СУБД
--hostname Получить имя хоста сервера СУБД
--is-dba Определить, является ли текущий пользователь администратором СУБД
--users Перечислить пользователей СУБД
--passwords Перечислить хеши паролей пользователей СУБД
--privileges Перечислить пользовательские привилегии СУБД
--roles Перечислить пользовательские роли СУБД
--dbs Перечислить базы данных СУБД
--tables Перечислить таблицы базы данных СУБД
--columns Перечислить колонки таблицы СУБД
--schema Перечислить схему СУБД
--count Перечислить количество записей для таблицы(таблиц)
--dump Сдампить записи таблицы базы данных СУБД
--dump-all Сдампить все записи таблиц базы данных СУБД
--search Поиск колонки(ок), таблиц(ы) и/или имени(имён) базы данных
--comments Получить комментарии СУБД
-D БД БД СУБД для перечисления
-T ТБЛ Таблица(ы) БД СУБД для перечисления
-C КОЛ Колонка(и) таблицы БД СУБД для перечисления
-X ПРОПУСТИТЬКОЛ Колонка(и) БД СУБД для не перечисления
-U ПОЛЬЗОВАТЕЛЬ Пользователи СУБД для перечисления
--exclude-sysdbs Пробустить системные БД СУБД при перечислении таблиц
    --pivot-column=P..  Имя стержневой (Pivot) колонки
--where=DUMPWHERE Использовать условие WHERE при дампинге таблиц
--start=LIMITSTART Первая выходная запись запроса для получения
--stop=LIMITSTOP Последняя выходная запись запроса для получения
--first=FIRSTCHAR Первый символ выходного слова запроса для получения
--last=LASTCHAR Последний символ выходного слова запроса для получения
--sql-query=QUERY SQL выражение для исполнения
--sql-shell Приглашение интерактивного SQL шелла
--sql-file=SQLFILE Выполнить SQL выражение из данного файла(ов)
Брут-форс:
Эти опции могут использоваться для записи проверок брут-форсом
--common-tables Проверить наличие распространённых таблиц
--common-columns Проверить наличие распространённых колонок
Инъекция заданных пользователем функций:
Эти опции могут быть использованы для создания определённых пользователем функций
--udf-inject Вставка предопределённых пользователем функций
--shared-lib=SHLIB Локальный путь до общей библиотеки
Доступ к файловой системе:
Эти опции могут быть использованы для доступа к файловой системе СУБД
--file-read=RFILE Прочитать файл из файловой системы СУБД
--file-write=WFILE Записать локальный файл в файловую систему СУБД
--file-dest=DFILE Абсолютный путь для записи файла в СУБД
Доступ к оперативной системе:
Эти опции могут быть использованы для получения доступа к ОС СУБД
--os-cmd=OSCMD Выполнить команду ОС
--os-shell Приглашение интерактивного шелла ОС
--os-pwn Прриглашение для внеполосного шелла, Meterpreter или VNC
--os-smbrelay Однокликовое приглашение для внеполосного шелла, Meterpreter или VNC
--os-bof Эксплуатация переполнения буфера хранимой процедуры
--priv-esc Повышение пользовательских привилегий процесса БД
--msf-path=MSFPATH Локальный путь где установлен Metasploit Framework
--tmp-path=TMPPATH Удалённый абсолютный путь директории временных файлов
Доступ к регистру Windows:
Эти опции могут использоваться к доступу к регистру Windows СУБД
--reg-read Прочитать значение ключа регистра Windows
--reg-add Записать значение ключа регистра Windows
--reg-del Удалить значение ключа регистра Windows
--reg-key=REGKEY Ключ регистра Windows
--reg-value=REGVAL Значение ключа регистра Windows
--reg-data=REGDATA Данные значения ключа регистра Windows
--reg-type=REGTYPE Тип значения ключа регистра Windows
Общие:
Эти опции могут быть использованы для установки общих рабочих параметров
-s SESSIONFILE Загрузить сессию из сохранённого файла (.sqlite)
-t TRAFFICFILE Записать весь HTTP трафик в текстовый файл
--batch Никогда не спрашивать пользовательского ввода, использовать поведение по умолчанию
    --binary-fields=..  Поля результатов имеют двоичные значения (например, "digest")
--charset=CHARSET Принудительная кодировка символов, используемых для получения данных
    --check-internet    Проверить Интернет-соединение перед оценкой цели
--crawl=CRAWLDEPTH Ползать по веб-сайту начиная с заданного URL
--crawl-exclude=РЕГВЫРАЖЕНИЕ Регулярное выражение для исключения страниц для ползания (например, "logout")
--csv-del=CSVDEL Символ разделителя, используемый в выводе CSV (по умолчанию ",")
--dump-format=ДАМПФОРМАТ Формат сдампленных данных (CSV (по умолчанию), HTML или SQLITE)
--eta Отобразить для каждого вывода приблизительное время прибытия
--flush-session Стереть сессионные файлы для текущей цели
--forms Парсить и тестировать формы на целевой URL
--fresh-queries Игнорировать результаты запросов, сохранённые в сессионном файле
--hex Использовать шестнадцатеричную функцию(ии) СУБД для получения данных
--output-dir=OUT.. Пользовательский путь директории вывода
--parse-errors Парсить и отображать сообщения ошибок СУБД из ответов
--save=SAVECONFIG Сохранить опции в конфигурационный INI файл
--scope=SCOPE Регулярное выражение для фильтрации целей из лога proxy
--test-filter=TE.. Выбрать тесты по полезной нагрузке и/или названиям (например, ROW)
--test-skip=TEST.. Пропустить тесты по полезной нагрузке и/или названиям (например, BENCHMARK)
--update Обновить sqlmap
Разное:
-z MNEMONICS Использовать короткие мнемоники (например, "flu,bat,ban,tec=EU")
--alert=ALERT Запустить команду(ы) ОС, когда найдена SQL инъекция
--answers=ANSWERS Установить ответ на вопрос (например "quit=N,follow=N")
--beep Сигнал на вопрос и/или когда найдена SQL инъекция
--cleanup Очистить СУБД от специфичных для sqlmap пользовательских функций и таблиц
--dependencies Проверить на отсутствующие (неосновные) зависимости sqlmap
--disable-coloring Отключить раскрашивание вывода в консоли
--gpage=GOOGLEPAGE Использовать результаты дорка Google с указанного номера страницы
--identify-waf Провести тщательное тестирование на WAF/IPS/IDS защиту
--mobile Имитировать смартфон через заголовок HTTP User-Agent
--offline Работать в оффлайн режиме (использовать только данные сессии)
--purge-output Безопасно удалить всё содержимое из директории вывода
    --skip-waf          Пропустить эвристическое обнаружение WAF/IPS/IDS защиты
--smart Провести тщательные тесты только если эвристика дала положительные результаты
--sqlmap-shell Запрос интерактивного шелла sqlmap
    --tmp-dir=TMPDIR    Локальная директория для сохранения временных файлов
    --web-root=WEBROOT  Корневая директория веб-сервера (например, "/var/www")
--wizard Простой интерфейс мастера для начинающих пользователей

Руководство по sqlmap

Страница man присутствует, но является устаревшей и не дополняет ничего нового к справке.

Примеры запуска sqlmap

Перечислить базы данных (--dbs) для сайта http://www.sqldummywebsite.name/rubrika.php?id=31 (-u http://www.sqldummywebsite.name/rubrika.php?id=31)

sqlmap -u http://www.sqldummywebsite.name/rubrika.php?id=31 --dbs

Построить список таблиц (--tables) для базы данных laminat (-D laminat) для сайта http://www.sqldummywebsite.name/rubrika.php?id=31 (-u http://www.sqldummywebsite.name/rubrika.php?id=31)

sqlmap -u www.sqldummywebsite.name/rubrika.php?id=31 -D laminat --tables

Показать колонки (--columns) для таблицы admin (-T admin) для базы данных laminat (-D laminat) для сайта http://www.sqldummywebsite.name/rubrika.php?id=31 (-u http://www.sqldummywebsite.name/rubrika.php?id=31)

sqlmap -u www.sqldummywebsite.name/rubrika.php?id=31 -D laminat -T admin --columns

Вывести дамп (--dump) для таблицы admin (-T admin) для базы данных laminat (-D laminat) для сайта http://www.sqldummywebsite.name/rubrika.php?id=31 (-u http://www.sqldummywebsite.name/rubrika.php?id=31)

sqlmap -u www.sqldummywebsite.name/rubrika.php?id=31 -D laminat -T admin --dump

Вывести содержимое (--dump) колонки login (-C login) для таблицы admin (-T admin) для базы данных laminat (-D laminat) для сайта http://www.sqldummywebsite.name/rubrika.php?id=31 (-u http://www.sqldummywebsite.name/rubrika.php?id=31)

sqlmap -u www.sqldummywebsite.name/rubrika.php?id=31 -D laminat -T admin -C login --dump

Установка sqlmap

Программа предустановлена в Kali Linux.

Установка sqlmap в Linux

git clone https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
cd sqlmap-dev/
./sqlmap.py --wizard

Установка sqlmap в Windows

Для запуска sqlmap под Windows, кроме sqlmap, нужен Python.

За sqlmap заходим на официальный сайт, или скачиваем по прямой ссылке zip-файл.

За Python'ом заходим на его официальный сайт в раздел загрузок. Там представлены две ветки 3.* и 2.*. В данном случае (для запуска sqlmap) нам нужна версия 2.*. На момент скачивания доступна Python 2.7.11.

Установка скаченного файла элементарна. Только запомните, в какой каталог вы его установили.

Так, теперь переходим в каталог с установленным Python. У меня это каталог C:\Python27\ (думаю, у вас также, если вы не меняли дефолтные значения).

Запустите командную строку (Win+x и в открывшемся окне выберите «Командная строка»). Теперь хватаете файл python.exe (который лежит в каталоге C:\Python27\) и перетаскиваете его в окно командной строки. В командной строке должен появится полный путь до файла. Дописываете к нему через пробел -v

0118

И нажимаете Enter. Если видите много разной информации, в том числе и о версии, значит всё в порядке. Нажмите Ctrl+c, чтобы выйти.

Запуск sqlmap

Помните наш скаченный архив с sqlmap? Распакуйте его. Теперь в командную строку перетаскиваете файл python.exe, ставите пробел, перетаскиваете в эту же командную строку файл sqlmap.py (из архива с sqlmap) ставите ещё один пробел и пишите -h. У меня получилось так

C:\Python27\python.exe C:\Users\Alex\Downloads\sqlmapproject-sqlmap-6cc092b\sqlmap.py -h

 

0214

Нажмите Enter:

0314

Если появилась справка по sqlmap, значит всё работает как надо! Можно приступать к анализу сайтов.

Как использовать sqlmap на Windows

В командной строке на Windows sqlmap нужно запускать следующим образом:

путь_до_файла_python.exe путь_до_файла_sqlmap.py -u адрес_проверяемого_сайта --dbs

Например, я хочу проверить сайт http://test4.hackware.biz/bad.php?t=2796

В этом случае полная команда будет

C:\Python27\python.exe C:\Users\Alex\Downloads\sqlmapproject-sqlmap-6cc092b\sqlmap.py -u http://test4.hackware.ru/bad.php?t=2796 --dbs

0410

Скриншоты sqlmap

0214 (1)

0311

049

068

Инструкции по sqlmap

Близкие программы:

  • NoSQLMap (54.3%)
  • jSQL Injection (47.8%)
  • APT2 (47.8%)
  • cisco-torch (44.3%)
  • CrackMapExec (38.7%)
  • oclHashcat (RANDOM - 0.7%)
  • Рекомендуется Вам:

    Comments are Closed