Files
hacktricks-cloud/src/pentesting-cloud/azure-security/az-services/az-cosmosDB.md

24 KiB

Az - CosmosDB

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

Azure CosmosDB

Azure Cosmos DB рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд NoSQL, relational, рдФрд░ vector database рд╣реИ рдЬреЛ рдПрдХрд▓-рдЕрдВрдХ рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдордп, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕реНрдХреЗрд▓реЗрдмрд┐рд▓рд┐рдЯреА, рдФрд░ рдЙрджреНрдпрдо-рдЧреНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд╕рд╛рде SLA-рд╕рдорд░реНрдерд┐рдд рдЙрдкрд▓рдмреНрдзрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЯрд░реНрдирдХреА рдорд▓реНрдЯреА-рдХреНрд╖реЗрддреНрд░ рдбреЗрдЯрд╛ рд╡рд┐рддрд░рдг, рд▓реЛрдХрдкреНрд░рд┐рдп рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдУрдкрди-рд╕реЛрд░реНрд╕ APIs, SDKs, рдФрд░ рдПрдХреАрдХреГрдд рд╡реЗрдХреНрдЯрд░ рд╕рдорд░реНрдерди рдФрд░ рдирд┐рд░реНрдмрд╛рдз Azure AI рдПрдХреАрдХрд░рдг рдЬреИрд╕реА AI рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рддреЗрдЬ рдРрдк рд╡рд┐рдХрд╛рд╕ рдХреЛ рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИред

Azure Cosmos DB рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ, relational, key-value, graph, рдФрд░ column-family рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЙрдбрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдбреЗрдЯрд╛рдмреЗрд╕ APIs рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдпреЗ APIs NoSQL, MongoDB, PostgreSQL, Cassandra, Gremlin рдФрд░ Table рд╣реИрдВред

CosmosDB рдХрд╛ рдПрдХ рдкреНрд░рдореБрдЦ рдкрд╣рд▓реВ Azure Cosmos Account рд╣реИред Azure Cosmos Account, рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рдЦрд╛рддрд╛ рд╡реИрд╢реНрд╡рд┐рдХ рд╡рд┐рддрд░рдг, рд╕реНрдерд┐рд░рддрд╛ рд╕реНрддрд░, рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ API рдЬреИрд╕реЗ рдкреНрд░рдореБрдЦ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ NoSQLред рдЦрд╛рддреЗ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдЖрдк рд╡реИрд╢реНрд╡рд┐рдХ рдкреБрдирд░реБрддреНрдкрд╛рджрди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдбреЗрдЯрд╛ рдХрдИ рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рдХрдо-рд▓реЗрдЯреЗрдВрд╕реА рдкрд╣реБрдВрдЪ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛред рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдЖрдк рдкреНрд░рджрд░реНрд╢рди рдФрд░ рдбреЗрдЯрд╛ рд╕рдЯреАрдХрддрд╛ рдХреЗ рдмреАрдЪ рд╕рдВрддреБрд▓рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдерд┐рд░рддрд╛ рд╕реНрддрд░ рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ Strong рд╕реЗ Eventual consistency рддрдХ рдХреЗ рд╡рд┐рдХрд▓реНрдк рд╣реЛрддреЗ рд╣реИрдВред

NoSQL (sql)

Azure Cosmos DB NoSQL API рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝-рдЖрдзрд╛рд░рд┐рдд API рд╣реИ рдЬреЛ JSON рдХреЛ рдЕрдкрдиреЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рд░реВрдк рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣ JSON рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдХреНрд╡реЗрд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП SQL-рдЬреИрд╕реА рдХреНрд╡реЗрд░реА рд╕рд┐рдВрдЯреИрдХреНрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдпрд╣ рд╕рдВрд░рдЪрд┐рдд рдФрд░ рдЕрд░реНрдз-рд╕рдВрд░рдЪрд┐рдд рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдмрдирд╛рддрд╛ рд╣реИред рд╕реЗрд╡рд╛ рдХрд╛ рдПрдВрдбрдкреЙрдЗрдВрдЯ рд╣реИ:

