Az - PostgreSQL Privesc

Tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az 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 server. Η ενημέρωση υπάρχοντος κύριου δεν υποστηρίζεται ακόμα, οπότε αν υπάρχει ένας δημιουργημένος, πρέπει πρώτα να τον διαγράψετε.

Είναι σημαντικό ο 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)
Μάθετε & εξασκηθείτε στο Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks