# Az - PostgreSQL Privesc

{{#include ../../../banners/hacktricks-training.md}}

## PostgreSQL Privesc
Pour plus d'informations sur SQL Database, consultez :

{{#ref}}
../az-services/az-postgresql.md
{{#endref}}

### `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.
```bash
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.
```bash
az postgres flexible-server update \
--resource-group <resource_group_name> \
--name <server_name> \
--admin-password <password_to_update>
```
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 :
```bash
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.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 à un utilisateur à utiliser.
```bash
az postgres flexible-server ad-admin create \
--resource-group <ResourceGroupName> \
--server-name <ServerName> \
--display-name <ADAdminDisplayName> \
--identity <IdentityNameOrID> \
--object-id <ObjectID>
```
{{#include ../../../banners/hacktricks-training.md}}