{% code overflow="wrap" %}

https://<Account-Name>.documents.azure.com:443/

{% endcode %}

рдбреЗрдЯрд╛рдмреЗрд╕

рдПрдХ рдЦрд╛рддреЗ рдХреЗ рднреАрддрд░, рдЖрдк рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рддрд╛рд░реНрдХрд┐рдХ рд╕рдореВрд╣ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрди рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реАрдорд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рдбреЗрдЯрд╛рдмреЗрд╕ рдпрд╛ рддреЛ рдЕрдкрдиреЗ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рдмреАрдЪ рдкреНрд░рд╛рд╡рдзрд╛рдирд┐рдд рдереНрд░реВрдкреБрдЯ рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рд╕рдорд░реНрдкрд┐рдд рдереНрд░реВрдкреБрдЯ рдЖрд╡рдВрдЯрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдХрдВрдЯреЗрдирд░

рдбреЗрдЯрд╛ рднрдВрдбрд╛рд░рдг рдХреА рдореБрдЦреНрдп рдЗрдХрд╛рдИ рдХрдВрдЯреЗрдирд░ рд╣реИ, рдЬреЛ JSON рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЛ рд░рдЦрддреА рд╣реИ рдФрд░ рдХреБрд╢рд▓ рдХреНрд╡реЗрд░реА рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЕрдиреБрдХреНрд░рдорд┐рдд рд╣реЛрддреА рд╣реИред рдХрдВрдЯреЗрдирд░ рд▓рдЪреАрд▓реЗ рдврдВрдЧ рд╕реЗ рд╕реНрдХреЗрд▓реЗрдмрд▓ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рд╡рд┐рднрд╛рдЬрдиреЛрдВ рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡рд┐рднрд╛рдЬрди рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рд╡рд┐рднрд╛рдЬрди рдХреБрдВрдЬреА рдЕрдиреБрдХреВрд▓ рдкреНрд░рджрд░реНрд╢рди рдФрд░ рд╕рдорд╛рди рдбреЗрдЯрд╛ рд╡рд┐рддрд░рдг рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдХрдВрдЯреЗрдирд░ рдЧреНрд░рд╛рд╣рдХ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ "customerId" рд╡рд┐рднрд╛рдЬрди рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдПрдиреНрдпреВрдорд░реЗрд╢рди

{% tabs %} {% tab title="az cli" %} {% code overflow="wrap" %}

# CosmoDB Account
## List Azure Cosmos DB database accounts.
az cosmosdb list --resource-group <ResourceGroupName>
az cosmosdb show --resource-group <ResourceGroupName> --name <AccountName>

## Lists the virtual network accounts associated with a Cosmos DB account
az cosmosdb network-rule list --resource-group <ResourceGroupName> --name <AccountName>
## List the access keys or connection strings for a Azure Cosmos DB
az cosmosdb keys list --name <AccountName> --resource-group <ResourceGroupName>
## List all the database accounts that can be restored.
az cosmosdb restorable-database-account list --account-name <AccountName>
## Show the identities for a Azure Cosmos DB database account.
az cosmosdb identity show --resource-group <ResourceGroupName> --name <AccountName>


# CosmoDB (NoSQL)
## List the SQL databases under an Azure Cosmos DB account.
az cosmosdb sql database list --resource-group <ResourceGroupName> --account-name <AccountName>
## List the SQL containers under an Azure Cosmos DB SQL database.
az cosmosdb sql container list --account-name <AccountName> --database-name <DatabaseName> --resource-group <ResourceGroupName>

## List all SQL role assignments under an Azure Cosmos DB
az cosmosdb sql role assignment list --resource-group <ResourceGroupName> --account-name <AccountName>
## List all SQL role definitions under an Azure Cosmos DB
az cosmosdb sql role definition list --resource-group <ResourceGroupName> --account-name <AccountName>

## List the SQL stored procedures under an Azure Cosmos DB
az cosmosdb sql stored-procedure list --account-name <AccountName> --container-name <ContainerName> --database-name <DatabaseName> --resource-group <ResourceGroupName>
## List the SQL triggers under an Azure Cosmos DB SQL container.
az cosmosdb sql trigger list --account-name <AccountName> --container-name <ContainerName> --database-name <DatabaseName> --resource-group <ResourceGroupName>
## List the SQL user defined functions under an Azure Cosmos DB SQL container
az cosmosdb sql user-defined-function list --account-name <AccountName> --container-name <ContainerName> --database-name <DatabaseName> --resource-group <ResourceGroupName>

{% endcode %} {% endtab %}

{% tab title="Az PowerShell" %} {% code overflow="wrap" %}

Get-Command -Module Az.CosmosD

# List all Cosmos DB accounts in a specified resource group.
Get-AzCosmosDBAccount -ResourceGroupName "<ResourceGroupName>"

# Get the access keys for a specific Cosmos DB account.
Get-AzCosmosDBAccountKey -ResourceGroupName "<ResourceGroupName>" -Name "<AccountName>"

# Retrieve the client encryption keys for a specific Cosmos DB account.
Get-AzCosmosDbClientEncryptionKey -ResourceGroupName "<ResourceGroupName>" -AccountName "<AccountName>" -DatabaseName "<DatabaseName>"

# List all SQL containers in a specific Cosmos DB SQL database.
Get-AzCosmosDBSqlContainer -ResourceGroupName "<ResourceGroupName>" -AccountName "<AccountName>" -DatabaseName "<DatabaseName>"

# Get backup information for a specific Cosmos DB SQL container.
Get-AzCosmosDBSqlContainerBackupInformation -ResourceGroupName "<ResourceGroupName>" -AccountName "<AccountName>" -DatabaseName "<DatabaseName>" -Name "<ContainerName>" -Location "<location>"

# Get the throughput (RU/s) settings for a specific Cosmos DB SQL container.
Get-AzCosmosDBSqlContainerThroughput -ResourceGroupName "<ResourceGroupName>" -AccountName "<AccountName>" -DatabaseName "<DatabaseName>" -Name "<ContainerName>"

# List all SQL databases under a specific Cosmos DB account.
Get-AzCosmosDBSqlDatabase -ResourceGroupName "<ResourceGroupName>" -AccountName "<AccountName>"

# Get the throughput (RU/s) settings for a specific Cosmos DB SQL database.
Get-AzCosmosDBSqlDatabaseThroughput -ResourceGroupName "<ResourceGroupName>" -AccountName "<AccountName>" -Name "<DatabaseName>"

# List all SQL role assignments for a specific Cosmos DB account.
Get-AzCosmosDBSqlRoleAssignment -ResourceGroupName "<ResourceGroupName>" -AccountName "<AccountName>"

# List all SQL role definitions for a specific Cosmos DB account.
Get-AzCosmosDBSqlRoleDefinition -ResourceGroupName "<ResourceGroupName>" -AccountName "<AccountName>"

# List all stored procedures in a specific Cosmos DB SQL container.
Get-AzCosmosDBSqlStoredProcedure -ResourceGroupName "<ResourceGroupName>" -AccountName "<AccountName>" -DatabaseName "<DatabaseName>" -ContainerName "<ContainerName>"

# List all triggers in a specific Cosmos DB SQL container.
Get-AzCosmosDBSqlTrigger -ResourceGroupName "<ResourceGroupName>" -AccountName "<AccountName>" -DatabaseName "<DatabaseName>" -ContainerName "<ContainerName>"

# List all user-defined functions (UDFs) in a specific Cosmos DB SQL container.
Get-AzCosmosDBSqlUserDefinedFunction -ResourceGroupName "<ResourceGroupName>" -AccountName "<AccountName>" -DatabaseName "<DatabaseName>" -ContainerName "<ContainerName>"

{% endcode %} {% endtab %} {% endtabs %}

рдХрдиреЗрдХреНрд╢рди

azure-cosmosDB (pip install azure-cosmos) рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдПрдВрдбрдкреЙрдЗрдВрдЯ рдФрд░ рдХреБрдВрдЬреА рдХрдиреЗрдХреНрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдШрдЯрдХ рд╣реИрдВред {% code overflow="wrap" %}

from azure.cosmos import CosmosClient, PartitionKey

# Connection details
endpoint = "<your-account-endpoint>"
key = "<your-account-key>"

# Initialize Cosmos Client
client = CosmosClient(endpoint, key)

# Access existing database and container
database_name = '<SampleDB>'
container_name = '<SampleContainer>'
database = client.get_database_client(database_name)
container = database.get_container_client(container_name)

# Insert multiple documents
items_to_insert = [
{"id": "1", "name": "Sample Item", "description": "This is a sample document."},
{"id": "2", "name": "Another Sample Item", "description": "This is another sample document."},
{"id": "3", "name": "Sample Item", "description": "This is a duplicate name sample document."},
]

for item in items_to_insert:
container.upsert_item(item)

# Query all documents
query = "SELECT * FROM c"
all_items = list(container.query_items(
query=query,
enable_cross_partition_query=True
))

# Print all queried items
print("All items in the container:")
for item in all_items:
print(item)

{% endcode %}

рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╣реИ DefaultAzureCredential() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рдмрд╕ рдЙрд╕ рдЦрд╛рддреЗ рд╕реЗ рд▓реЙрдЧрд┐рди рдХрд░рдирд╛ рд╣реИ (az login) рдЬрд┐рд╕рдХреЗ рдкрд╛рд╕ рдЕрдиреБрдорддрд┐рдпрд╛рдБ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рднреВрдорд┐рдХрд╛ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЖрд╡рд╢реНрдпрдХ рдЕрдиреБрдорддрд┐рдпрд╛рдБ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП (рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВ)

{% code overflow="wrap" %}

from azure.identity import DefaultAzureCredential
from azure.cosmos import CosmosClient

# Use Azure AD for authentication
credential = DefaultAzureCredential()
endpoint = "<your-account-endpoint>"
client = CosmosClient(endpoint, credential)

# Access database and container
database_name = "<mydatabase>"
container_name = "<mycontainer>"
database = client.get_database_client(database_name)
container = database.get_container_client(container_name)

# Insert a document
item = {
"id": "1",
"name": "Sample Item",
"description": "This is a test item."
}
container.create_item(item)
print("Document inserted.")

{% endcode %}

MongoDB

MongoDB NoSQL API рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝-рдЖрдзрд╛рд░рд┐рдд API рд╣реИ рдЬреЛ рдЕрдкрдиреЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рд░реВрдк рдХреЗ рд░реВрдк рдореЗрдВ JSON-рдЬреИрд╕реЗ BSON (Binary JSON) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдХреНрд╡реЗрд░реА рднрд╛рд╖рд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рдореЗрдХрди рдХреНрд╖рдорддрд╛рдПрдБ рд╣реЛрддреА рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдпрд╣ рд╕рдВрд░рдЪрд┐рдд, рдЕрд░реНрдз-рд╕рдВрд░рдЪрд┐рдд, рдФрд░ рдЕрд╕рдВрд░рдЪрд┐рдд рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдмрдирд╛рддрд╛ рд╣реИред рд╕реЗрд╡рд╛ рдХрд╛ рдПрдВрдбрдкреЙрдЗрдВрдЯ рдЖрдорддреМрд░ рдкрд░ рдЗрд╕ рдкреНрд░рд╛рд░реВрдк рдХрд╛ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реИ:

{% code overflow="wrap" %}

mongodb://<hostname>:<port>/<database>

{% endcode %}

рдбреЗрдЯрд╛рдмреЗрд╕

MongoDB рдореЗрдВ, рдЖрдк рдПрдХ рдпрд╛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдПрдХ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЗ рднреАрддрд░ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рдВрдЧреНрд░рд╣реЛрдВ рдХрд╛ рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рд╕рдореВрд╣ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рдВрд╕рд╛рдзрди рд╕рдВрдЧрдарди рдФрд░ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реАрдорд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдбреЗрдЯрд╛рдмреЗрд╕ рдбреЗрдЯрд╛ рдХреЛ рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ рдЕрд▓рдЧ рдХрд░рдиреЗ рдФрд░ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдпрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдПред

