Sqlmap является открытым инструментом для проведения пентестов, который автоматизирует процесс обнаружения и эксплуатации SQL инъекций, а также процесс захвата серверов базы данных. Он идет с мощным встроенным движком обнаружения и с множеством свойств для выполняющего пентест. Также в нем присутствует широкий диапазон коммутаторов, начиная с fingerprinting базы данных и более обширной выборки данных из нее, и заканчивая получением доступа к лежащей в основе файловой системе и выполнением команд в операционной системе с помощью out-of-band соединения.
Sqlmap способен определить и использовать пять разных типов SQL инъекций:
Свойства sqlmap
Свойства, встроенные в sqlmap, включают в себя:
Общие свойства
Фингерпринт и перечисление особенностей
Некоторые из этих техник, детально описаны в работе Advanced SQL injection to operating system full control (Дополнительная SQL инъекция в операционную систему для полного контроля)
и наглядно продемонстрированы в слайдах Expanding the control over the operating system from the database (Расширение контроля над операционной системой из базы даных).
Перейти на страницу документации sqlmap
Установка
Вы можете скачать самый последний tarball нажав здесь или самый последний zipball нажав здесь.
Предпочтительно, скачать sqlmap путем клонирования Git репозитория:
sqlmap отлично работает с
Usage
Для получения списка базовых опций и коммутаторов используйте:
Для получения списка всех опций и коммутаторов используйте:
Это заинтересует вас:
Техники SQL инъекций
Sqlmap способен определить и использовать пять разных типов SQL инъекций:
- Boolean-based blind: sqlmap меняет местами или присоединяет к пораженному параметру HTTP запроса, синтаксически верную строку SQL предложения, содержащую SELECT
суб-предложение или любое другое SQL предложение, которое пользователь захочет извлечь. Для каждого HTTP-отклика, путем проведения сравнения хедера/тела HTTP-отклика и оригинального запроса, данный инструмент обнаруживает и вычисляет выход введенных предложений одного за другим. В качестве альтернативы, пользователь может предоставить строку или верное выражение для поиска соответствий на реальных страницах. Алгоритм бисекции реализован в sqlmap, чтобы данная техника могла извлекать каждый символ на выходе максимум из семи HTTP запросов. В случае, если выход не находится в пределах открытого текста, sqlmap адаптирует алгоритм большим диапазоном для определения порта. - Time-based blind: sqlmap меняет местами или присоединяет к пораженному параметру HTTP запроса синтаксически верную строку SQL предложения, содержащую запрос, который задерживает внутренний DBMS, для того чтобы вернуться на несколько секунд. Для каждого HTTP запроса, путем сравнения времени HTTP отклика и первоначального запроса, данный инструмент обнаруживает и вычисляет выход введенных предложений одного за другим. Также как и в предыдущей технике здесь применяется бисекционный алгоритм.
- Базирующиеся на ошибке: sqlmap меняет местами или присоединяет к пораженному параметру специфическое для баз данных сообщение об ошибке, которое провоцирует предложение и анализирует хедер и тело HTTP отклика, в поисках DBMS сообщения об ошибке, содержащего введенную и заранее определенную цепь символов и предложения подзапроса на выходе. Эта техника работает только тогда, когда веб-приложение было настроено на открытие сообщений об ошибках системы управления базами данных.
- Базирующиеся на UNION запросе: sqlmap меняет местами или присоединяет к пораженному параметру HTTP запроса, синтаксически верную строку SQL предложения начиная с UNION ALL SELECT . Эта техника работает, когда страница веб-приложения проходит прямо к выходу SELECT предложения в цикле for , или чего-то наподобие, таким образом, чтобы каждая строчка запроса выхода была распечатана на странице содержания. sqlmap также способен использовать частичные (однократные) UNION запросы уязвимостей SQL инъекции, которые возникают, когда выход предложения не зацикленs в for конструкции, тогда как отображается только первый заход запроса выхода.
- Стековые запросы, также известны как piggy backing: sqlmap проверяет поддерживает ли веб-приложение стековые запросы и затем, в случае если поддерживает, sqlmap прикрепляет к пораженной части HTTP запроса точку с запятой (; ) следующую за SQL предложением, которое будет выполнено. Эта техника больше полезна для запуска SQL предложения, чем для SELECT , как, например, предложения определения данных или предложения управления данными, возможно ведущие к доступу чтения и переписывания файловой системы и выполнению команд в операционной системе в зависимости от лежащей в основе внутренней системы управления базой данных и привилегий пользовательской сессии.
Свойства sqlmap
Свойства, встроенные в sqlmap, включают в себя:
Общие свойства
- Полная поддержка 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 query и stacked queries.
- Поддержка прямого подключения к базе данных без прохождения через SQL инъекцию, путем предоставления DBMS учетных данных, IP адреса, порта и имени базы данных.
- Также возможно предоставить одиночную URL цель, получить список целей из
Ссылка скрыта от гостейилиСсылка скрыта от гостейжурнала файлов запроса, получить полный запрос из текстового файла или получить список целей с помощью предоставления sqlmap Google дорков, которые запрашивают поисковик Google и затем анализируют страницу результатов поиска. Вы также можете определить последовательность символов и знаков, которая используется для определения, какой из анализируемых адресов следует проверить.
- Тесты, предоставляющие GET параметры, POST параметры, значения HTTP Cookie хедера, значения HTTP User-Agent хедера и значения HTTP Referer хедера для определения и использования уязвимостей SQL инъекции. Также можно указать перечисленный через запятую список параметров, которые необходимо протестировать.
- Опция для указания максимального количества одновременных
HTTP(S) запросов (многопоточность) для ускорения слепой SQL инъекции. Или наоборот, можно просто указать количество секунд задержки между каждым HTTP(S) запросом. Другие оптимизации, предназначенные для ускорения эксплуатации, также встроены. - Строка поддержки HTTP Cookie header , полезна, когда веб-приложение требует аутентификацию, которая базируется на куки, а вы обладаете этой информацией, и в случае, если вы просто хотите протестировать и использовать SQL инъекцию на данном значении хедера. Вы также можете включить URL кодирование Cookie.
- Автоматически обрабатывает HTTP Set-Cookie хедер из приложения, переустанавливая сессию, если она уже подходит к концу. Тестирование и использование этих величин также поддерживается. И наоборот, вы можете заставить игнорировать любой Set-Cookie хедер.
- Поддержка HTTP протокола Basic, Digest, NTLM и сертификата аутентификации.
- Поддержка HTTP(S) proxy для обхода запросов к целевому приложению, которое также работает вместе с HTTPS запросами и с аутентифицированными прокси-серверами.
- Опции для фальсификации значения HTTP Referer хедера и значения HTTP User-Agent хедера, указанные пользователем, или случайно выбранные из текстового файла.
- Поддержка увеличения уровня словесного наполнения выходных сообщений: существует семь уровней словесного наполнения.
- Поддержка разборки HTML форм с целевого URL и поддельных HTTP(S) запросов против тех страниц, чтобы протестировать параметры формы против уязвимостей.
- Гранулярность и гибкость с точки зрения, как пользовательских коммутаторов, так и свойств.
- Оценка времени прибытия поддерживается для каждого запроса, обновляясь в реальном времени, чтобы предоставить пользователю обзор, сколько времени займет получение выходных данных запросов.
- Автоматическое сохранение сессий (запросов и их вывод, даже частично извлеченных) на текстовый файл в реальном времени, в момент выборки данных, а также продолжение инъекции путем анализа файла сессии.
- Поддержка для чтения опций из файла конфигураций INI вместо указания всех коммутаторов в командной строке каждый раз. Поддержка генерирования файла конфигурации, основываясь предоставленных коммутаторов командной строки.
- Поддержка репликации внутренней структуры таблиц базы данных и запись на локальную базу данных SQLite 3.
- Опция для обновления sqlmap до последней разработанной версии из репозитория.
- Поддержка разделения HTTP(S) откликов и отображение любых DBMS сообщений об ошибке пользователю.
- Интеграция с другими проектами IT безопасности с открытым исходным кодом, такими как Metasploit и w3af.
Фингерпринт и перечисление особенностей
- Обширное серверное приложение версии программного обеспечения баз данных и лежащая в основе операционной системы сигнатура основывается на сообщениях об ошибках, разборе баннера, сравнения выходных функций и особенностей, таких как MySQL инъекция комментария. Также можно воздействовать на имя сервера системы управления базой данных, если вам оно уже известно.
- Базовое программное обеспечение веб-сервера и технологии веб-приложения фингерпринт.
- Поддержка извлечения DBMS баннера, пользователя сессии и текущей информации базы данных. Данный инструмент может также проверить, является ли пользователь сессии администратором базы данных (DBA).
- Поддержка перечисления пользователей, хэшей паролей, прав доступа, ролей, баз данных, таблиц и колонок.
- Автоматическое распознавание формата хэшей паролей и поддержка их взлома с помощью dictionary-based атаки.
- Поддержка brute-force имени таблиц и колонок. Это очень полезно, когда пользователь сессии не имеет доступа к чтению системных таблиц, содержащих информацию о схеме, или когда система управления базой данных нигде не хранит эту информацию (e.g. MySQL < 5.0).
- Полная поддержка дампа таблиц базы данных, диапазон записей или определенных столбцов устанавливается по выбору пользователя. Пользователь также может выбрать сброс только лишь диапазон символов записей в каждой колонке.
- Поддержка автоматического сброса всех схем баз данных и записей. Возможно, это делается, чтобы исключить из дампа базы данных системы.
- Поддержка поиска собственных имен базы данных, конкретных таблиц во всех базах данных или конкретных колонок во всех таблицах баз данных. Это полезно, например, для определения таблиц содержащих пользовательские учетные данные приложения, где соответствующее имя колонки содержит такие строки как имя и пароль.
- Поддержка запуска пользовательского SQL предложения(ий) как в интерактивном SQL подключении к серверу базы данных. sqlmap автоматически разбивает предоставленное предложение, определяет какую технику сначала необходимо использовать и как должным образом поместить SQL пейлоад.
Некоторые из этих техник, детально описаны в работе Advanced SQL injection to operating system full control (Дополнительная SQL инъекция в операционную систему для полного контроля)
и наглядно продемонстрированы в слайдах Expanding the control over the operating system from the database (Расширение контроля над операционной системой из базы даных).
- Поддержка введения заданных пользователем функций: пользователь может компилировать совместно используемую библиотеку, затем использовать sqlmap, чтобы создать на сервере DBMS заданные пользователем функции из компилированного файла совместно с используемой библиотекой. Эти UDF затем могут быть запущены, и возможно удалены через sqlmap. Это поддерживается на базах данных MySQL или PostgreSQL.
- Поддержка загрузки и отправки любого лежащего в основе системы файла из сервера базы данных на таких базах данных как MySQL, PostgreSQL или Microsoft SQL Server.
- Поддержка выполнения условных команд и извлечения их стандартного выхода на лежащей в основе операционной системы базе данных на таких базах данных как MySQL, PostgreSQL or Microsoft SQL Server.
- На таких базах данных как MySQL и PostgreSQL через заданные пользователем функции инъекции и ее выполнение.
- На Microsoft SQL Server через xp_cmdshell() хранимую процедуру. Также, хранимая процедура становится заново доступной, если была ранее заблокирована или создается из ниоткуда, при условии что ранее была удалена DBA.
- Поддержка установки внеполосного TCP соединения между атакующей машиной и лежащей в основе операционной системы базой данных. Этот канал может быть интерактивной командной строкой, сессией Meterpreter или сессией графического пользовательского интерфейса в зависимости от выбора пользователя. Sqlmap полагается на Metasploit для создания шелкода и внедрения четырех различных техник, чтобы запустить их на сервере базы данных. Это следующие техники:
- Выполнение в оперативной памяти базы данных шелкода Metasploit через собственную функцию sqlmap, заданную пользователем sys_bineval() .Поддерживается на MySQL и PostgreSQL.
- Выгрузка и выполнение Metasploit самостоятельного пейлоад через sqlmap собственную функцию определенную пользователем sys_exec() на MySQL и PostgreSQL или через xp_cmdshell() на Microsoft SQL Server.
- Выполнение Metasploit шелкода путем проведения SMB отражательной атаки (
link removedс UNC путем запроса отправляемого с сервера базы данных на машину атакующего, где Metasploit smb_relay сервер эксплойта слушателей. Поддерживается при запуске sqlmap с большими правами доступа (uid=0 ) на Linux/Unix и целевой DBMS с правами администратора на Windows. - Выполнение в оперативной памяти базой данных шелкода Metasploit на основе Microsoft SQL Server 2000 и 2005 sp_replwritetovarbin хранимых процедур и heap-based переполнения буфера (
link removed). sqlmap имеет свой собственный эксплойт для запуска уязвимости с автоматическим обходом защиты DEP памяти, но он опирается на Metasploit для генерирования шелкода, чтобы выполняться при успешной эксплуатации. - Поддержка расширения пользовательских прав процесса для базы данных через команду Metasploit’s getsystem , которая включает в себя, помимо прочего
Ссылка скрыта от гостейтехнику
- Поддержка доступа (read/add/delete) к Windows registry hives.
Перейти на страницу документации sqlmap
Установка
Вы можете скачать самый последний tarball нажав здесь или самый последний zipball нажав здесь.
Предпочтительно, скачать sqlmap путем клонирования Git репозитория:
Код:
git clone https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
Ссылка скрыта от гостей
версиями 2.6.x и 2.7.x на любой платформе.Usage
Для получения списка базовых опций и коммутаторов используйте:
Код:
python sqlmap.py -h
Код:
python sqlmap.py -hh