# Az - PostgreSQL Databases
{% hint style="success" %}
Learn & practice AWS Hacking:
[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)
\
Learn & practice GCP Hacking:
[**HackTricks Training GCP Red Team Expert (GRTE)**
](https://training.hacktricks.xyz/courses/grte)
Support HackTricks
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %}
## Azure PostgreSQL
**Azure Database for PostgreSQL** is a fully managed **relational database service based on the PostgreSQL** Community Edition. It is designed to provide scalability, security, and flexibility for diverse application needs. Similar to Azure MySQL, PostgreSQL offers two deployment models:
* **Single Server** (on the retirement path):
- Optimized for straightforward, cost-effective PostgreSQL deployments.
- Features automated backups, basic monitoring, and high availability.
- Ideal for applications with predictable workloads.
* **Flexible Server**:
- Provides greater control over database management and configuration.
- Supports high availability, both in the same zone and across zones.
- Features elastic scaling, automated maintenance, and cost-saving functionality.
- Allows starting and stopping the server to optimize costs.
### Key Features
* **Custom Maintenance Windows**: Schedule updates to minimize disruption.
* **Active Monitoring**: Access detailed metrics and logs to track and improve database performance.
* **Stop/Start Server**: Users can stop and start the server.
* **Automatic Backups**: Built-in daily backups with retention periods configurable up to 35 days.
* **Role-Based Access**: Control user permissions and administrative access through Azure Active Directory.
* **Security and Networking**: can manage server firewall rules for secure database access and detach virtual network configurations as needed.
### 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" %}
```powershell
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 %}
### Connection
With the extension rdbms-connect you can access the database with:
{% 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 %}
Or
{% code overflow="wrap" %}
```bash
psql -h testpostgresserver1994.postgres.database.azure.com -p 5432 -U adminuser
```
{% endcode %}
## References
* [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)
## Privilege Escalation
{% 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
* Look a way to access with ad-admin to verify its a privesc method
{% hint style="success" %}
Learn & practice AWS Hacking:
[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)
\
Learn & practice GCP Hacking:
[**HackTricks Training GCP Red Team Expert (GRTE)**
](https://training.hacktricks.xyz/courses/grte)
Support HackTricks
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %}