# Az - PostgreSQL-Datenbanken {{#include ../../../banners/hacktricks-training.md}} ## Azure PostgreSQL **Azure Database for PostgreSQL** ist ein vollständig verwalteter **relationaler Datenbankdienst, der auf der PostgreSQL** Community Edition basiert. Er wurde entwickelt, um Skalierbarkeit, Sicherheit und Flexibilität für unterschiedliche Anwendungsbedürfnisse zu bieten. Ähnlich wie Azure MySQL bietet PostgreSQL zwei Bereitstellungsmodelle: * **Single Server** (auf dem Rückzugspfad): - Optimiert für einfache, kosteneffiziente PostgreSQL-Bereitstellungen. - Bietet automatisierte Backups, grundlegende Überwachung und hohe Verfügbarkeit. - Ideal für Anwendungen mit vorhersehbaren Arbeitslasten. * **Flexible Server**: - Bietet mehr Kontrolle über Datenbankverwaltung und -konfiguration. - Unterstützt hohe Verfügbarkeit, sowohl in derselben Zone als auch über Zonen hinweg. - Bietet elastische Skalierung, automatisierte Wartung und kostensparende Funktionen. - Ermöglicht das Starten und Stoppen des Servers zur Kostenoptimierung. ### Hauptmerkmale * **Benutzerdefinierte Wartungsfenster**: Planen Sie Updates, um Störungen zu minimieren. * **Aktive Überwachung**: Zugriff auf detaillierte Metriken und Protokolle zur Verfolgung und Verbesserung der Datenbankleistung. * **Server Stop/Start**: Benutzer können den Server stoppen und starten. * **Automatische Backups**: Eingebaute tägliche Backups mit konfigurierbaren Aufbewahrungsfristen von bis zu 35 Tagen. * **Rollenbasierter Zugriff**: Steuern Sie Benutzerberechtigungen und administrativen Zugriff über Azure Active Directory. * **Sicherheit und Netzwerk**: Kann Firewall-Regeln für den sicheren Datenbankzugriff verwalten und virtuelle Netzwerk-Konfigurationen nach Bedarf trennen. ### Enumeration {% tabs %} {% tab title="az cli" %} {% code overflow="wrap" %} ```bash # List servers in a resource group az postgres flexible-server list --resource-group # List databases in a flexible-server az postgres flexible-server db list --resource-group --server-name # Show specific details of a Postgre database az postgres flexible-server db show --resource-group --server-name --database-name # List firewall rules of the a server az postgres flexible-server firewall-rule list --resource-group --name # List parameter values for a felxible server az postgres flexible-server parameter list --resource-group --server-name # List private link az postgres flexible-server private-link-resource list --resource-group --server-name # List all ad-admin in a server az postgres flexible-server ad-admin list --resource-group --server-name # List all user assigned managed identities from the server az postgres flexible-server identity list --resource-group --server-name # List the server backups az postgres flexible-server backup list --resource-group --name # List all read replicas for a given server az postgres flexible-server replica list --resource-group --name # List migrations az postgres flexible-server migration list --resource-group --name # Get the server's advanced threat protection setting az postgres flexible-server advanced-threat-protection-setting show --resource-group --name # List all of the maintenances of a flexible server az postgres flexible-server maintenance list --resource-group --server-name # List log files for a server. az postgres flexible-server server-logs list --resource-group --server-name ``` {% endcode %} {% endtab %} {% tab title="Az PowerShell" %} {% code overflow="wrap" %} ```bash Get-Command -Module Az.PostgreSql # List flexible-servers in a resource group Get-AzPostgreSqlFlexibleServer -ResourceGroupName # List databases in a flexible-server Get-AzPostgreSqlFlexibleServerDatabase -ResourceGroupName -ServerName # List firewall rules of the a flexible-server Get-AzPostgreSqlFlexibleServerFirewallRule -ResourceGroupName -ServerName # List configuration settings of a flexible server Get-AzPostgreSqlFlexibleServerConfiguration -ResourceGroupName -ServerName # Get the connection string for a flexible server Get-AzPostgreSqlFlexibleServerConnectionString -ResourceGroupName -ServerName -Client Get-AzPostgreSqlFlexibleServerLocationBasedCapability -Location # List servers in a resource group Get-AzPostgreSqlServer -ResourceGroupName ``` {% endcode %} {% endtab %} {% endtabs %} ### Verbindung Mit der Erweiterung rdbms-connect können Sie auf die Datenbank zugreifen mit: {% code overflow="wrap" %} ```bash az postgres flexible-server connect -n -u -p --interactive #or execute commands az postgres flexible-server execute \ -n \ -u \ -p "" \ -d \ --querytext "SELECT * FROM ;" ``` {% endcode %} Oder {% code overflow="wrap" %} ```bash psql -h testpostgresserver1994.postgres.database.azure.com -p 5432 -U adminuser ``` {% endcode %} ## Referenzen * [https://learn.microsoft.com/en-us/azure/postgresql/](https://learn.microsoft.com/en-us/azure/postgresql/) * [https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/service-overview](https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/service-overview) * [https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/overview](https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/overview) ## Privilegieneskalation {% content-ref url="../az-privilege-escalation/az-postgresql-privesc.md" %} [az-postgresql-privesc.md](../az-privilege-escalation/az-postgresql-privesc.md) {% endcontent-ref %} ## Post-Exploitation {% content-ref url="../az-post-exploitation/az-postgresql-post-exploitation.md" %} [az-postgresql-post-exploitation.md](../az-post-exploitation/az-postgresql-post-exploitation.md) {% endcontent-ref %} ## ToDo * Eine Möglichkeit suchen, um mit ad-admin zuzugreifen, um zu überprüfen, ob es sich um eine Privilegieneskalationsmethode handelt {{#include ../../../banners/hacktricks-training.md}}