# Az - CosmosDB Post Exploitation

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

## CosmosDB Post Exploitation
Vir meer inligting oor SQL Database, kyk:

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


### `Microsoft.DocumentDB/databaseAccounts/read` && `Microsoft.DocumentDB/databaseAccounts/write`
Met hierdie toestemming kan jy Azure Cosmos DB-rekeninge skep of opdateer. Dit sluit die aanpassing van rekeningvlak konfigurasies in, die inskakeling of deaktivering van outomatiese failover, die bestuur van netwerktoegangbeheer, die instelling van rugsteunbeleide, en die aanpassing van konsekwentievlakke. Aanvallers met hierdie toestemming kan instellings verander om sekuriteitsbeheer te verswak, beskikbaarheid te ontwrig, of data te eksfiltreer deur netwerkreëls te verander.
```bash
az cosmosdb update \
--name <account_name> \
--resource-group <resource_group_name> \
--public-network-access ENABLED
```

```bash
az cosmosdb update \
--account-name <account_name> \
--resource-group <resource_group_name> \
--capabilities EnableMongoRoleBasedAccessControl
```
Boonop kan jy bestuurde identiteite in die rekening inskakel:
```bash
az cosmosdb identity assign \
--name <cosmosdb_account_name> \
--resource-group <resource_group_name>
```
### `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/read` && `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/write`
Met hierdie toestemming kan jy houers (versamelings) binne 'n SQL-databasis van 'n Azure Cosmos DB-rekening skep of wysig. Houers word gebruik om data te stoor, en veranderinge aan hulle kan die databasis se struktuur en toegangspatrone beïnvloed.
```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`
Met hierdie toestemming kan jy SQL-databasisse binne 'n Azure Cosmos DB-rekening skep of wysig. Dit stel jou in staat om die databasisstruktuur te bestuur en nuwe databasisse aan die rekening toe te voeg. Terwyl hierdie toestemming databasiscreatie moontlik maak, kan onvanpaste of ongeoorloofde gebruik lei tot onnodige hulpbronverbruik, verhoogde koste, of operasionele ondoeltreffendhede.
```bash
az cosmosdb sql database create \
--account-name <account_name> \
--resource-group <resource_group_name> \
--name <database_name>
```
### `Microsoft.DocumentDB/databaseAccounts/failoverPriorityChange/action`

Met hierdie toestemming kan jy die failover prioriteit van streke vir 'n Azure Cosmos DB databasisrekening verander. Hierdie aksie bepaal die volgorde waarin streke primêr word tydens 'n failover gebeurtenis. Onbehoorlike gebruik van hierdie toestemming kan die hoë beskikbaarheid van die databasis ontwrig of lei tot onbedoelde operasionele impakte.
```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`
Met hierdie toestemming kan jy die primêre of sekondêre sleutels vir 'n Azure Cosmos DB-rekening hergenerer. Dit word tipies gebruik om sekuriteit te verbeter deur ou sleutels te vervang, maar dit kan toegang vir dienste of toepassings wat op die huidige sleutels staatmaak, ontwrig.
```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`

Met hierdie toestemming kan jy triggers binne 'n houer van 'n SQL-databasis in 'n Azure Cosmos DB-rekening skep of wysig. Triggers stel jou in staat om bediener-kant logika uit te voer in reaksie op operasies.
```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`
Met hierdie toestemming kan jy gestoor prosedures binne 'n houer van 'n SQL-databasis in 'n Azure Cosmos DB-rekening skep of wysig. Gestoor prosedures in Cosmos DB is bediener-kant JavaScript funksies wat jou toelaat om logika vir die verwerking van data of die uitvoering van operasies direk binne die databasis te enkapsuleer.
```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`
Met hierdie toestemming kan jy triggers binne 'n houer van 'n SQL-databasis in 'n Azure Cosmos DB-rekening skep of wysig. Triggers stel jou in staat om bediener-kant logika uit te voer in reaksie op operasies soos inskrywings, opdaterings of verwyderings.
```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`
Met hierdie toestemming kan jy versamelinge binne MongoDB-databasisse in 'n Azure Cosmos DB-rekening skep of wysig. Versamelinge word gebruik om dokumente te stoor en die struktuur en partitionering van data te definieer.
```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`
Met hierdie toestemming kan jy nuwe MongoDB-databasisse binne 'n Azure Cosmos DB-rekening skep. Dit stel jou in staat om nuwe databasisse te voorsien om versamelings en dokumente te stoor en te bestuur.
```bash
az cosmosdb mongodb database create \
--account-name <account_name> \
--resource-group <resource_group_name> \
--name <database_name>
```
{{#include ../../../banners/hacktricks-training.md}}
