# Az - CosmosDB Post Exploitation

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

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

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


### `Microsoft.DocumentDB/databaseAccounts/read` && `Microsoft.DocumentDB/databaseAccounts/write`
Avec cette permission, vous pouvez créer ou mettre à jour des comptes Azure Cosmos DB. Cela inclut la modification des paramètres au niveau du compte, l'ajout ou la suppression de régions, le changement des niveaux de cohérence et l'activation ou la désactivation de fonctionnalités telles que les écritures multi-régions.
```bash
az cosmosdb update \
--name <account_name> \
--resource-group <resource_group_name> \
--public-network-access ENABLED
```
### `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/read` && `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/write`
Avec cette autorisation, vous pouvez créer ou modifier des conteneurs (collections) au sein d'une base de données SQL d'un compte Azure Cosmos DB. Les conteneurs sont utilisés pour stocker des données, et les modifications apportées peuvent affecter la structure de la base de données et les modèles d'accès.
```bash
# Create
az cosmosdb sql container create \
--account-name <account_name> \
--resource-group <resource_group_name> \
--database-name <database_name> \
--name <container_name> \
--partition-key-path <partition_key_path>

#Update
az cosmosdb sql container update \
--account-name <account_name> \
--resource-group <resource_group_name> \
--database-name <database_name> \
--name <container_name> \
--ttl 3600
```
### `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/write` && `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/read`
Avec cette autorisation, vous pouvez créer ou modifier des bases de données SQL au sein d'un compte Azure Cosmos DB. Cela permet de gérer la structure de la base de données et d'ajouter de nouvelles bases de données au compte. Bien que cette autorisation permette la création de bases de données, une utilisation inappropriée ou non autorisée pourrait entraîner une consommation de ressources inutile, des coûts accrus ou des inefficacités opérationnelles.
```bash
az cosmosdb sql database create \
--account-name <account_name> \
--resource-group <resource_group_name> \
--name <database_name>
```
### `Microsoft.DocumentDB/databaseAccounts/failoverPriorityChange/action`

Avec cette autorisation, vous pouvez changer la priorité de basculement des régions pour un compte de base de données Azure Cosmos DB. Cette action détermine l'ordre dans lequel les régions deviennent primaires lors d'un événement de basculement. Une utilisation incorrecte de cette autorisation peut perturber la haute disponibilité de la base de données ou entraîner des impacts opérationnels non souhaités.
```bash
az cosmosdb failover-priority-change \
--name <database_account_name> \
--resource-group <resource_group_name> \
--failover-policies <region1=priority1> <region2=priority2>

```
### `Microsoft.DocumentDB/databaseAccounts/regenerateKey/action`
Avec cette autorisation, vous pouvez régénérer les clés primaire ou secondaire pour un compte Azure Cosmos DB. Cela est généralement utilisé pour améliorer la sécurité en remplaçant les anciennes clés, mais cela peut perturber l'accès aux services ou applications qui dépendent des clés actuelles.
```bash
az cosmosdb keys regenerate \
--name <account_name> \
--resource-group <resource_group_name> \
--key-kind <primary|secondary>

```
### `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/userDefinedFunctions/write` && `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/userDefinedFunctions/read`

Avec cette autorisation, vous pouvez créer ou modifier des déclencheurs au sein d'un conteneur d'une base de données SQL dans un compte Azure Cosmos DB. Les déclencheurs vous permettent d'exécuter une logique côté serveur en réponse à des opérations.
```bash
az cosmosdb sql trigger create \
--account-name <account_name> \
--resource-group <resource_group_name> \
--database-name <sql_database_name> \
--container-name <container_name> \
--name <trigger_name> \
--body 'function trigger() { var context = getContext(); var request = context.getRequest(); request.setBody("Triggered operation!"); }' \
--type Pre \
--operation All
```
### `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/storedProcedures/write` && `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/storedProcedures/read`
Avec cette autorisation, vous pouvez créer ou modifier des procédures stockées dans un conteneur d'une base de données SQL dans un compte Azure Cosmos DB. Les procédures stockées dans Cosmos DB sont des fonctions JavaScript côté serveur qui vous permettent d'encapsuler la logique pour le traitement des données ou l'exécution d'opérations directement dans la base de données.
```bash
az cosmosdb sql stored-procedure create \
--account-name <account_name> \
--resource-group <resource_group_name> \
--database-name <sql_database_name> \
--container-name <container_name> \
--name <stored_procedure_name> \
--body 'function sample() { return "Hello, Cosmos!"; }'
```
### `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/triggers/write` && `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/triggers/read`
Avec cette autorisation, vous pouvez créer ou modifier des déclencheurs au sein d'un conteneur d'une base de données SQL dans un compte Azure Cosmos DB. Les déclencheurs vous permettent d'exécuter une logique côté serveur en réponse à des opérations telles que des insertions, des mises à jour ou des suppressions.
```bash
az cosmosdb sql trigger create \
--account-name <account_name> \
--resource-group <resource_group_name> \
--database-name <sql_database_name> \
--container-name <container_name> \
--name <trigger_name> \
--body 'function trigger() { var context = getContext(); var request = context.getRequest(); request.setBody("Triggered operation!"); }' \
--type Pre \
--operation All
```
### `Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/collections/read` && `Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/collections/write`
Avec cette autorisation, vous pouvez créer ou modifier des collections au sein des bases de données MongoDB dans un compte Azure Cosmos DB. Les collections sont utilisées pour stocker des documents et définir la structure et le partitionnement des données.
```bash
az cosmosdb mongodb collection create \
--account-name <account_name> \
--resource-group <resource_group_name> \
--database-name <mongodb_database_name> \
--name <collection_name>
```
### `Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/write` && `Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/read`
Avec cette autorisation, vous pouvez créer de nouvelles bases de données MongoDB au sein d'un compte Azure Cosmos DB. Cela permet de provisionner de nouvelles bases de données pour stocker et gérer des collections et des documents.
```bash
az cosmosdb mongodb database create \
--account-name <account_name> \
--resource-group <resource_group_name> \
--name <database_name>
```
### `Microsoft.DocumentDB/databaseAccounts/mongodbRoleDefinitions/write` && `Microsoft.DocumentDB/databaseAccounts/mongodbRoleDefinitions/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.
```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": []
}'
```
### `Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/write` && `Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/read`
Avec cette autorisation, 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 et des niveaux d'accès spécifiques aux bases de données 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>"
}
]
}'
```
{{#include ../../../banners/hacktricks-training.md}}
