# Az - CosmosDB Post Exploitation

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

## CosmosDB Post Exploitation
Per ulteriori informazioni su SQL Database controlla:

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


### `Microsoft.DocumentDB/databaseAccounts/read` && `Microsoft.DocumentDB/databaseAccounts/write`
Con questo permesso, puoi creare o aggiornare gli account di Azure Cosmos DB. Questo include la modifica delle configurazioni a livello di account, l'abilitazione o la disabilitazione del failover automatico, la gestione dei controlli di accesso alla rete, l'impostazione delle politiche di backup e l'aggiustamento dei livelli di coerenza. Gli attaccanti con questo permesso potrebbero alterare le impostazioni per indebolire i controlli di sicurezza, interrompere la disponibilità o esfiltrare dati modificando le regole di rete.
```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
```
Inoltre, puoi abilitare le identità gestite nell'account:
```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`
Con questo permesso, puoi creare o modificare contenitori (collezioni) all'interno di un database SQL di un account Azure Cosmos DB. I contenitori sono utilizzati per memorizzare dati e le modifiche a essi possono influenzare la struttura del database e i modelli di accesso.
```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`
Con questo permesso, puoi creare o modificare database SQL all'interno di un account Azure Cosmos DB. Questo consente di gestire la struttura del database e aggiungere nuovi database all'account. Sebbene questo permesso consenta la creazione di database, un uso improprio o non autorizzato potrebbe comportare un consumo di risorse non necessario, costi aumentati o inefficienze operative.
```bash
az cosmosdb sql database create \
--account-name <account_name> \
--resource-group <resource_group_name> \
--name <database_name>
```
### `Microsoft.DocumentDB/databaseAccounts/failoverPriorityChange/action`

Con questo permesso, puoi cambiare la priorità di failover delle regioni per un account di database Azure Cosmos DB. Questa azione determina l'ordine in cui le regioni diventano primarie durante un evento di failover. Un uso improprio di questo permesso può interrompere l'alta disponibilità del database o portare a impatti operativi indesiderati.
```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`
Con questo permesso, puoi rigenerare le chiavi primarie o secondarie per un account Azure Cosmos DB. Questo viene solitamente utilizzato per migliorare la sicurezza sostituendo le chiavi vecchie, ma può interrompere l'accesso per i servizi o le applicazioni che dipendono dalle chiavi attuali.
```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`

Con questo permesso, puoi creare o modificare trigger all'interno di un contenitore di un database SQL in un account Azure Cosmos DB. I trigger ti consentono di eseguire logica lato server in risposta a operazioni.
```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`
Con questo permesso, puoi creare o modificare procedure memorizzate all'interno di un contenitore di un database SQL in un account Azure Cosmos DB. Le procedure memorizzate in Cosmos DB sono funzioni JavaScript lato server che ti consentono di incapsulare la logica per l'elaborazione dei dati o per eseguire operazioni direttamente all'interno del database.
```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`
Con questo permesso, puoi creare o modificare trigger all'interno di un contenitore di un database SQL in un account Azure Cosmos DB. I trigger ti consentono di eseguire logica lato server in risposta a operazioni come inserimenti, aggiornamenti o eliminazioni.
```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`
Con questo permesso, puoi creare o modificare collezioni all'interno dei database MongoDB in un account Azure Cosmos DB. Le collezioni vengono utilizzate per memorizzare documenti e definire la struttura e la partizione per i dati.
```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`
Con questo permesso, puoi creare nuovi database MongoDB all'interno di un account Azure Cosmos DB. Questo consente di fornire nuovi database per memorizzare e gestire collezioni e documenti.
```bash
az cosmosdb mongodb database create \
--account-name <account_name> \
--resource-group <resource_group_name> \
--name <database_name>
```
{{#include ../../../banners/hacktricks-training.md}}
