Files
hacktricks-cloud/src/pentesting-cloud/azure-security/az-services/az-postgresql.md

6.4 KiB

Az - Bases de données PostgreSQL

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

Azure PostgreSQL

Azure Database for PostgreSQL est un service de base de données relationnelle entièrement géré basé sur la version Community de PostgreSQL. Il est conçu pour offrir évolutivité, sécurité et flexibilité pour divers besoins d'application. Comme Azure MySQL, PostgreSQL propose deux modèles de déploiement :

  • Serveur unique (sur la voie de la retraite) :
  • Optimisé pour des déploiements PostgreSQL simples et rentables.
  • Comprend des sauvegardes automatisées, une surveillance de base et une haute disponibilité.
  • Idéal pour les applications avec des charges de travail prévisibles.
  • Serveur flexible :
  • Offre un meilleur contrôle sur la gestion et la configuration de la base de données.
  • Prend en charge la haute disponibilité, à la fois dans la même zone et à travers les zones.
  • Comprend une mise à l'échelle élastique, une maintenance automatisée et des fonctionnalités d'économie de coûts.
  • Permet de démarrer et d'arrêter le serveur pour optimiser les coûts.

Caractéristiques clés

  • Fenêtres de maintenance personnalisées : Planifiez des mises à jour pour minimiser les interruptions.
  • Surveillance active : Accédez à des métriques et des journaux détaillés pour suivre et améliorer les performances de la base de données.
  • Arrêter/Démarrer le serveur : Les utilisateurs peuvent arrêter et démarrer le serveur.
  • Sauvegardes automatiques : Sauvegardes quotidiennes intégrées avec des périodes de conservation configurables jusqu'à 35 jours.
  • Accès basé sur les rôles : Contrôlez les autorisations des utilisateurs et l'accès administratif via Azure Active Directory.
  • Sécurité et mise en réseau : peut gérer les règles de pare-feu du serveur pour un accès sécurisé à la base de données et détacher les configurations de réseau virtuel si nécessaire.

Énumération

{{#tabs }} {{#tab name="az cli" }}

# List servers in a resource group
az postgres flexible-server list --resource-group <resource-group-name>
# List databases in a flexible-server
az postgres flexible-server db list --resource-group <resource-group-name> --server-name <server_name>
# Show specific details of a Postgre database
az postgres flexible-server db show --resource-group <resource-group-name> --server-name <server_name> --database-name <database_name>

# List firewall rules of the a server
az postgres flexible-server firewall-rule list --resource-group <resource-group-name> --name <server_name>
# List parameter values for a felxible server
az postgres flexible-server parameter list --resource-group <resource-group-name> --server-name <server_name>
# List private link
az postgres flexible-server private-link-resource list --resource-group <resource-group-name> --server-name <server_name>

# List all ad-admin in a server
az postgres flexible-server ad-admin list --resource-group <resource-group-name> --server-name <server_name>
# List all user assigned managed identities from the server
az postgres flexible-server identity list --resource-group <resource-group-name> --server-name <server_name>

# List the server backups
az postgres flexible-server backup list --resource-group <resource-group-name> --name <server_name>
# List all read replicas for a given server
az postgres flexible-server replica list --resource-group <resource-group-name> --name <server_name>
# List migrations
az postgres flexible-server migration list --resource-group <resource-group-name> --name <server_name>

# Get the server's advanced threat protection setting
az postgres flexible-server advanced-threat-protection-setting show --resource-group <resource-group-name> --name <server_name>
# List all of the maintenances of a flexible server
az postgres flexible-server maintenance list --resource-group <resource-group-name> --server-name <server_name>
# List log files for a server.
az postgres flexible-server server-logs list --resource-group <resource-group-name> --server-name <server_name>

{{#endtab }}

{{#tab name="Az Powershell" }}

Get-Command -Module Az.PostgreSql

# List flexible-servers in a resource group
Get-AzPostgreSqlFlexibleServer -ResourceGroupName <resource-group-name>
# List databases in a flexible-server
Get-AzPostgreSqlFlexibleServerDatabase -ResourceGroupName <resource-group-name> -ServerName <server_name>

# List firewall rules of the a flexible-server
Get-AzPostgreSqlFlexibleServerFirewallRule -ResourceGroupName <resource-group-name> -ServerName <server_name>

# List configuration settings of a flexible server
Get-AzPostgreSqlFlexibleServerConfiguration -ResourceGroupName <resource-group-name> -ServerName <server_name>
# Get the connection string for a flexible server
Get-AzPostgreSqlFlexibleServerConnectionString -ResourceGroupName <resource-group-name> -ServerName <server_name> -Client <client>

Get-AzPostgreSqlFlexibleServerLocationBasedCapability -Location <location>

# List servers in a resource group
Get-AzPostgreSqlServer -ResourceGroupName <resource-group-name>

{{#endtab }} {{#endtabs }}

Connexion

Avec l'extension rdbms-connect, vous pouvez accéder à la base de données avec :

az postgres flexible-server connect -n <server-name> -u <username> -p <password> --interactive

#or execute commands
az postgres flexible-server execute \
-n <server-name> \
-u <username> \
-p "<password>" \
-d <database-name> \
--querytext "SELECT * FROM <table-name>;"

Ou

psql -h testpostgresserver1994.postgres.database.azure.com -p 5432 -U adminuser <database-name>

Références

Escalade de privilèges

{{#ref}} ../az-privilege-escalation/az-postgresql-privesc.md {{#endref}}

Post-exploitation

{{#ref}} ../az-post-exploitation/az-postgresql-post-exploitation.md {{#endref}}

À faire

  • Chercher un moyen d'accéder avec ad-admin pour vérifier si c'est une méthode d'escalade de privilèges

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