Az - SQL Database Privesc

Reading time: 7 minutes

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: 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 सर्वरों को अपडेट या बनाकर विशेषाधिकार वृद्धि कर सकता है और महत्वपूर्ण कॉन्फ़िगरेशन को संशोधित कर सकता है, जिसमें प्रशासनिक क्रेडेंशियल शामिल हैं। यह अनुमति उपयोगकर्ता को सर्वर गुणों को अपडेट करने की अनुमति देती है, जिसमें SQL सर्वर प्रशासनिक पासवर्ड शामिल है, जिससे अनधिकृत पहुंच या सर्वर पर नियंत्रण प्राप्त करना संभव होता है। वे नए सर्वर भी बना सकते हैं, जो संभावित रूप से दुर्भावनापूर्ण उद्देश्यों के लिए छायादार बुनियादी ढाँचा पेश कर सकते हैं। यह विशेष रूप से महत्वपूर्ण हो जाता है जब "Microsoft Entra Authentication Only" बंद होता है, क्योंकि वे SQL-आधारित प्रमाणीकरण का लाभ उठाकर बिना किसी प्रतिबंध के पहुंच प्राप्त कर सकते हैं।

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>

इसके अलावा, यदि आप किसी गैर-निजी एंडपॉइंट से एक्सेस करना चाहते हैं तो सार्वजनिक एक्सेस सक्षम होना आवश्यक है, इसे सक्षम करने के लिए:

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

इसके अलावा, अनुमतियों के साथ आप असाइन पहचान सक्षम कर सकते हैं, जो सर्वर से जुड़े प्रबंधित पहचान के साथ कार्य करता है। उदाहरण के लिए, यहाँ एक प्रबंधित पहचान है जो 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

एक हमलावर Azure SQL सर्वरों पर फ़ायरवॉल नियमों में हेरफेर कर सकता है ताकि अनधिकृत पहुँच की अनुमति मिल सके। इसका उपयोग सर्वर को विशिष्ट IP पते या पूरे IP रेंज, जिसमें सार्वजनिक IP शामिल हैं, के लिए खोलने के लिए किया जा सकता है, जिससे दुर्भावनापूर्ण अभिनेताओं के लिए पहुँच सक्षम होती है। यह पोस्ट-एक्सप्लॉइटेशन गतिविधि मौजूदा नेटवर्क सुरक्षा नियंत्रणों को बायपास करने, स्थिरता स्थापित करने, या संवेदनशील संसाधनों को उजागर करके वातावरण के भीतर पार्श्व आंदोलन को सुविधाजनक बनाने के लिए उपयोग की जा सकती है।

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>

अतिरिक्त रूप से, Microsoft.Sql/servers/outboundFirewallRules/delete अनुमति आपको एक फ़ायरवॉल नियम को हटाने की अनुमति देती है।
नोट: सार्वजनिक पहुंच सक्षम होना आवश्यक है

Microsoft.Sql/servers/ipv6FirewallRules/write

इस अनुमति के साथ, आप Azure SQL Server पर IPv6 फ़ायरवॉल नियम बना, संशोधित या हटा सकते हैं। यह एक हमलावर या अधिकृत उपयोगकर्ता को मौजूदा नेटवर्क सुरक्षा कॉन्फ़िगरेशन को बायपास करने और सर्वर तक अनधिकृत पहुंच प्राप्त करने में सक्षम बना सकता है। किसी भी IPv6 पते से ट्रैफ़िक की अनुमति देने वाला एक नियम जोड़कर, हमलावर सर्वर को बाहरी पहुंच के लिए खोल सकता है।

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>

अतिरिक्त रूप से, Microsoft.Sql/servers/ipv6FirewallRules/delete अनुमति आपको एक फ़ायरवॉल नियम को हटाने की अनुमति देती है।
नोट: सार्वजनिक पहुंच सक्षम होना आवश्यक है

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

इन अनुमतियों के साथ आप Azure SQL Server वातावरण में SQL डेटाबेस तक पहुंचकर महत्वपूर्ण जानकारी प्राप्त कर सकते हैं। नीचे दिए गए कमांड का उपयोग करके, एक हमलावर या अधिकृत उपयोगकर्ता खुद को या किसी अन्य खाते को Azure AD प्रशासक के रूप में सेट कर सकता है। यदि "Microsoft Entra Authentication Only" सक्षम है, तो आप सर्वर और इसके उदाहरणों तक पहुंच सकते हैं। यहाँ एक SQL सर्वर के लिए Azure AD प्रशासक सेट करने का कमांड है:

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

इन अनुमतियों के साथ, आप Azure SQL Server पर "Microsoft Entra Authentication Only" को कॉन्फ़िगर और लागू कर सकते हैं, जो कुछ परिदृश्यों में विशेषाधिकार वृद्धि को सुविधाजनक बना सकता है। एक हमलावर या एक अधिकृत उपयोगकर्ता जिनके पास ये अनुमतियाँ हैं, Azure AD-केवल प्रमाणीकरण को सक्षम या अक्षम कर सकता है।

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

अपने 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

यदि आप व्यवस्थापक के रूप में लॉगिन करते हैं, तो आप स्वयं और अन्य उपयोगकर्ताओं की नीतियों को हटा सकते हैं।

sql
DROP SECURITY POLICY [Name_of_policy];

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें