# Az - CosmosDB Post Exploitation

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

## CosmosDB Post Exploitation
Za više informacija o SQL bazi podataka, proverite:

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


### `Microsoft.DocumentDB/databaseAccounts/read` && `Microsoft.DocumentDB/databaseAccounts/write`
Sa ovom dozvolom, možete kreirati ili ažurirati Azure Cosmos DB naloge. To uključuje modifikaciju konfiguracija na nivou naloga, omogućavanje ili onemogućavanje automatskog prebacivanja, upravljanje kontrolama pristupa mreži, postavljanje politika rezervnih kopija i prilagođavanje nivoa konzistentnosti. Napadači sa ovom dozvolom mogli bi da promene postavke kako bi oslabili bezbednosne kontrole, ometali dostupnost ili exfiltrirali podatke modifikovanjem mrežnih pravila.
```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
```
Dodatno, možete omogućiti upravljane identitete u nalogu:
```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`
Sa ovom dozvolom, možete kreirati ili modifikovati kontejnere (kolekcije) unutar SQL baze podataka Azure Cosmos DB naloga. Kontejneri se koriste za skladištenje podataka, a promene u njima mogu uticati na strukturu baze podataka i obrasce pristupa.
```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`
Sa ovom dozvolom, možete kreirati ili modifikovati SQL baze podataka unutar Azure Cosmos DB naloga. Ovo omogućava upravljanje strukturom baze podataka i dodavanje novih baza podataka u nalog. Iako ova dozvola omogućava kreiranje baza podataka, nepravilna ili neovlašćena upotreba može dovesti do nepotrebne potrošnje resursa, povećanih troškova ili operativnih neefikasnosti.
```bash
az cosmosdb sql database create \
--account-name <account_name> \
--resource-group <resource_group_name> \
--name <database_name>
```
### `Microsoft.DocumentDB/databaseAccounts/failoverPriorityChange/action`

Sa ovom dozvolom, možete promeniti prioritet oporavka regiona za Azure Cosmos DB nalog baze podataka. Ova akcija određuje redosled u kojem regioni postaju primarni tokom događaja oporavka. Nepravilna upotreba ove dozvole može ometati visoku dostupnost baze podataka ili dovesti do nepredviđenih operativnih posledica.
```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`
Sa ovom dozvolom, možete regenerisati primarne ili sekundarne ključeve za Azure Cosmos DB nalog. Ovo se obično koristi za poboljšanje bezbednosti zamenom starih ključeva, ali može ometati pristup uslugama ili aplikacijama koje se oslanjaju na trenutne ključeve.
```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`

Sa ovom dozvolom, možete kreirati ili modifikovati okidače unutar kontejnera SQL baze podataka u Azure Cosmos DB nalogu. Okidači vam omogućavaju da izvršavate logiku na strani servera kao odgovor na operacije.
```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`
Sa ovom dozvolom, možete kreirati ili modifikovati skladišne procedure unutar kontejnera SQL baze podataka u Azure Cosmos DB nalogu. Skladišne procedure u Cosmos DB su JavaScript funkcije na serverskoj strani koje vam omogućavaju da enkapsulirate logiku za obradu podataka ili izvršavanje operacija direktno unutar baze podataka.
```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`
Sa ovom dozvolom, možete kreirati ili modifikovati okidače unutar kontejnera SQL baze podataka u Azure Cosmos DB nalogu. Okidači vam omogućavaju da izvršavate logiku na serveru kao odgovor na operacije poput umetanja, ažuriranja ili brisanja.
```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`
Sa ovom dozvolom, možete kreirati ili modifikovati kolekcije unutar MongoDB baza podataka u Azure Cosmos DB nalogu. Kolekcije se koriste za čuvanje dokumenata i definišu strukturu i particionisanje podataka.
```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`
Sa ovom dozvolom, možete kreirati nove MongoDB baze podataka unutar Azure Cosmos DB naloga. Ovo omogućava kreiranje novih baza podataka za skladištenje i upravljanje kolekcijama i dokumentima.
```bash
az cosmosdb mongodb database create \
--account-name <account_name> \
--resource-group <resource_group_name> \
--name <database_name>
```
{{#include ../../../banners/hacktricks-training.md}}