рд╕рдВрдЧреНрд░рд╣

MongoDB рдореЗрдВ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣рдг рдХреА рдореВрд▓ рдЗрдХрд╛рдИ рд╕рдВрдЧреНрд░рд╣ рд╣реИ, рдЬреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЛ рд░рдЦрддреА рд╣реИ рдФрд░ рдХреБрд╢рд▓ рдХреНрд╡реЗрд░реАрд┐рдВрдЧ рдФрд░ рд▓рдЪреАрд▓реЗ рд╕реНрдХреАрдорд╛ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХреА рдЧрдИ рд╣реИред рд╕рдВрдЧреНрд░рд╣ рд▓рдЪреАрд▓реЗ рдврдВрдЧ рд╕реЗ рд╕реНрдХреЗрд▓реЗрдмрд▓ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рд╡рд┐рддрд░рд┐рдд рд╕реЗрдЯрдЕрдк рдореЗрдВ рдХрдИ рдиреЛрдбреНрд╕ рдХреЗ рдмреАрдЪ рдЙрдЪреНрдЪ-рдереНрд░реВрдкреБрдЯ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЧрдгрдирд╛

{% tabs %} {% tab title="az cli" %} {% code overflow="wrap" %}

# CosmoDB Account
## List Azure Cosmos DB database accounts.
az cosmosdb list --resource-group <ResourceGroupName>
az cosmosdb show --resource-group <ResourceGroupName> --name <AccountName>

## Lists the virtual network accounts associated with a Cosmos DB account
az cosmosdb network-rule list --resource-group <ResourceGroupName> --name <AccountName>
## List the access keys or connection strings for a Azure Cosmos DB
az cosmosdb keys list --name <AccountName> --resource-group <ResourceGroupName>
## List all the database accounts that can be restored.
az cosmosdb restorable-database-account list --account-name <AccountName>
## Show the identities for a Azure Cosmos DB database account.
az cosmosdb identity show --resource-group <ResourceGroupName> --name <AccountName>

## MongoDB
# List all MongoDB databases in a specified Azure Cosmos DB account
az cosmosdb mongodb database list --account-name <AccountName> --resource-group <ResourceGroupName>
# List all collections in a specific MongoDB database within an Azure Cosmos DB account
az cosmosdb mongodb collection list --account-name <AccountName> --database-name <DatabaseName> --resource-group <ResourceGroupName>

# List all role definitions for MongoDB within an Azure Cosmos DB account
az cosmosdb mongodb role definition list --account-name <AccountName> --resource-group <ResourceGroupName>
# List all user definitions for MongoDB within an Azure Cosmos DB account
az cosmosdb mongodb user definition list --account-name <AccountName> --resource-group <ResourceGroupName>

{% endcode %} {% endtab %}

{% tab title="Az PowerShell" %} {% code overflow="wrap" %}

Get-Command -Module Az.CosmosDB

# List all Cosmos DB accounts in a specified resource group.
Get-AzCosmosDBAccount -ResourceGroupName "<ResourceGroupName>"

# Get the access keys for a specific Cosmos DB account.
Get-AzCosmosDBAccountKey -ResourceGroupName "<ResourceGroupName>" -Name "<AccountName>"

# Retrieve the client encryption keys for a specific Cosmos DB account.
Get-AzCosmosDbClientEncryptionKey -ResourceGroupName "<ResourceGroupName>" -AccountName "<AccountName>" -DatabaseName "<DatabaseName>"

# List all MongoDB collections in a specific database.
Get-AzCosmosDBMongoDBCollection -AccountName <account-name> -ResourceGroupName <resource-group-name> -DatabaseName <database-name>

# Retrieve backup information for a specific MongoDB collection in a database.
Get-AzCosmosDBMongoDBCollectionBackupInformation -AccountName <account-name> -ResourceGroupName <resource-group-name> -DatabaseName <database-name> -Name <collection-name> -Location <Location>

