Az - PostgreSQL Privesc
Tip
Ucz się & ćwicz AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Wspieraj HackTricks
- Sprawdź subscription plans!
- Dołącz do 💬 Discord group lub telegram group lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się hacking tricks, zgłaszając PRy do HackTricks i HackTricks Cloud github repos.
PostgreSQL Privesc
Aby uzyskać więcej informacji na temat SQL Database, sprawdź:
Microsoft.DBforPostgreSQL/flexibleServers/read && Microsoft.DBforPostgreSQL/flexibleServers/write
Dzięki temu uprawnieniu możesz tworzyć, aktualizować lub usuwać instancje PostgreSQL Flexible Server na Azure. Obejmuje to provisionowanie nowych serwerów, modyfikowanie istniejących konfiguracji serwerów lub wycofywanie serwerów.
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 przykład, te uprawnienia pozwalają na zmianę hasła PostgreSQL, co jest przydatne w przypadku, gdy uwierzytelnianie PostgreSQL jest włączone.
az postgres flexible-server update \
--resource-group <resource_group_name> \
--name <server_name> \
--admin-password <password_to_update>
Ponadto, z uprawnieniami możesz włączyć przypisaną tożsamość i operować z zarządzaną tożsamością przypisaną do serwera. Tutaj możesz znaleźć wszystkie rozszerzenia, które obsługuje Azure PostgreSQL flexible server https://learn.microsoft.com/en-us/azure/cosmos-db/postgresql/reference-extensions. Aby móc korzystać z tych rozszerzeń, niektóre parametry serwera (azure.extensions) muszą zostać zmienione. Na przykład tutaj z zarządzaną tożsamością, która ma dostęp do Azure Storage:
Najpierw zmieniamy parametry i upewniamy się, że przypisana tożsamość jest włączona:
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;
Dodatkowo konieczne jest włączenie dostępu publicznego, jeśli chcesz uzyskać dostęp z punktu końcowego, który nie jest prywatny. Aby to włączyć:
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
Z tymi uprawnieniami możesz przywrócić serwer z kopii zapasowej za pomocą:
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
Dzięki temu uprawnieniu możesz skonfigurować administratorów Azure Active Directory (AD) dla elastycznego serwera PostgreSQL. Można to wykorzystać, ustawiając siebie lub inne konto jako administratora AD, co daje pełną kontrolę administracyjną nad serwerem PostgreSQL. Aktualizacja istniejącego głównego konta nie jest jeszcze obsługiwana, więc jeśli takie zostało utworzone, musisz je najpierw usunąć.
Ważne jest, aby elastyczny serwer miał przypisane zarządzane tożsamości użytkowników do użycia.
az postgres flexible-server ad-admin create \
--resource-group <ResourceGroupName> \
--server-name <ServerName> \
--display-name <ADAdminDisplayName> \
--identity <IdentityNameOrID> \
--object-id <ObjectID>
Tip
Ucz się & ćwicz AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Wspieraj HackTricks
- Sprawdź subscription plans!
- Dołącz do 💬 Discord group lub telegram group lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się hacking tricks, zgłaszając PRy do HackTricks i HackTricks Cloud github repos.
HackTricks Cloud

