Az - PostgreSQL Privesc

Tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримка HackTricks

PostgreSQL Privesc

Для отримання додаткової інформації про SQL Database перегляньте:

Az - PostgreSQL

Microsoft.DBforPostgreSQL/flexibleServers/read && Microsoft.DBforPostgreSQL/flexibleServers/write

З цією дозволом ви можете створювати, оновлювати або видаляти екземпляри PostgreSQL Flexible Server на Azure. Це включає в себе постачання нових серверів, модифікацію існуючих конфігурацій серверів або виведення серверів з експлуатації.

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>

Ці дозволи дозволяють змінювати пароль PostgreSQL, що, звичайно, корисно у випадку, якщо автентифікація PostgreSQL увімкнена.

az postgres flexible-server update \
--resource-group <resource_group_name> \
--name <server_name> \
--admin-password <password_to_update>

Крім того, з правами ви можете активувати призначену ідентичність, працюючи з керованою ідентичністю, прикріпленою до сервера. Тут ви можете знайти всі розширення, які підтримує Azure PostgreSQL flexible server https://learn.microsoft.com/en-us/azure/cosmos-db/postgresql/reference-extensions. Щоб мати можливість використовувати ці розширення, потрібно змінити деякі параметри сервера (azure.extensions). Наприклад, тут з керованою ідентичністю, яка може отримати доступ до Azure Storage:

Спочатку ми змінюємо параметри і переконуємося, що призначена ідентичність активована:

az postgres flexible-server parameter set \
--resource-group <YourResourceGroupName> \
--server-name <YourServerName> \
--name azure.extensions \
--value "AZURE_STORAGE"

az postgres flexible-server identity update \
--resource-group <YourResourceGroupName> \
--server-name <YourServerName> \
--system-assigned Enabled

CREATE EXTENSION IF NOT EXISTS azure_storage;

CREATE EXTERNAL DATA SOURCE ManagedIdentity

SELECT azure_storage.account_add('<storage-account>', '<storage-key>');

SELECT *
FROM azure_storage.blob_get(
'<storage-account>',
'<container>',
'message.txt',
decoder := 'text'
) AS t(content text)
LIMIT 1;

Додатково необхідно увімкнути публічний доступ, якщо ви хочете отримати доступ з непри приватного кінцевого пункту, щоб увімкнути це:

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.DBforPostgreSQL/flexibleServers/backups/read, Microsoft.ManagedIdentity/userAssignedIdentities/assign/action

З цими дозволами ви можете відновити сервер з резервної копії за допомогою:

az postgres flexible-server restore \
--resource-group <RESOURCE_GROUP> \
--name <NEW_SERVER_NAME> \
--source-server <SOURCE_SERVER_NAME> \
--restore-time "<ISO8601_TIMESTAMP>" \
--yes

Microsoft.DBforPostgreSQL/flexibleServers/read, Microsoft.DBforPostgreSQL/flexibleServers/write, Microsoft.ManagedIdentity/userAssignedIdentities/assign/action, Microsoft.DBforPostgreSQL/flexibleServers/administrators/write && Microsoft.DBforPostgreSQL/flexibleServers/administrators/read

З цією дозволом ви можете налаштувати адміністраторів Azure Active Directory (AD) для PostgreSQL Flexible Server. Це можна використати, встановивши себе або інший обліковий запис як адміністратора AD, що надає повний адміністративний контроль над сервером PostgreSQL. Оновлення існуючого принципала поки що не підтримується, тому, якщо він вже створений, ви повинні спочатку видалити його.

Важливо, щоб у flexible-server були призначені керовані ідентичності для використання.

az postgres flexible-server ad-admin create \
--resource-group <ResourceGroupName> \
--server-name <ServerName> \
--display-name <ADAdminDisplayName> \
--identity <IdentityNameOrID> \
--object-id <ObjectID>

Tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримка HackTricks