# Get the throughput (RU/s) of a specific MongoDB collection in a database.
Get-AzCosmosDBMongoDBCollectionThroughput -AccountName <account-name> -ResourceGroupName <resource-group-name> -DatabaseName <database-name> -Name <collection-name>

# List all MongoDB databases in a specified Cosmos DB account.
Get-AzCosmosDBMongoDBDatabase -AccountName <account-name> -ResourceGroupName <resource-group-name>

# Get the throughput (RU/s) of a specific MongoDB database.
Get-AzCosmosDBMongoDBDatabaseThroughput -AccountName <account-name> -ResourceGroupName <resource-group-name> -DatabaseName <database-name>

# Retrieve the role definitions for MongoDB users in a specified Cosmos DB account.
Get-AzCosmosDBMongoDBRoleDefinition -AccountName <account-name> -ResourceGroupName <resource-group-name>

{% endcode %} {% endtab %} {% endtabs %}

рдХрдиреЗрдХреНрд╢рди

рдпрд╣рд╛рдБ рдкрд╛рд╕рд╡рд░реНрдб рдЖрдк рдЙрдиреНрд╣реЗрдВ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдпрд╛ рдкреНрд░рд┐рд╡реЗрд╕реНрдХ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред {% code overflow="wrap" %}

from pymongo import MongoClient

# Updated connection string with retryWrites=false
connection_string = "mongodb://<account-name>.mongo.cosmos.azure.com:10255/?ssl=true&replicaSet=globaldb&retryWrites=false"

# Create the client
client = MongoClient(connection_string, username="<username>", password="<password>")

# Access the database
db = client['<database>']

# Access a collection
collection = db['<collection>']

# Insert a single document
document = {
"name": "John Doe",
"email": "johndoe@example.com",
"age": 30,
"address": {
"street": "123 Main St",
"city": "Somewhere",
"state": "CA",
"zip": "90210"
}
}

# Insert document
result = collection.insert_one(document)
print(f"Inserted document with ID: {result.inserted_id}")

{% endcode %}

рд╕рдВрджрд░реНрдн

рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рд╡реГрджреНрдзрд┐

{% content-ref url="../az-privilege-escalation/az-cosmosDB-privesc.md" %} az-cosmosDB-privesc.md {% endcontent-ref %}

рдкреЛрд╕реНрдЯ рдПрдХреНрд╕рдкреНрд▓реЛрдЗрдЯреЗрд╢рди

{% content-ref url="../az-post-exploitation/az-cosmosDB-post-exploitation.md" %} az-cosmosDB-post-exploitation.md {% endcontent-ref %}

рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП

  • рдпрд╣рд╛рдБ DB рдХрд╛ рдмрд╛рдХреА рд╣рд┐рд╕реНрд╕рд╛, рддрд╛рд▓рд┐рдХрд╛рдПрдБ, рдХреИрд╕реЗрдВрдбреНрд░рд╛, рдЧреНрд░реЗрдорд▓рд┐рди...
  • рдкреЛрд╕реНрдЯ рдПрдХреНрд╕рдкреНрд▓реЛрдЗрдЯреЗрд╢рди "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/write" && "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/read" рдФрд░ рднреВрдорд┐рдХрд╛ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣рд╛рдБ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рд╡реГрджреНрдзрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИ
  • рдкреБрдирд░реНрд╕реНрдерд╛рдкрдиреЛрдВ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ

{% hint style="success" %} AWS рд╣реИрдХрд┐рдВрдЧ рд╕реАрдЦреЗрдВ рдФрд░ рдЕрднреНрдпрд╛рд╕ рдХрд░реЗрдВ:HackTricks Training AWS Red Team Expert (ARTE)
GCP рд╣реИрдХрд┐рдВрдЧ рд╕реАрдЦреЗрдВ рдФрд░ рдЕрднреНрдпрд╛рд╕ рдХрд░реЗрдВ: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВ
{% endhint %}