mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-04 08:47:13 -08:00
Translated ['src/pentesting-ci-cd/cloudflare-security/cloudflare-domains
This commit is contained in:
357
src/pentesting-cloud/azure-security/az-services/az-cosmosDB.md
Normal file
357
src/pentesting-cloud/azure-security/az-services/az-cosmosDB.md
Normal file
@@ -0,0 +1,357 @@
|
||||
# Az - CosmosDB
|
||||
|
||||
{% hint style="success" %}
|
||||
Leer & oefen AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Leer & oefen GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Ondersteun HackTricks</summary>
|
||||
|
||||
* Kyk na die [**subskripsie planne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel hacking truuks deur PRs in te dien na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## Azure CosmosDB
|
||||
|
||||
**Azure Cosmos DB** is 'n volledig **bestuurde NoSQL, relationele, en vektordatabasis** wat enkel-digit millisekonde reaksietye, outomatiese skaalbaarheid, en SLA-ondersteunde beskikbaarheid met ondernemingsgraad sekuriteit bied. Dit stel vinniger app-ontwikkeling in staat deur kant-en-klaar multi-streek data verspreiding, oopbron API's, SDK's vir gewilde tale, en KI-databasis funksies soos geïntegreerde vektorondersteuning en naatlose Azure KI-integrasie.
|
||||
|
||||
Azure Cosmos DB bied verskeie databasis API's om werklike data te modelleer met behulp van dokumente, relationele, sleutel-waarde, grafiek, en kolom-familie datamodelles, wat hierdie API's NoSQL, MongoDB, PostgreSQL, Cassandra, Gremlin en Tabel is.
|
||||
|
||||
Een sleutel aspek van CosmosDB is Azure Cosmos Account. **Azure Cosmos Account** dien as die toegangspunt tot die databasisse. Die rekening bepaal sleutelinstellings soos globale verspreiding, konsekwentievlakke, en die spesifieke API wat gebruik moet word, soos NoSQL. Deur die rekening kan jy globale replikaasies konfigureer om te verseker dat data beskikbaar is oor verskeie streke vir lae-latensie toegang. Boonop kan jy 'n konsekwentievlak kies wat 'n balans tussen prestasie en datanauwkeurigheid handhaaf, met opsies wat wissel van Sterk tot Finale konsekwentheid.
|
||||
|
||||
### NoSQL (sql)
|
||||
Die Azure Cosmos DB NoSQL API is 'n dokument-gebaseerde API wat JSON as sy dataformaat gebruik. Dit bied 'n SQL-agtige vraagsintaksis vir die opvra van JSON-objekte, wat dit geskik maak vir die werk met gestruktureerde en semi-gestruktureerde data. Die eindpunt van die diens is:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
https://<Account-Name>.documents.azure.com:443/
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
#### Databasies
|
||||
Binne 'n rekening kan jy een of meer databasies skep, wat dien as logiese groepe van houers. 'n Databasis dien as 'n grense vir hulpbronbestuur en gebruikersregte. Databasies kan of die toegewezen deurvoer oor hul houers deel of toegewyde deurvoer aan individuele houers toewys.
|
||||
|
||||
#### Houers
|
||||
Die kern eenheid van data-opberging is die houer, wat JSON-dokumente bevat en outomaties geindexeer word vir doeltreffende navraag. Houers is elasties skaalbaar en versprei oor partisie, wat bepaal word deur 'n deur gebruiker gedefinieerde partisie sleutel. Die partisie sleutel is krities vir die verseker van optimale prestasie en gelyke data verspreiding. Byvoorbeeld, 'n houer kan klantdata stoor, met "customerId" as die partisie sleutel.
|
||||
|
||||
#### Enumerasie
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="az cli" %}
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
# 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" %}
|
||||
```powershell
|
||||
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 %}
|
||||
|
||||
#### Verbinding
|
||||
|
||||
Om die azure-cosmosDB (pip install azure-cosmos) biblioteek te verbind, is dit nodig. Boonop is die eindpunt en die sleutel kritieke komponente om die verbinding te maak.
|
||||
{% code overflow="wrap" %}
|
||||
```python
|
||||
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 %}
|
||||
|
||||
'n Ander manier om 'n verbinding te vestig, is om die **DefaultAzureCredential()** te gebruik. Jy moet net aanmeld (az login) met die rekening wat die toestemmings het en dit uitvoer. Vir hierdie geval moet 'n roltoewysing gedoen word, wat die nodige toestemmings gee (sien vir meer)
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```python
|
||||
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
|
||||
Die MongoDB NoSQL API is 'n dokument-gebaseerde API wat JSON-agtige BSON (Binary JSON) as sy dataformaat gebruik. Dit bied 'n navraagtaal met aggregasie vermoëns, wat dit geskik maak om met gestruktureerde, semi-gestruktureerde en ongestruktureerde data te werk. Die eindpunt van die diens volg tipies hierdie formaat:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
mongodb://<hostname>:<port>/<database>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
#### Databasas
|
||||
In MongoDB kan jy een of meer databasas binne 'n instansie skep. Elke databasis dien as 'n logiese groep van versamelings en bied 'n grense vir hulpbronorganisasie en -bestuur. Databasas help om data logies te skei en te bestuur, soos vir verskillende toepassings of projekte.
|
||||
|
||||
#### Versamelings
|
||||
Die kern eenheid van data-opberging in MongoDB is die versameling, wat dokumente hou en ontwerp is vir doeltreffende navraag en buigsame skema-ontwerp. Versamelings is elasties skaalbaar en kan hoë-deurvoer operasies oor verskeie nodes in 'n verspreide opstelling ondersteun.
|
||||
|
||||
#### Enumerasie
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="az cli" %}
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
# 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>
|
||||
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Az PowerShell" %}
|
||||
{% code overflow="wrap" %}
|
||||
```powershell
|
||||
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 %}
|
||||
|
||||
#### Verbinding
|
||||
|
||||
Hier kan jy die wagwoord vind met die sleutels of met die metode beskryf in die privesc afdeling.
|
||||
{% code overflow="wrap" %}
|
||||
```python
|
||||
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 %}
|
||||
|
||||
## Verwysings
|
||||
|
||||
* [https://learn.microsoft.com/en-us/azure/cosmos-db/choose-api](https://learn.microsoft.com/en-us/azure/cosmos-db/choose-api)
|
||||
* [https://learn.microsoft.com/en-us/azure/cosmos-db/](https://learn.microsoft.com/en-us/azure/cosmos-db/)
|
||||
* [https://learn.microsoft.com/en-us/azure/cosmos-db/introduction](https://learn.microsoft.com/en-us/azure/cosmos-db/introduction)
|
||||
* [https://learn.microsoft.com/en-us/azure/cosmos-db/nosql/security/how-to-grant-data-plane-role-based-access?tabs=built-in-definition%2Ccsharp&pivots=azure-interface-cli](https://learn.microsoft.com/en-us/azure/cosmos-db/nosql/security/how-to-grant-data-plane-role-based-access?tabs=built-in-definition%2Ccsharp&pivots=azure-interface-cli)
|
||||
|
||||
## Privilege Escalation
|
||||
|
||||
{% content-ref url="../az-privilege-escalation/az-cosmosDB-privesc.md" %}
|
||||
[az-cosmosDB-privesc.md](../az-privilege-escalation/az-cosmosDB-privesc.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Post Exploitation
|
||||
|
||||
{% content-ref url="../az-post-exploitation/az-cosmosDB-post-exploitation.md" %}
|
||||
[az-cosmosDB-post-exploitation.md](../az-post-exploitation/az-sql-post-exploitation.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## ToDo
|
||||
|
||||
* Die res van die DB hier, tafels, cassandra, gremlin...
|
||||
* Kyk na die post exploitation "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/write" && "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/read" en rol definisies want hier mag daar 'n privesc wees
|
||||
* Kyk na herstel
|
||||
|
||||
{% hint style="success" %}
|
||||
Leer & oefen AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Leer & oefen GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Ondersteun HackTricks</summary>
|
||||
|
||||
* Kyk na die [**subskripsie planne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel hacking truuks deur PRs in te dien na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
@@ -11,32 +11,32 @@
|
||||
|
||||
### Verskillende Planne
|
||||
|
||||
- **Flex Consumption Plan**: Bied **dinamiese, gebeurtenis-gedrewe skaal** met 'n betaal-vir-wat-jy-gebruik prysmodel, wat funksie-instanties byvoeg of verwyder op grond van vraag. Dit ondersteun **virtuele netwerke** en **vooraf-geprovisioneerde instanties** om koue begin te verminder, wat dit geskik maak vir **veranderlike werklas** wat nie houerondersteuning vereis nie.
|
||||
- **Traditional Consumption Plan**: Die standaard serverless opsie, waar jy **net betaal vir rekenaarbronne wanneer funksies loop**. Dit skaal outomaties op grond van inkomende gebeurtenisse en sluit **koue begin optimalisering** in, maar ondersteun nie houerontplooiings nie. Ideaal vir **intermitterende werklas** wat outomatiese skaal vereis.
|
||||
- **Flex Consumption Plan**: Bied **dinamiese, gebeurtenis-gedrewe skaal** met 'n betaal-vir-wat-jy-gebruik prys, wat funksie-instansies byvoeg of verwyder gebaseer op vraag. Dit ondersteun **virtuele netwerke** en **vooraf-geprovisioneerde instansies** om koue begin te verminder, wat dit geskik maak vir **veranderlike werklas** wat nie houerondersteuning vereis nie.
|
||||
- **Traditional Consumption Plan**: Die standaard serverless opsie, waar jy **net betaal vir rekenaarbronne wanneer funksies loop**. Dit skaal outomaties gebaseer op inkomende gebeurtenisse en sluit **koue begin optimalisering** in, maar ondersteun nie houerontplooiings nie. Ideaal vir **intermitterende werklas** wat outomatiese skaal vereis.
|
||||
- **Premium Plan**: Ontwerp vir **konstante prestasie**, met **voorverhitte werkers** om koue begin te elimineer. Dit bied **verlengde uitvoertye, virtuele netwerke**, en ondersteun **pasgemaakte Linux beelde**, wat dit perfek maak vir **missie-kritieke toepassings** wat hoë prestasie en gevorderde funksies benodig.
|
||||
- **Dedicated Plan**: Loop op toegewyde virtuele masjiene met **voorspelbare fakturering** en ondersteun handmatige of outomatiese skaal. Dit laat toe om verskeie toepassings op dieselfde plan te loop, bied **rekenaarisolering**, en verseker **veilige netwerktoegang** via App Service Omgewings, wat dit ideaal maak vir **lanklopende toepassings** wat konstante hulpbron toewysing benodig.
|
||||
- **Container Apps**: Maak dit moontlik om **gecontaineriseerde funksie-apps** in 'n bestuurde omgewing te ontplooi, langs mikro-dienste en API's. Dit ondersteun pasgemaakte biblioteke, erfenis app migrasie, en **GPU verwerking**, wat Kubernetes-klusterbestuur elimineer. Ideaal vir **gebeurtenis-gedrewe, skaalbare gecontaineriseerde toepassings**.
|
||||
- **Container Apps**: Maak dit moontlik om **gecontaineriseerde funksie-apps** in 'n bestuurde omgewing te ontplooi, langs mikro-dienste en API's. Dit ondersteun pasgemaakte biblioteke, erfenis app migrasie, en **GPU verwerking**, wat die bestuur van Kubernetes klusters elimineer. Ideaal vir **gebeurtenis-gedrewe, skaalbare gecontaineriseerde toepassings**.
|
||||
|
||||
### **Stoor Emmers**
|
||||
|
||||
Wanneer 'n nuwe Function App geskep word wat nie gecontaineriseerd is nie (maar die kode om te loop gee), sal die **kode en ander funksie-verwante data in 'n Stoor rekening gestoor word**. Standaard sal die webkonsol 'n nuwe een per funksie skep om die kode te stoor.
|
||||
|
||||
Boonop, deur die kode binne die emmer te wysig (in die verskillende formate waarin dit gestoor kan word), sal die **kode van die app gewysig word na die nuwe een en uitgevoer** word die volgende keer dat die Funksie genoem word.
|
||||
Boonop, deur die kode binne die emmer te wysig (in die verskillende formate waarin dit gestoor kan word), sal die **kode van die app na die nuwe een gewysig word en die volgende keer wanneer die Funksie genoem word, uitgevoer word**.
|
||||
|
||||
> [!CAUTION]
|
||||
> Dit is baie interessant vanuit 'n aanvaller se perspektief aangesien **skrywe toegang oor hierdie emmer** 'n aanvaller sal toelaat om die **kode te kompromitteer en bevoegdhede te verhoog** na die bestuurde identiteite binne die Function App.
|
||||
>
|
||||
> Meer hieroor in die **bevoegdheid verhoging afdeling**.
|
||||
|
||||
Dit is ook moontlik om die **master en funksiesleutels** wat in die stoor rekening gestoor is, te vind in die houer **`azure-webjobs-secrets`** binne die gids **`<app-name>`** in die JSON-lêers wat jy daarbinne kan vind.
|
||||
Dit is ook moontlik om die **master en funksiesleutels** wat in die stoor rekening gestoor is, in die houer **`azure-webjobs-secrets`** binne die gids **`<app-name>`** in die JSON-lêers wat jy daarbinne kan vind.
|
||||
|
||||
Let daarop dat Functions ook toelaat om die kode in 'n afgeleë ligging te stoor deur net die URL daarna te dui.
|
||||
Let daarop dat Funksies ook toelaat om die kode in 'n afgeleë plek te stoor deur net die URL daarna te dui.
|
||||
|
||||
### Netwerk
|
||||
|
||||
Met 'n HTTP-trigger:
|
||||
|
||||
- Dit is moontlik om **toegang tot 'n funksie van die hele Internet** te gee sonder om enige verifikasie te vereis of toegang op IAM-basis te gee. Alhoewel dit ook moontlik is om hierdie toegang te beperk.
|
||||
- Dit is moontlik om **toegang tot 'n funksie van die hele Internet te gee** sonder om enige verifikasie te vereis of toegang op IAM-basis te gee. Alhoewel dit ook moontlik is om hierdie toegang te beperk.
|
||||
- Dit is ook moontlik om **toegang te gee of te beperk** tot 'n Function App van **'n interne netwerk (VPC)**.
|
||||
|
||||
> [!CAUTION]
|
||||
@@ -46,7 +46,7 @@ Met 'n HTTP-trigger:
|
||||
|
||||
Dit is moontlik om omgewing veranderlikes binne 'n app te konfigureer, wat sensitiewe inligting kan bevat. Boonop, standaard word die omgewing veranderlikes **`AzureWebJobsStorage`** en **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** (onder andere) geskep. Hierdie is spesiaal interessant omdat hulle **die rekening sleutel bevat om met VOLLE toestemmings die stoor rekening wat die data van die toepassing bevat, te beheer**. Hierdie instellings is ook nodig om die kode van die Stoor Rekening uit te voer.
|
||||
|
||||
Hierdie omgewing veranderlikes of konfigurasie parameters beheer ook hoe die Funksie die kode uitvoer, byvoorbeeld as **`WEBSITE_RUN_FROM_PACKAGE`** bestaan, sal dit die URL aandui waar die kode van die toepassing geleë is.
|
||||
Hierdie omgewing veranderlikes of konfigurasieparameters beheer ook hoe die Funksie die kode uitvoer, byvoorbeeld as **`WEBSITE_RUN_FROM_PACKAGE`** bestaan, sal dit die URL aandui waar die kode van die toepassing geleë is.
|
||||
|
||||
### **Function Sandbox**
|
||||
|
||||
@@ -56,38 +56,38 @@ In 'n **Windows** funksie wat NodeJS gebruik, was die kode geleë in **`C:\home\
|
||||
|
||||
### **Bestuurde Identiteite & Metadata**
|
||||
|
||||
Net soos [**VMs**](vms/index.html), kan Functions **Bestuurde Identiteite** van 2 tipes hê: Stelsel toegewy en Gebruiker toegewy.
|
||||
Net soos [**VMs**](vms/index.html), kan Funksies **Bestuurde Identiteite** van 2 tipes hê: Stelsel toegewy en Gebruiker toegewy.
|
||||
|
||||
Die **stelsel toegewy** een sal 'n bestuurde identiteit wees wat **net die funksie** wat dit toegewy het, kan gebruik, terwyl die **gebruiker toegewy** bestuurde identiteite bestuurde identiteite is wat **enige ander Azure diens kan gebruik**.
|
||||
|
||||
> [!NOTE]
|
||||
> Net soos in [**VMs**](vms/index.html), kan Functions **1 stelsel toegewy** bestuurde identiteit en **verskeie gebruiker toegewy** identiteite hê, so dit is altyd belangrik om te probeer om al hulle te vind as jy die funksie kompromitteer omdat jy dalk bevoegdhede kan verhoog na verskeie bestuurde identiteite vanaf net een Funksie.
|
||||
> Net soos in [**VMs**](vms/index.html), kan Funksies **1 stelsel toegewy** bestuurde identiteit en **verskeie gebruiker toegewy** hê, so dit is altyd belangrik om te probeer om al hulle te vind as jy die funksie kompromitteer omdat jy dalk bevoegdhede kan verhoog na verskeie bestuurde identiteite vanaf net een Funksie.
|
||||
>
|
||||
> As 'n geen stelsel bestuurde identiteit gebruik word nie, maar een of meer gebruiker bestuurde identiteite aan 'n funksie geheg is, sal jy standaard nie in staat wees om enige token te kry nie.
|
||||
|
||||
Dit is moontlik om die [**PEASS skripte**](https://github.com/peass-ng/PEASS-ng) te gebruik om tokens van die standaard bestuurde identiteit van die metadata eindpunt te kry. Of jy kan hulle **handmatig** kry soos verduidelik in:
|
||||
Dit is moontlik om die [**PEASS skripte**](https://github.com/peass-ng/PEASS-ng) te gebruik om tokens van die standaard bestuurde identiteit van die metadata eindpunt te kry. Of jy kan dit **handmatig** kry soos verduidelik in:
|
||||
|
||||
{% embed url="https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf#azure-vm" %}
|
||||
{% embed url="https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html#azure-vm" %}
|
||||
|
||||
Let daarop dat jy 'n manier moet vind om **al die Bestuurde Identiteite wat 'n funksie het, te kontroleer** aangesien as jy dit nie aandui nie, die metadata eindpunt **net die standaard een sal gebruik** (kyk na die vorige skakel vir meer inligting).
|
||||
Let daarop dat jy 'n manier moet vind om **alle Bestuurde Identiteite wat 'n funksie het, te kontroleer** aangesien as jy dit nie aandui nie, die metadata eindpunt **net die standaard een sal gebruik** (kyk die vorige skakel vir meer inligting).
|
||||
|
||||
## Toegang Sleutels
|
||||
|
||||
> [!NOTE]
|
||||
> Let daarop dat daar nie RBAC toestemmings is om toegang aan gebruikers te gee om die funksies aan te roep nie. Die **funksie aanroep hang af van die trigger** wat gekies is toe dit geskep is en as 'n HTTP Trigger gekies is, mag dit nodig wees om 'n **toegang sleutel** te gebruik.
|
||||
> Let daarop dat daar geen RBAC toestemmings is om toegang aan gebruikers te gee om die funksies aan te roep nie. Die **funksie-aanroep hang af van die trigger** wat gekies is toe dit geskep is en as 'n HTTP Trigger gekies is, mag dit nodig wees om 'n **toegang sleutel** te gebruik.
|
||||
|
||||
Wanneer 'n eindpunt binne 'n funksie geskep word met 'n **HTTP trigger** is dit moontlik om die **toegang sleutel outorisatienvlak** aan te dui wat nodig is om die funksie te aktiveer. Drie opsies is beskikbaar:
|
||||
|
||||
- **ANONYMOUS**: **Enigiemand** kan toegang tot die funksie verkry deur die URL.
|
||||
- **ANONYMOUS**: **Enigeen** kan toegang tot die funksie deur die URL.
|
||||
- **FUNCTION**: Eindpunt is slegs toeganklik vir gebruikers wat 'n **funksie, gasheer of meester sleutel** gebruik.
|
||||
- **ADMIN**: Eindpunt is slegs toeganklik vir gebruikers met 'n **meester sleutel**.
|
||||
|
||||
**Tipe sleutels:**
|
||||
|
||||
- **Funksie Sleutels:** Funksie sleutels kan of standaard of gebruiker-gedefinieerd wees en is ontwerp om toegang eksklusief te verleen tot **spesifieke funksie eindpunte** binne 'n Function App wat 'n meer fyn-granige toegang oor die eindpunte toelaat.
|
||||
- **Gasheer Sleutels:** Gasheer sleutels, wat ook standaard of gebruiker-gedefinieerd kan wees, bied toegang tot **alle funksie eindpunte binne 'n Function App met FUNKSIE toegang vlak**.
|
||||
- **Funksie Sleutels:** Funksie sleutels kan of standaard of gebruiker-gedefinieer wees en is ontwerp om toegang eksklusief tot **spesifieke funksie eindpunte** binne 'n Function App te verleen wat 'n meer fyn-gegradeerde toegang oor die eindpunte toelaat.
|
||||
- **Gasheer Sleutels:** Gasheer sleutels, wat ook standaard of gebruiker-gedefinieer kan wees, bied toegang tot **alle funksie eindpunte binne 'n Function App met FUNKSIE toegang vlak**.
|
||||
- **Meester Sleutel:** Die meester sleutel (`_master`) dien as 'n administratiewe sleutel wat verhoogde toestemmings bied, insluitend toegang tot alle funksie eindpunte (ADMIN toegang vlak ingesluit). Hierdie **sleutel kan nie herroep word nie.**
|
||||
- **Stelsel Sleutels:** Stelsel sleutels word **bestuur deur spesifieke uitbreidings** en is nodig vir toegang tot webhook eindpunte wat deur interne komponente gebruik word. Voorbeelde sluit die Event Grid trigger en Durable Functions in, wat stelsel sleutels gebruik om veilig met hul onderskeie API's te kommunikeer.
|
||||
- **Stelsel Sleutels:** Stelsel sleutels word **deur spesifieke uitbreidings bestuur** en is nodig vir toegang tot webhook eindpunte wat deur interne komponente gebruik word. Voorbeelde sluit die Event Grid trigger en Durable Functions in, wat stelsel sleutels gebruik om veilig met hul onderskeie API's te kommunikeer.
|
||||
|
||||
> [!TIP]
|
||||
> Voorbeeld om toegang tot 'n funksie API eindpunt te verkry met 'n sleutel:
|
||||
@@ -96,7 +96,7 @@ Wanneer 'n eindpunt binne 'n funksie geskep word met 'n **HTTP trigger** is dit
|
||||
|
||||
### Basiese Verifikasie
|
||||
|
||||
Net soos in App Services, ondersteun Functions ook basiese verifikasie om te verbind met **SCM** en **FTP** om kode te ontplooi met 'n **gebruikersnaam en wagwoord in 'n URL** wat deur Azure verskaf word. Meer inligting daaroor in:
|
||||
Net soos in App Services, ondersteun Funksies ook basiese verifikasie om te verbind met **SCM** en **FTP** om kode te ontplooi met 'n **gebruikersnaam en wagwoord in 'n URL** wat deur Azure verskaf word. Meer inligting daaroor in:
|
||||
|
||||
{{#ref}}
|
||||
az-app-services.md
|
||||
@@ -192,16 +192,16 @@ package: ${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}
|
||||
```
|
||||
</details>
|
||||
|
||||
Boonop, 'n **Gemanagte Identiteit** word ook geskep sodat die Github Aksie van die repository in Azure kan aanmeld. Dit word gedoen deur 'n Federated credential oor die **Gemanagte Identiteit** te genereer wat die **Uitgewer** `https://token.actions.githubusercontent.com` en die **Onderwerp Identifiseerder** `repo:<org-name>/<repo-name>:ref:refs/heads/<branch-name>` toelaat.
|
||||
Boonop, 'n **Gemanageerde Identiteit** word ook geskep sodat die Github Aksie van die repository in Azure kan aanmeld. Dit word gedoen deur 'n Federated credential oor die **Gemanageerde Identiteit** te genereer wat die **Issuer** `https://token.actions.githubusercontent.com` en die **Subject Identifier** `repo:<org-name>/<repo-name>:ref:refs/heads/<branch-name>` toelaat.
|
||||
|
||||
> [!CAUTION]
|
||||
> Daarom sal enigeen wat daardie repo kompromitteer, in staat wees om die funksie en die Gemanagte Identiteite wat daaraan gekoppel is, te kompromitteer.
|
||||
> Daarom sal enigeen wat daardie repo kompromitteer, in staat wees om die funksie en die Gemanageerde Identiteite wat daaraan gekoppel is, te kompromitteer.
|
||||
|
||||
### Houer-gebaseerde Ontplooiings
|
||||
### Hou gebaseerde Ontplooiings
|
||||
|
||||
Nie al die planne laat toe om houers te ontplooi nie, maar vir diegene wat dit doen, sal die konfigurasie die URL van die houer bevat. In die API sal die **`linuxFxVersion`** instelling iets soos hê: `DOCKER|mcr.microsoft.com/...`, terwyl die webkonsol die **beeldinstellings** sal wys.
|
||||
Nie al die planne laat toe om houers te ontplooi nie, maar vir diegene wat dit doen, sal die konfigurasie die URL van die houer bevat. In die API sal die **`linuxFxVersion`** instelling iets soos hê: `DOCKER|mcr.microsoft.com/...`, terwyl die webkonsol, die konfigurasie die **beeldinstellings** sal wys.
|
||||
|
||||
Boonop sal **geen bronkode in die stoor** rekening wat met die funksie verband hou, gestoor word nie, aangesien dit nie nodig is nie.
|
||||
Boonop, **geen bronkode sal in die stoor** rekening wat met die funksie verband hou, gestoor word nie, aangesien dit nie nodig is nie.
|
||||
|
||||
## Enumerasie
|
||||
```bash
|
||||
|
||||
194
src/pentesting-cloud/azure-security/az-services/az-mysql.md
Normal file
194
src/pentesting-cloud/azure-security/az-services/az-mysql.md
Normal file
@@ -0,0 +1,194 @@
|
||||
# Az - MySQL Databases
|
||||
|
||||
{% hint style="success" %}
|
||||
Leer & oefen AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Leer & oefen GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Ondersteun HackTricks</summary>
|
||||
|
||||
* Kyk na die [**subskripsie planne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel hacking truuks deur PRs in te dien na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## Azure MySQL
|
||||
Azure Database for MySQL is 'n volledig bestuurde relationele databasisdiens gebaseer op die MySQL Gemeenskapsuitgawe, ontwerp om skaalbaarheid, sekuriteit en buigsaamheid vir verskeie toepassingsbehoeftes te bied. Dit het twee verskillende ontplooiingsmodelle:
|
||||
|
||||
* **Enkelbediener** (is op die aftreepad):
|
||||
- Geoptimaliseer vir kostedoeltreffende en maklik bestuurbare MySQL ontplooiings.
|
||||
- Kenmerke sluit outomatiese rugsteun, hoë beskikbaarheid en basiese monitering in.
|
||||
- Ideaal vir toepassings met voorspelbare werklas.
|
||||
* **Buigsame Bediener**:
|
||||
- Bied meer beheer oor databasisbestuur en konfigurasie.
|
||||
- Ondersteun hoë beskikbaarheid (dieselfde sone en sone-redundant).
|
||||
- Kenmerke sluit elastiese skaalbaarheid, patchbestuur en werklasoptimalisering in.
|
||||
- Bied stop/start funksionaliteit vir kostebesparings.
|
||||
|
||||
### Sleutelkenmerke
|
||||
* **Bedienerbestuur**: Die **ad-admin** kenmerk laat die bestuur van Azure Active Directory (AAD) administrateurs vir MySQL bedieners toe, wat beheer oor administratiewe toegang via AAD akrediteer besorg, terwyl die **identiteit** kenmerk die toewysing en bestuur van Azure Beheerde Identiteite moontlik maak, wat veilige, akrediteer-vrye verifikasie vir toegang tot Azure hulpbronne bied.
|
||||
* **Levensiklusbestuur**: opsies om 'n bediener te begin of te stop, 'n buigsame bedienerinstansie te verwyder, 'n bediener te herbegin om vinnig konfigurasiewijzigings toe te pas, en te wag om te verseker dat 'n bediener aan spesifieke voorwaardes voldoen voordat outomatiseringskripte voortgaan.
|
||||
* **Sekuriteit en Netwerk**: kan bediener vuurmuurreëls bestuur vir veilige databasis toegang en virtuele netwerk konfigurasies soos nodig ontkoppel.
|
||||
* **Data-beskerming en Rugsteun**: sluit opsies in om buigsame bediener rugsteun te bestuur vir dataherwinning, geo-herstel uit te voer om 'n bediener in 'n ander streek te herstel, bediener rugsteun vir eksterne gebruik te eksporteer (in Voorbeeld), en 'n bediener van rugsteun na 'n spesifieke tydstip te herstel.
|
||||
|
||||
### Enumerasie
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="az cli" %}
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
# List all flexible-servers
|
||||
az mysql flexible-server db list --resource-group <resource-group-name>
|
||||
# List databases in a flexible-server
|
||||
az mysql flexible-server db list --resource-group <resource-group-name> --server-name <server_name>
|
||||
# Show specific details of a MySQL database
|
||||
az mysql flexible-server db show --resource-group <resource-group-name> --server-name <server_name> --database-name <database_name>
|
||||
|
||||
# List firewall rules of the a server
|
||||
az mysql flexible-server firewall-rule list --resource-group <resource-group-name> --name <server_name>
|
||||
|
||||
# List all ad-admin in a server
|
||||
az mysql flexible-server ad-admin list --resource-group <resource-group-name> --server-name <server_name>
|
||||
# List all user assigned managed identities from the server
|
||||
az mysql flexible-server identity list --resource-group <resource-group-name> --server-name <server_name>
|
||||
|
||||
# List the server backups
|
||||
az mysql flexible-server backup list --resource-group <resource-group-name> --name <server_name>
|
||||
# List all read replicas for a given server
|
||||
az mysql flexible-server replica list --resource-group <resource-group-name> --name <server_name>
|
||||
|
||||
# Get the server's advanced threat protection setting
|
||||
az mysql flexible-server advanced-threat-protection-setting show --resource-group <resource-group-name> --name <server_name>
|
||||
# List all of the maintenances of a flexible server
|
||||
az mysql flexible-server maintenance list --resource-group <resource-group-name> --server-name <server_name>
|
||||
# List log files for a server.
|
||||
az mysql flexible-server server-logs list --resource-group <resource-group-name> --server-name <server_name>
|
||||
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Az PowerShell" %}
|
||||
{% code overflow="wrap" %}
|
||||
```powershell
|
||||
Get-Command -Module Az.MySql
|
||||
|
||||
# Get all flexible servers in a resource group
|
||||
Get-AzMySqlFlexibleServer -ResourceGroupName <resource-group-name>
|
||||
|
||||
# List databases in a specific flexible server
|
||||
Get-AzMySqlFlexibleServerDatabase -ResourceGroupName <resource-group-name> -ServerName <server_name>
|
||||
|
||||
# Get details of a specific database in a flexible server
|
||||
Get-AzMySqlFlexibleServerDatabase -ResourceGroupName <resource-group-name> -ServerName <server_name> -DatabaseName <database_name>
|
||||
|
||||
# List all firewall rules for a flexible server
|
||||
Get-AzMySqlFlexibleServerFirewallRule -ResourceGroupName <resource-group-name> -ServerName <server_name>
|
||||
|
||||
# Get the identity information of a flexible server
|
||||
Get-AzMySqlFlexibleServerIdentity -ResourceGroupName <resource-group-name> -ServerName <server_name>
|
||||
|
||||
# Get the server's advanced threat protection setting
|
||||
Get-AzMySqlFlexibleServerAdvancedThreatProtection -ResourceGroupName <resource-group-name> -ServerName <server_name>
|
||||
|
||||
# List configuration settings of a flexible server
|
||||
Get-AzMySqlFlexibleServerConfiguration -ResourceGroupName <resource-group-name> -ServerName <server_name>
|
||||
# Get the connection string for a flexible server
|
||||
Get-AzMySqlFlexibleServerConnectionString -ResourceGroupName <resource-group-name> -ServerName <server_name> -Client <client>
|
||||
|
||||
# List all read replicas for a given server
|
||||
Get-AzMySqlFlexibleServerReplica -ResourceGroupName <resource-group-name> -ServerName <server_name>
|
||||
|
||||
# Get the maintenance window details for a flexible server
|
||||
Get-AzMySqlFlexibleServerMaintenanceWindow -ResourceGroupName <resource-group-name> -ServerName <server_name>
|
||||
|
||||
# List log files for a server
|
||||
Get-AzMySqlFlexibleServerLog -ResourceGroupName <resource-group-name> -ServerName <server_name>
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
### Verbinding
|
||||
|
||||
Met die uitbreiding rdbms-connect kan jy toegang tot die databasis verkry met:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az mysql flexible-server connect -n <server-name> -u <username> -p <password> --interactive
|
||||
|
||||
#or execute commands
|
||||
az mysql flexible-server execute \
|
||||
-n <server-name> \
|
||||
-u <username> \
|
||||
-p "<password>" \
|
||||
-d <database-name> \
|
||||
--querytext "SELECT * FROM <table-name>;"
|
||||
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
Of met die MySQL inheemse uitbreiding plugin
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
mysql -h <server-name>.mysql.database.azure.com -P 3306 -u <username> -p
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
U kan ook navrae met github uitvoer, maar die wagwoord en gebruiker is ook nodig. U moet 'n sql-lêer opstel met die navraag om uit te voer en dan:
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
# Setup
|
||||
az mysql flexible-server deploy setup \
|
||||
-s <server-name> \
|
||||
-g <resource-group> \
|
||||
-u <admin-user> \
|
||||
-p "<admin-password>" \
|
||||
--sql-file <path-to-sql-file> \
|
||||
--repo <github-username/repository-name> \
|
||||
--branch <branch-name> \
|
||||
--action-name <action-name> \
|
||||
--allow-push
|
||||
|
||||
# Run it
|
||||
az mysql flexible-server deploy run \
|
||||
--action-name <action-name> \
|
||||
--branch <branch-name>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
## Privilege Escalation
|
||||
|
||||
{% content-ref url="../az-privilege-escalation/az-mysql-privesc.md" %}
|
||||
[az-mysql-privesc.md](../az-privilege-escalation/az-mysql-privesc.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Post Exploitation
|
||||
|
||||
{% content-ref url="../az-post-exploitation/az-mysql-post-exploitation.md" %}
|
||||
[az-sql-mysql-exploitation.md](../az-post-exploitation/az-mysql-post-exploitation.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## ToDo
|
||||
|
||||
* Soek 'n manier om toegang te verkry met mysql flexible-server ad-admin om te verifieer dat dit 'n privesc-metode is
|
||||
|
||||
|
||||
|
||||
{% hint style="success" %}
|
||||
Leer & oefen AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Leer & oefen GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* Kyk na die [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **Sluit aan by die** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) of die [**telegram group**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel hacking truuks deur PRs in te dien na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
173
src/pentesting-cloud/azure-security/az-services/az-postgresql.md
Normal file
173
src/pentesting-cloud/azure-security/az-services/az-postgresql.md
Normal file
@@ -0,0 +1,173 @@
|
||||
# Az - PostgreSQL Databases
|
||||
|
||||
{% hint style="success" %}
|
||||
Leer & oefen AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Leer & oefen GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Ondersteun HackTricks</summary>
|
||||
|
||||
* Kyk na die [**subskripsie planne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel hacking truuks deur PRs in te dien na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## Azure PostgreSQL
|
||||
**Azure Database for PostgreSQL** is 'n volledig bestuurde **relationele databasisdiens gebaseer op die PostgreSQL** Gemeenskapsuitgawe. Dit is ontwerp om skaalbaarheid, sekuriteit en buigsaamheid te bied vir diverse toepassingsbehoeftes. Soos Azure MySQL, bied PostgreSQL twee ontplooiingsmodelle:
|
||||
|
||||
* **Enkelbediener** (op die afskeidspad):
|
||||
- Geoptimaliseer vir eenvoudige, kostedoeltreffende PostgreSQL ontplooiings.
|
||||
- Beskik oor outomatiese rugsteun, basiese monitering en hoë beskikbaarheid.
|
||||
- Ideaal vir toepassings met voorspelbare werklas.
|
||||
* **Buigsame Bediener**:
|
||||
- Bied groter beheer oor databasisbestuur en konfigurasie.
|
||||
- Ondersteun hoë beskikbaarheid, beide in dieselfde sone en oor sones.
|
||||
- Beskik oor elastiese skaalbaarheid, outomatiese onderhoud en kostebesparende funksionaliteit.
|
||||
- Laat die begin en stop van die bediener toe om koste te optimaliseer.
|
||||
|
||||
### Sleutelkenmerke
|
||||
|
||||
* **Pasgemaakte Onderhoudsvensters**: Skeduleer opdaterings om onderbrekings te minimaliseer.
|
||||
* **Aktiewe Monitering**: Toegang tot gedetailleerde metrieke en logs om databasisprestasie te volg en te verbeter.
|
||||
* **Stop/Begin Bediener**: Gebruikers kan die bediener stop en begin.
|
||||
* **Outomatiese Rugsteun**: Ingeboude daaglikse rugsteun met retensieperiodes wat tot 35 dae konfigureerbaar is.
|
||||
* **Rolgebaseerde Toegang**: Beheer gebruikersregte en administratiewe toegang deur Azure Active Directory.
|
||||
* **Sekuriteit en Netwerk**: kan bediener vuurmuurreëls bestuur vir veilige databasis toegang en virtuele netwerk konfigurasies soos nodig ontkoppel.
|
||||
|
||||
### Enumerasie
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="az cli" %}
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
# List servers in a resource group
|
||||
az postgres flexible-server list --resource-group <resource-group-name>
|
||||
# List databases in a flexible-server
|
||||
az postgres flexible-server db list --resource-group <resource-group-name> --server-name <server_name>
|
||||
# Show specific details of a Postgre database
|
||||
az postgres flexible-server db show --resource-group <resource-group-name> --server-name <server_name> --database-name <database_name>
|
||||
|
||||
# List firewall rules of the a server
|
||||
az postgres flexible-server firewall-rule list --resource-group <resource-group-name> --name <server_name>
|
||||
# List parameter values for a felxible server
|
||||
az postgres flexible-server parameter list --resource-group <resource-group-name> --server-name <server_name>
|
||||
# List private link
|
||||
az postgres flexible-server private-link-resource list --resource-group <resource-group-name> --server-name <server_name>
|
||||
|
||||
# List all ad-admin in a server
|
||||
az postgres flexible-server ad-admin list --resource-group <resource-group-name> --server-name <server_name>
|
||||
# List all user assigned managed identities from the server
|
||||
az postgres flexible-server identity list --resource-group <resource-group-name> --server-name <server_name>
|
||||
|
||||
# List the server backups
|
||||
az postgres flexible-server backup list --resource-group <resource-group-name> --name <server_name>
|
||||
# List all read replicas for a given server
|
||||
az postgres flexible-server replica list --resource-group <resource-group-name> --name <server_name>
|
||||
# List migrations
|
||||
az postgres flexible-server migration list --resource-group <resource-group-name> --name <server_name>
|
||||
|
||||
# Get the server's advanced threat protection setting
|
||||
az postgres flexible-server advanced-threat-protection-setting show --resource-group <resource-group-name> --name <server_name>
|
||||
# List all of the maintenances of a flexible server
|
||||
az postgres flexible-server maintenance list --resource-group <resource-group-name> --server-name <server_name>
|
||||
# List log files for a server.
|
||||
az postgres flexible-server server-logs list --resource-group <resource-group-name> --server-name <server_name>
|
||||
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
|
||||
{% tab title="Az PowerShell" %}
|
||||
{% code overflow="wrap" %}
|
||||
```powershell
|
||||
Get-Command -Module Az.PostgreSql
|
||||
|
||||
# List flexible-servers in a resource group
|
||||
Get-AzPostgreSqlFlexibleServer -ResourceGroupName <resource-group-name>
|
||||
# List databases in a flexible-server
|
||||
Get-AzPostgreSqlFlexibleServerDatabase -ResourceGroupName <resource-group-name> -ServerName <server_name>
|
||||
|
||||
# List firewall rules of the a flexible-server
|
||||
Get-AzPostgreSqlFlexibleServerFirewallRule -ResourceGroupName <resource-group-name> -ServerName <server_name>
|
||||
|
||||
# List configuration settings of a flexible server
|
||||
Get-AzPostgreSqlFlexibleServerConfiguration -ResourceGroupName <resource-group-name> -ServerName <server_name>
|
||||
# Get the connection string for a flexible server
|
||||
Get-AzPostgreSqlFlexibleServerConnectionString -ResourceGroupName <resource-group-name> -ServerName <server_name> -Client <client>
|
||||
|
||||
Get-AzPostgreSqlFlexibleServerLocationBasedCapability -Location <location>
|
||||
|
||||
# List servers in a resource group
|
||||
Get-AzPostgreSqlServer -ResourceGroupName <resource-group-name>
|
||||
|
||||
```
|
||||
{% endcode %}
|
||||
{% endtab %}
|
||||
{% endtabs %}
|
||||
|
||||
### Verbinding
|
||||
|
||||
Met die uitbreiding rdbms-connect kan jy toegang tot die databasis verkry met:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az postgres flexible-server connect -n <server-name> -u <username> -p <password> --interactive
|
||||
|
||||
#or execute commands
|
||||
az postgres flexible-server execute \
|
||||
-n <server-name> \
|
||||
-u <username> \
|
||||
-p "<password>" \
|
||||
-d <database-name> \
|
||||
--querytext "SELECT * FROM <table-name>;"
|
||||
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
Of
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
psql -h testpostgresserver1994.postgres.database.azure.com -p 5432 -U adminuser <database-name>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
## Verwysings
|
||||
|
||||
* [https://learn.microsoft.com/en-us/azure/postgresql/](https://learn.microsoft.com/en-us/azure/postgresql/)
|
||||
* [https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/service-overview](https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/service-overview)
|
||||
* [https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/overview](https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/overview)
|
||||
|
||||
## Privilege Escalation
|
||||
|
||||
{% content-ref url="../az-privilege-escalation/az-postgresql-privesc.md" %}
|
||||
[az-postgresql-privesc.md](../az-privilege-escalation/az-postgresql-privesc.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## Post Exploitation
|
||||
|
||||
{% content-ref url="../az-post-exploitation/az-postgresql-post-exploitation.md" %}
|
||||
[az-postgresql-post-exploitation.md](../az-post-exploitation/az-postgresql-post-exploitation.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## ToDo
|
||||
|
||||
* Soek 'n manier om toegang te verkry met ad-admin om te verifieer dat dit 'n privesc metode is
|
||||
|
||||
|
||||
{% hint style="success" %}
|
||||
Leer & oefen AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
||||
Leer & oefen GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Ondersteun HackTricks</summary>
|
||||
|
||||
* Kyk na die [**subskripsie planne**](https://github.com/sponsors/carlospolop)!
|
||||
* **Sluit aan by die** 💬 [**Discord groep**](https://discord.gg/hRep4RUj7f) of die [**telegram groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
||||
* **Deel hacking truuks deur PRs in te dien na die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
@@ -16,7 +16,7 @@ Azure Virtuele Masjiene (VMs) is buigsaam, op aanvraag **cloud-gebaseerde bedien
|
||||
|
||||
### Sekuriteitskonfigurasies
|
||||
|
||||
- **Beschikbaarheidsgebiede**: Beschikbaarheidsgebiede is afsonderlike groepe datacenters binne 'n spesifieke Azure streek wat fisies geskei is om die risiko te minimaliseer dat verskeie gebiede deur plaaslike onderbrekings of rampe geraak word.
|
||||
- **Beschikbaarheidsgebiede**: Beschikbaarheidsgebiede is onderskeie groepe datacenters binne 'n spesifieke Azure streek wat fisies geskei is om die risiko te minimaliseer dat verskeie gebiede deur plaaslike onderbrekings of rampe geraak word.
|
||||
- **Sekuriteitstipe**:
|
||||
- **Standaard Sekuriteit**: Dit is die standaard sekuriteitstipe wat nie enige spesifieke konfigurasie vereis nie.
|
||||
- **Vertroude Ontplooiing**: Hierdie sekuriteitstipe verbeter beskerming teen opstartkits en kernvlak malware deur Secure Boot en Virtual Trusted Platform Module (vTPM) te gebruik.
|
||||
@@ -39,9 +39,9 @@ Azure Virtuele Masjiene (VMs) is buigsaam, op aanvraag **cloud-gebaseerde bedien
|
||||
- Netwerk Uit Totaal is groter as 200GB
|
||||
- VmAvailabilityMetric is minder as 1
|
||||
- **Gesondheidsmonitor**: Standaard kontroleer protokol HTTP op poort 80
|
||||
- **Slots**: Dit laat toe om 'n VM te vergrendel sodat dit net gelees kan word (**ReadOnly** slot) of dit kan gelees en opgedateer word maar nie verwyder word nie (**CanNotDelete** slot).
|
||||
- Meeste VM verwante hulpbronne **ondersteun ook slots** soos skywe, snappings...
|
||||
- Slots kan ook toegepas word op **hulpbron groep en subskripsie vlakke**
|
||||
- **Slotte**: Dit laat toe om 'n VM te sluit sodat dit net gelees kan word (**ReadOnly** slot) of dit kan gelees en opgedateer word maar nie verwyder word nie (**CanNotDelete** slot).
|
||||
- Meeste VM verwante hulpbronne **ondersteun ook slotte** soos skywe, snappings...
|
||||
- Slotte kan ook toegepas word op **hulpbron groep en subskripsie vlakke**
|
||||
|
||||
## Skywe & snappings
|
||||
|
||||
@@ -50,7 +50,7 @@ Azure Virtuele Masjiene (VMs) is buigsaam, op aanvraag **cloud-gebaseerde bedien
|
||||
- Dieselfde in snappings
|
||||
- Standaard is dit moontlik om **die skyf van alle netwerke te deel**, maar dit kan ook **beperk** word tot slegs sekere **privaat toegang** of om **publieke en private toegang heeltemal te deaktiveer**.
|
||||
- Dieselfde in snappings
|
||||
- Dit is moontlik om **'n SAS URI** (maks 60 dae) te **genereer om die skyf te eksporteer**, wat gekonfigureer kan word om verifikasie te vereis of nie
|
||||
- Dit is moontlik om 'n **SAS URI** (maks 60 dae) te **genereer om die skyf te eksporteer**, wat gekonfigureer kan word om verifikasie te vereis of nie
|
||||
- Dieselfde in snappings
|
||||
|
||||
{{#tabs}}
|
||||
@@ -79,7 +79,7 @@ Get-AzDisk -Name <DiskName> -ResourceGroupName <ResourceGroupName>
|
||||
'n **VM beeld** is 'n sjabloon wat die bedryfstelsel, toepassingsinstellings en lêerstelsel bevat wat nodig is om 'n **nuwe virtuele masjien (VM)** te **skep**. Die verskil tussen 'n beeld en 'n skyf-snapshot is dat 'n skyf-snapshot 'n lees-alleen, punt-in-tyd kopie van 'n enkele bestuurde skyf is, wat hoofsaaklik vir rugsteun of probleemoplossing gebruik word, terwyl 'n beeld **meerdere skywe kan bevat en ontwerp is om as 'n sjabloon vir die skep van nuwe VM's te dien**.\
|
||||
Beelde kan bestuur word in die **Beelde afdeling** van Azure of binne **Azure rekenaar galerye** wat dit moontlik maak om **weergawe** te genereer en die beeld oor huurders te **deel** of selfs dit publiek te maak.
|
||||
|
||||
'n **herstelpunt** stoor die VM-konfigurasie en **punt-in-tyd** toepassings-konsistente **snapshots van al die bestuurde skywe** wat aan die VM gekoppel is. Dit is verwant aan die VM en die doel daarvan is om daardie VM te kan herstel na hoe dit was in daardie spesifieke punt in tyd.
|
||||
'n **herstelpunt** stoor die VM-konfigurasie en **punt-in-tyd** toepassings-konsistente **snapshots van al die bestuurde skywe** wat aan die VM gekoppel is. Dit is verwant aan die VM en die doel daarvan is om daardie VM te kan herstel na hoe dit was in daardie spesifieke punt in tyd.
|
||||
|
||||
{{#tabs}}
|
||||
{{#tab name="az cli"}}
|
||||
@@ -144,7 +144,7 @@ Get-AzRestorePointCollection -Name <CollectionName> -ResourceGroupName <Resource
|
||||
|
||||
## Azure Site Recovery
|
||||
|
||||
Van die [**docs**](https://learn.microsoft.com/en-us/azure/site-recovery/site-recovery-overview): Site Recovery help om besigheidskontinuitiet te verseker deur besigheidsprogramme en werklas aan die gang te hou tydens onderbrekings. Site Recovery **repliceer werklas** wat op fisiese en virtuele masjiene (VMs) draai van 'n primêre plek na 'n sekondêre ligging. Wanneer 'n onderbreking by jou primêre plek plaasvind, kan jy oor na 'n sekondêre ligging, en toegang tot programme van daar. Nadat die primêre ligging weer aan die gang is, kan jy terugkeer na dit.
|
||||
Van die [**docs**](https://learn.microsoft.com/en-us/azure/site-recovery/site-recovery-overview): Site Recovery help om besigheidskontinuitiet te verseker deur besigheidsprogramme en werklas aan die gang te hou tydens onderbrekings. Site Recovery **repliceer werklas** wat op fisiese en virtuele masjiene (VMs) van 'n primêre plek na 'n sekondêre ligging loop. Wanneer 'n onderbreking by jou primêre plek plaasvind, kan jy oor na 'n sekondêre ligging, en toegang tot programme van daar. Nadat die primêre ligging weer aan die gang is, kan jy terugkeer na dit.
|
||||
|
||||
## Azure Bastion
|
||||
|
||||
@@ -189,14 +189,14 @@ Get-AzBastion
|
||||
|
||||
## Metadata
|
||||
|
||||
Die Azure Instans Metadata-diens (IMDS) **verskaf inligting oor lopende virtuele masjieninstansies** om te help met hul bestuur en konfigurasie. Dit bied besonderhede soos die SKU, stoor, netwerk konfigurasies, en inligting oor komende onderhoudsgeleenthede via **REST API beskikbaar by die nie-routable IP-adres 169.254.169.254**, wat slegs vanaf binne die VM toeganklik is. Kommunikasie tussen die VM en IMDS bly binne die gasheer, wat veilige toegang verseker. Wanneer daar na IMDS gevra word, moet HTTP-kliënte binne die VM web-proxies omseil om behoorlike kommunikasie te verseker.
|
||||
Die Azure Instans Metadata-diens (IMDS) **verskaf inligting oor lopende virtuele masjieninstansies** om te help met hul bestuur en konfigurasie. Dit bied besonderhede soos die SKU, stoor, netwerk konfigurasies, en inligting oor komende onderhoudsgeleenthede via **REST API beskikbaar by die nie-routable IP adres 169.254.169.254**, wat slegs vanaf binne die VM toeganklik is. Kommunikasie tussen die VM en IMDS bly binne die gasheer, wat veilige toegang verseker. Wanneer daar na IMDS gevra word, moet HTTP-kliënte binne die VM web-proxies omseil om behoorlike kommunikasie te verseker.
|
||||
|
||||
Boonop, om die metadata-eindpunt te kontak, moet die HTTP-versoek die koptekst **`Metadata: true`** hê en mag nie die koptekst **`X-Forwarded-For`** hê nie.
|
||||
|
||||
Kyk hoe om dit te enumerate in:
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf#azure-vm
|
||||
https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html#azure-vm
|
||||
{{#endref}}
|
||||
|
||||
## VM Enumeration
|
||||
|
||||
Reference in New Issue
Block a user