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

8.3 KiB
Raw Blame History

Az - PostgreSQL 数据库

{% hint style="success" %} 学习与实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE)
学习与实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)

支持 HackTricks
{% endhint %}

Azure PostgreSQL

Azure Database for PostgreSQL 是一个完全托管的 基于 PostgreSQL 社区版的 关系数据库服务。它旨在为多样化的应用需求提供可扩展性、安全性和灵活性。与 Azure MySQL 类似PostgreSQL 提供两种部署模型:

  • 单服务器(在退役路径上):
  • 针对简单、经济高效的 PostgreSQL 部署进行了优化。
  • 具有自动备份、基本监控和高可用性功能。
  • 适合具有可预测工作负载的应用程序。
  • 灵活服务器
  • 提供更大的数据库管理和配置控制。
  • 支持同一区域和跨区域的高可用性。
  • 具有弹性扩展、自动维护和节省成本的功能。
  • 允许启动和停止服务器以优化成本。

关键特性

  • 自定义维护窗口:安排更新以最小化干扰。
  • 主动监控:访问详细的指标和日志以跟踪和改善数据库性能。
  • 停止/启动服务器:用户可以停止和启动服务器。
  • 自动备份:内置每日备份,保留期可配置最长达 35 天。
  • 基于角色的访问:通过 Azure Active Directory 控制用户权限和管理访问。
  • 安全性和网络:可以管理服务器防火墙规则以确保安全的数据库访问,并根据需要分离虚拟网络配置。

枚举

{% tabs %} {% tab title="az cli" %} {% code overflow="wrap" %}

# 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>

{% endcode %} {% endtab %}

{% tab title="Az PowerShell" %} {% code overflow="wrap" %}

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>

{% endcode %} {% endtab %} {% endtabs %}

连接

使用扩展 rdbms-connect您可以通过以下方式访问数据库

{% code overflow="wrap" %}

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>;"

{% endcode %}

或 {% code overflow="wrap" %}

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

{% endcode %}

参考文献

权限提升

{% content-ref url="../az-privilege-escalation/az-postgresql-privesc.md" %} az-postgresql-privesc.md {% endcontent-ref %}

后期利用

{% content-ref url="../az-post-exploitation/az-postgresql-post-exploitation.md" %} az-postgresql-post-exploitation.md {% endcontent-ref %}

待办事项

  • 寻找一种方法以 ad-admin 访问以验证其是否为权限提升方法

{% hint style="success" %} 学习与实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习与实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)

支持 HackTricks
{% endhint %}