mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-31 07:00:38 -08:00
Translated ['src/pentesting-cloud/azure-security/az-post-exploitation/az
This commit is contained in:
@@ -18,6 +18,45 @@ az logic workflow identity remove/assign \
|
||||
--system-assigned true \
|
||||
--user-assigned "/subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity_name>"
|
||||
```
|
||||
Zusätzlich können Sie mit `Microsoft.Logic/workflows/write` einige Konfigurationen ändern, wie z.B. erlaubte eingehende IP-Adressen oder die Aufbewahrungsdauer der Ausführungsprotokolle:
|
||||
```bash
|
||||
az rest --method PUT \
|
||||
--uri "https://management.azure.com/subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.Logic/workflows/<workflow_name>?api-version=2019-05-01" \
|
||||
--headers "Content-Type=application/json" \
|
||||
--body '{
|
||||
"location": "<location>",
|
||||
"properties": {
|
||||
"state": "Enabled",
|
||||
"definition": {
|
||||
"$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
|
||||
"contentVersion": "1.0.0.0",
|
||||
"parameters": {},
|
||||
"triggers": {
|
||||
"<trigger_name>": {
|
||||
"type": "Request",
|
||||
"kind": "Http"
|
||||
}
|
||||
},
|
||||
"actions": {},
|
||||
"outputs": {}
|
||||
},
|
||||
"runtimeConfiguration": {
|
||||
"lifetime": {
|
||||
"unit": "day",
|
||||
"count": <count>
|
||||
}
|
||||
},
|
||||
"accessControl": {
|
||||
"triggers": {
|
||||
"allowedCallerIpAddresses": []
|
||||
},
|
||||
"actions": {
|
||||
"allowedCallerIpAddresses": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}'
|
||||
```
|
||||
### `Microsoft.Web/sites/read`, `Microsoft.Web/sites/write`
|
||||
Mit diesen Berechtigungen können Sie Logic Apps erstellen oder aktualisieren, die auf einem App Service Plan gehostet werden. Dazu gehört das Ändern von Einstellungen wie das Aktivieren oder Deaktivieren der HTTPS-Durchsetzung.
|
||||
```bash
|
||||
@@ -43,7 +82,7 @@ az logicapp config appsettings set \
|
||||
--settings "<key>=<value>"
|
||||
```
|
||||
### `Microsoft.Logic/integrationAccounts/write`
|
||||
Mit dieser Berechtigung können Sie Azure Logic Apps-Integrationskonten erstellen, aktualisieren oder löschen. Dazu gehört die Verwaltung von Integrationskonten-spezifischen Konfigurationen wie Maps, Schemata, Partner, Vereinbarungen und mehr.
|
||||
Mit dieser Berechtigung können Sie Azure Logic Apps-Integrationskonten erstellen, aktualisieren oder löschen. Dies umfasst die Verwaltung von Integrationskontenebene-Konfigurationen wie Maps, Schemata, Partner, Vereinbarungen und mehr.
|
||||
```bash
|
||||
az logic integration-account create \
|
||||
--resource-group <resource_group_name> \
|
||||
@@ -77,7 +116,7 @@ az logic integration-account map create \
|
||||
--map-content map-content.xslt
|
||||
```
|
||||
### `Microsoft.Resources/subscriptions/resourcegroups/read` && `Microsoft.Logic/integrationAccounts/partners/write`
|
||||
Mit dieser Berechtigung können Sie Partner in einem Azure Logic Apps-Integrationskonto erstellen oder ändern. Partner repräsentieren Entitäten oder Systeme, die an geschäftlichen Workflows zwischen Unternehmen (B2B) teilnehmen.
|
||||
Mit dieser Berechtigung können Sie Partner in einem Azure Logic Apps-Integrationskonto erstellen oder ändern. Partner repräsentieren Entitäten oder Systeme, die an Geschäftsprozessen (B2B) teilnehmen.
|
||||
```bash
|
||||
az logic integration-account partner create \
|
||||
--resource-group <resource_group_name> \
|
||||
@@ -111,9 +150,19 @@ az logic integration-account session create \
|
||||
}
|
||||
}
|
||||
}'
|
||||
```
|
||||
### `Microsoft.Logic/workflows/regenerateAccessKey/action`
|
||||
|
||||
Benutzer mit dieser Berechtigung können die Zugriffsschlüssel für Logic Apps regenerieren, und bei Missbrauch kann dies zu Dienstunterbrechungen führen.
|
||||
```bash
|
||||
az rest --method POST \
|
||||
--uri "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Logic/workflows/<workflow-name>/regenerateAccessKey?api-version=<api-version>" \
|
||||
--body '{"keyType": "<key-type>"}' \
|
||||
--headers "Content-Type=application/json"
|
||||
|
||||
```
|
||||
### "*/delete"
|
||||
Mit diesen Berechtigungen können Sie Ressourcen im Zusammenhang mit Azure Logic Apps löschen.
|
||||
Mit diesen Berechtigungen können Sie Ressourcen im Zusammenhang mit Azure Logic Apps löschen
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -32,8 +32,67 @@ az rest \
|
||||
--body '{}' \
|
||||
--headers "Content-Type=application/json"
|
||||
```
|
||||
Zusätzlich können Sie mit `Microsoft.Logic/workflows/write` die Autorisierungsrichtlinie ändern, indem Sie beispielsweise einem anderen Mandanten die Möglichkeit geben, den Workflow auszulösen:
|
||||
```bash
|
||||
az rest --method PUT \
|
||||
--uri "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Logic/workflows/<workflow-name>?api-version=2016-10-01" \
|
||||
--body '{
|
||||
"location": "<region>",
|
||||
"properties": {
|
||||
"definition": {
|
||||
"$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
|
||||
"contentVersion": "1.0.0.0",
|
||||
"parameters": {
|
||||
"$connections": {
|
||||
"defaultValue": {},
|
||||
"type": "Object"
|
||||
}
|
||||
},
|
||||
"triggers": {
|
||||
"<trigger-name>": {
|
||||
"type": "Request",
|
||||
"kind": "Http"
|
||||
}
|
||||
},
|
||||
"actions": {},
|
||||
"outputs": {}
|
||||
},
|
||||
"accessControl": {
|
||||
"triggers": {
|
||||
"openAuthenticationPolicies": {
|
||||
"policies": {
|
||||
"<policy-name>": {
|
||||
"type": "AAD",
|
||||
"claims": [
|
||||
{
|
||||
"name": "iss",
|
||||
"value": "<issuer-url>"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}'
|
||||
|
||||
```
|
||||
### `Microsoft.Logic/workflows/triggers/listCallbackUrl/action`
|
||||
Sie können die Callback-URL des Triggers abrufen und ausführen.
|
||||
```bash
|
||||
az rest --method POST \
|
||||
--uri "https://management.azure.com/subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.Logic/workflows/<workflow_name>/triggers/<trigger_name>/listCallbackUrl?api-version=2019-05-01"
|
||||
```
|
||||
Dies wird eine Callback-URL wie `https://prod-28.centralus.logic.azure.com:443/workflows/....` zurückgeben. Jetzt können wir es mit folgendem ausführen:
|
||||
```bash
|
||||
curl --request POST \
|
||||
--url "https://prod-28.centralus.logic.azure.com:443/workflows/<workflow_id>/triggers/<trigger_name>/paths/invoke?api-version=2019-05-01&sp=%2Ftriggers%2F<trigger_name>%2Frun&sv=1.0&sig=<signature>" \
|
||||
--header 'Content-Type: application/json' \
|
||||
--data '{"exampleKey": "exampleValue"}'
|
||||
```
|
||||
### (`Microsoft.Web/sites/read`, `Microsoft.Web/sites/basicPublishingCredentialsPolicies/read`, `Microsoft.Web/sites/write`, `Microsoft.Web/sites/config/list/action`) && (`Microsoft.Web/sites/start/action`)
|
||||
Mit diesen Berechtigungen können Sie Logic App-Workflows mithilfe von ZIP-Datei-Bereitstellungen bereitstellen. Diese Berechtigungen ermöglichen Aktionen wie das Lesen von App-Details, den Zugriff auf Veröffentlichungsanmeldeinformationen, das Schreiben von Änderungen und das Auflisten von App-Konfigurationen. Neben den Startberechtigungen können Sie eine neue Logic App mit dem gewünschten Inhalt aktualisieren und bereitstellen.
|
||||
Mit diesen Berechtigungen können Sie Logic App-Workflows mithilfe von ZIP-Datei-Bereitstellungen bereitstellen. Diese Berechtigungen ermöglichen Aktionen wie das Lesen von Anwendungsdetails, den Zugriff auf Veröffentlichungsanmeldeinformationen, das Schreiben von Änderungen und das Auflisten von Anwendungs-Konfigurationen. Neben den Startberechtigungen können Sie eine neue Logic App mit dem gewünschten Inhalt aktualisieren und bereitstellen.
|
||||
```bash
|
||||
az logicapp deployment source config-zip \
|
||||
--name <logic_app_name> \
|
||||
|
||||
@@ -4,13 +4,13 @@
|
||||
|
||||
## Azure CosmosDB
|
||||
|
||||
**Azure Cosmos DB** ist eine vollständig **verwaltete NoSQL-, relationale und Vektordatenbank**, die Reaktionszeiten im einstelligen Millisekundenbereich, automatische Skalierbarkeit und SLA-unterstützte Verfügbarkeit mit Unternehmenssicherheit bietet. Es ermöglicht eine schnellere Anwendungsentwicklung durch schlüsselfertige, mehrregionale Datenverteilung, Open-Source-APIs, SDKs für beliebte Programmiersprachen und KI-Datenbankfunktionen wie integrierte Vektorstützung und nahtlose Azure KI-Integration.
|
||||
**Azure Cosmos DB** ist eine vollständig **verwaltete NoSQL-, relationale und Vektordatenbank**, die Reaktionszeiten im einstelligen Millisekundenbereich, automatische Skalierbarkeit und SLA-unterstützte Verfügbarkeit mit Unternehmenssicherheit bietet. Es ermöglicht eine schnellere Anwendungsentwicklung durch schlüsselfertige, mehrregionale Datenverteilung, Open-Source-APIs, SDKs für beliebte Programmiersprachen und KI-Datenbankfunktionen wie integrierte Vektorsupport und nahtlose Azure KI-Integration.
|
||||
|
||||
Azure Cosmos DB bietet mehrere Datenbank-APIs, um reale Daten mit Dokumenten, relationalen, Schlüssel-Wert-, Graph- und Spaltenfamilien-Datenmodellen zu modellieren. Diese APIs sind NoSQL, MongoDB, PostgreSQL, Cassandra, Gremlin und Table.
|
||||
|
||||
Ein wichtiger Aspekt von CosmosDB ist das Azure Cosmos-Konto. **Azure Cosmos-Konto** fungiert als Einstiegspunkt zu den Datenbanken. Das Konto bestimmt wichtige Einstellungen wie globale Verteilung, Konsistenzstufen und die spezifische API, die verwendet werden soll, wie z.B. NoSQL. Über das Konto können Sie die globale Replikation konfigurieren, um sicherzustellen, dass Daten in mehreren Regionen für einen latenzarmen Zugriff verfügbar sind. Darüber hinaus können Sie eine Konsistenzstufe wählen, die zwischen Leistung und Datenakkuratheit balanciert, mit Optionen von starker bis eventualer Konsistenz.
|
||||
|
||||
Azure Cosmos DB unterstützt **benutzerzugewiesene Identitäten** und **systemzugewiesene verwaltete Identitäten**, die automatisch erstellt und an den Lebenszyklus der Ressource gebunden sind, was eine sichere, tokenbasierte Authentifizierung beim Verbinden mit anderen Diensten ermöglicht – vorausgesetzt, diese Dienste haben die entsprechenden Rollen zugewiesen. Cosmos DB hat jedoch keinen integrierten Mechanismus, um direkt externe Datenquellen wie Azure Blob Storage abzufragen. Im Gegensatz zu den externen Tabellenfunktionen von SQL Server erfordert Cosmos DB, dass Daten mit externen Tools wie Azure Data Factory, dem Data Migration Tool oder benutzerdefinierten Skripten in seine Container aufgenommen werden, bevor sie mit den nativen Abfragefunktionen abgefragt werden können.
|
||||
Azure Cosmos DB unterstützt **benutzerzugewiesene Identitäten** und **systemzugewiesene verwaltete Identitäten**, die automatisch erstellt und an den Lebenszyklus der Ressource gebunden sind. Cosmos DB hat jedoch keinen integrierten Mechanismus, um direkt externe Datenquellen wie Azure Blob Storage abzufragen. Im Gegensatz zu den externen Tabellenfunktionen von SQL Server erfordert Cosmos DB, dass Daten mit externen Tools wie Azure Data Factory, dem Data Migration Tool oder benutzerdefinierten Skripten in seine Container aufgenommen werden, bevor sie mit seinen nativen Abfragefähigkeiten abgefragt werden können.
|
||||
|
||||
### NoSQL
|
||||
Die Azure Cosmos DB NoSQL-API ist eine dokumentenbasierte API, die JSON als Datenformat verwendet. Sie bietet eine SQL-ähnliche Abfragesyntax zum Abfragen von JSON-Objekten, was sie geeignet macht, um mit strukturierten und semi-strukturierten Daten zu arbeiten. Der Endpunkt des Dienstes ist:
|
||||
@@ -18,16 +18,16 @@ Die Azure Cosmos DB NoSQL-API ist eine dokumentenbasierte API, die JSON als Date
|
||||
https://<Account-Name>.documents.azure.com:443/
|
||||
```
|
||||
#### Datenbanken
|
||||
Innerhalb eines Kontos können Sie eine oder mehrere Datenbanken erstellen, die als logische Gruppierungen von Containern dienen. Eine Datenbank fungiert als Grenze für das Ressourcenmanagement und die Benutzerberechtigungen. Datenbanken können entweder die bereitgestellte Durchsatzrate über ihre Container teilen oder dedizierten Durchsatz für einzelne Container zuweisen.
|
||||
Innerhalb eines Kontos können Sie eine oder mehrere Datenbanken erstellen, die als logische Gruppierungen von Containern dienen. Eine Datenbank fungiert als Grenze für das Ressourcenmanagement und die Benutzerberechtigungen. Datenbanken können entweder mehreren Containern einen gemeinsamen Pool von Leistungsressourcen zur Verfügung stellen oder jedem Container seine eigene dedizierte Leistung geben.
|
||||
|
||||
#### Container
|
||||
Die zentrale Einheit der Datenspeicherung ist der Container, der JSON-Dokumente enthält und automatisch für effiziente Abfragen indiziert wird. Container sind elastisch skalierbar und über Partitionen verteilt, die durch einen benutzerdefinierten Partitionierungsschlüssel bestimmt werden. Der Partitionierungsschlüssel ist entscheidend für die Gewährleistung optimaler Leistung und gleichmäßiger Datenverteilung. Zum Beispiel könnte ein Container Kundendaten speichern, wobei "customerId" als Partitionierungsschlüssel dient.
|
||||
|
||||
#### Hauptmerkmale
|
||||
**Globale Verteilung**: Aktivieren oder Deaktivieren von Geo-Redundanz für die Replikation über Regionen hinweg und Multi-Regionen-Schreibvorgänge für verbesserte Verfügbarkeit.
|
||||
**Netzwerk & Sicherheit**: zwischen öffentlichen (alle/ausgewählte Netzwerke) oder privaten Endpunkten für die Konnektivität. Sichere Verbindungen mit TLS 1.2-Verschlüsselung. Unterstützt CORS (Cross-Origin Resource Sharing) für kontrollierten Zugriff auf Ressourcen.
|
||||
**Backup & Wiederherstellung**: von periodischen, kontinuierlichen (7 Tage) oder kontinuierlichen (30 Tage) Backup-Richtlinien mit konfigurierbaren Intervallen und Aufbewahrung.
|
||||
**Datenverschlüsselung**: Standardmäßig verwaltete Dienstschlüssel oder vom Kunden verwaltete Schlüssel (CMK) zur Verschlüsselung (Die Auswahl von CMK ist irreversibel).
|
||||
- **Globale Verteilung**: Aktivieren oder Deaktivieren von Geo-Redundanz für die Replikation über Regionen hinweg und Multi-Regionen-Schreibvorgänge für verbesserte Verfügbarkeit.
|
||||
- **Netzwerk & Sicherheit**: zwischen öffentlichen (alle/ausgewählte Netzwerke) oder privaten Endpunkten für die Konnektivität. Sichere Verbindungen mit TLS 1.2-Verschlüsselung. Unterstützt CORS (Cross-Origin Resource Sharing) für kontrollierten Zugriff auf Ressourcen. Microsoft Defender für Cloud kann aktiviert werden. Um die Verbindung herzustellen, können Sie Schlüssel verwenden.
|
||||
- **Backup & Wiederherstellung**: von periodischen, kontinuierlichen (7 Tage) oder kontinuierlichen (30 Tage) Backup-Richtlinien mit konfigurierbaren Intervallen und Aufbewahrung.
|
||||
- **Datenverschlüsselung**: Standardmäßig verwaltete Dienstschlüssel oder vom Kunden verwaltete Schlüssel (CMK) zur Verschlüsselung (Die Auswahl von CMK ist irreversibel).
|
||||
|
||||
#### Aufzählung
|
||||
|
||||
@@ -67,6 +67,19 @@ az cosmosdb sql trigger list --account-name <AccountName> --container-name <Cont
|
||||
## List the NoSQL user defined functions under an Azure Cosmos DB NoSQL container
|
||||
az cosmosdb sql user-defined-function list --account-name <AccountName> --container-name <ContainerName> --database-name <DatabaseName> --resource-group <ResourceGroupName>
|
||||
|
||||
|
||||
## MongoDB (vCore)
|
||||
# Install az cli extension
|
||||
az extension add --name cosmosdb-preview
|
||||
# List all MongoDB databases in a specified Azure Cosmos DB account
|
||||
az cosmosdb mongocluster list
|
||||
az cosmosdb mongocluster show --cluster-name <name> --resource-group <ResourceGroupName>
|
||||
# Get firewall rules
|
||||
az cosmosdb mongocluster firewall rule list --cluster-name <name> --resource-group <ResourceGroupName>
|
||||
# Connect to in
|
||||
brew install mongosh
|
||||
mongosh "mongodb://<username>:<password>@<account-name>.mongo.cosmos.azure.com:10255/?ssl=true&replicaSet=globaldb&retryWrites=false" --username <username> --password <password>
|
||||
|
||||
```
|
||||
{{#endtab }}
|
||||
|
||||
@@ -118,7 +131,7 @@ Get-AzCosmosDBSqlUserDefinedFunction -ResourceGroupName "<ResourceGroupName>" -A
|
||||
|
||||
#### Verbindung
|
||||
|
||||
Um die azure-cosmosDB (pip install azure-cosmos) Bibliothek zu verbinden, sind der Endpunkt und der Schlüssel entscheidende Komponenten, um die Verbindung herzustellen.
|
||||
Es gibt 2 Schlüsseltypen, Lese-Schreib (voll) und Nur-Lesen. Sie gewähren den angegebenen Zugriff auf alle Datenbanken, Sammlungen und Daten innerhalb des Cosmos DB-Kontos. Um eine Verbindung herzustellen, wird die azure-cosmosDB-Bibliothek (pip install azure-cosmos) benötigt. Darüber hinaus sind der Endpunkt und der Schlüssel entscheidende Komponenten, um die Verbindung herzustellen.
|
||||
```python
|
||||
from azure.cosmos import CosmosClient, PartitionKey
|
||||
|
||||
@@ -193,9 +206,9 @@ In MongoDB können Sie eine oder mehrere Datenbanken innerhalb einer Instanz ers
|
||||
#### Sammlungen
|
||||
Die zentrale Einheit der Datenspeicherung in MongoDB ist die Sammlung, die Dokumente enthält und für effiziente Abfragen sowie flexibles Schema-Design konzipiert ist. Sammlungen sind elastisch skalierbar und können hochgradig durchsatzstarke Operationen über mehrere Knoten in einer verteilten Umgebung unterstützen.
|
||||
|
||||
#### Hauptmerkmale des Anfrageeinheit (RU) Typs
|
||||
**Globale Verteilung**: Aktivieren oder Deaktivieren von Geo-Redundanz für die Replikation über Regionen hinweg und Multi-Regionen-Schreibvorgänge für verbesserte Verfügbarkeit.
|
||||
**Netzwerk & Sicherheit**: zwischen öffentlichen (alle/ausgewählte Netzwerke) oder privaten Endpunkten für die Konnektivität. Sichere Verbindungen mit TLS 1.2-Verschlüsselung. Unterstützt CORS (Cross-Origin Resource Sharing) für kontrollierten Zugriff auf Ressourcen.
|
||||
#### Hauptmerkmale des Request Unit (RU) Typs
|
||||
**Globale Verteilung**: Aktivieren oder Deaktivieren von Geo-Redundanz für die Replikation über Regionen hinweg und Multi-Region-Schreibvorgänge für verbesserte Verfügbarkeit.
|
||||
**Netzwerk & Sicherheit**: zwischen öffentlichen (alle/ausgewählte Netzwerke) oder privaten Endpunkten für die Konnektivität. Sichere Verbindungen mit TLS 1.2-Verschlüsselung. Unterstützt CORS (Cross-Origin Resource Sharing) für kontrollierten Zugriff auf Ressourcen. Um die Verbindung herzustellen, können Sie Schlüssel verwenden.
|
||||
**Backup & Wiederherstellung**: von periodischen, kontinuierlichen (7 Tage, kostenlos) oder kontinuierlichen (30 Tage, kostenpflichtig) Backup-Richtlinien mit konfigurierbaren Intervallen und Aufbewahrung.
|
||||
**Datenverschlüsselung**: Standardmäßig verwaltete Dienstschlüssel oder vom Kunden verwaltete Schlüssel (CMK) zur Verschlüsselung (die Auswahl von CMK ist irreversibel).
|
||||
|
||||
@@ -229,10 +242,23 @@ az cosmosdb mongodb database list --account-name <AccountName> --resource-group
|
||||
# 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>
|
||||
|
||||
#RBAC FUNCTIONALITIES MUST BE ENABLED TO USE THIS
|
||||
# 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>
|
||||
|
||||
## MongoDB (vCore)
|
||||
# Install az cli extension
|
||||
az extension add --name cosmosdb-preview
|
||||
# List all MongoDB databases in a specified Azure Cosmos DB account
|
||||
az cosmosdb mongocluster list
|
||||
az cosmosdb mongocluster show --cluster-name <name> --resource-group <ResourceGroupName>
|
||||
# Get firewall rules
|
||||
az cosmosdb mongocluster firewall rule list --cluster-name <name> --resource-group <ResourceGroupName>
|
||||
# Connect to in
|
||||
brew install mongosh
|
||||
mongosh "mongodb://<username>:<password>@<account-name>.mongo.cosmos.azure.com:10255/?ssl=true&replicaSet=globaldb&retryWrites=false" --username <username> --password <password>
|
||||
```
|
||||
{{#endtab }}
|
||||
|
||||
@@ -273,14 +299,15 @@ Get-AzCosmosDBMongoDBRoleDefinition -AccountName <account-name> -ResourceGroupNa
|
||||
|
||||
#### Verbindung
|
||||
|
||||
Hier das Passwort, das Sie mit den Schlüsseln oder mit der im Abschnitt zur Privilegieneskalation beschriebenen Methode finden können.
|
||||
Der RU MongoDB-Typ in CosmoDB hat 2 Schlüsseltypen, Lese-Schreib (voll) und Nur-Lesen. Sie gewähren den angegebenen Zugriff auf alle Datenbanken, Sammlungen und Daten innerhalb des Cosmos DB-Kontos. Für das Passwort können Sie die Schlüssel oder die im Privesc-Abschnitt beschriebene Methode verwenden.
|
||||
```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
|
||||
# Create the client. The password and username is a custom one if the type is "vCore cluster".
|
||||
# In case that is a Request unit (RU) the username is the account name and the password is the key of the cosomosDB account.
|
||||
client = MongoClient(connection_string, username="<username>", password="<password>")
|
||||
|
||||
# Access the database
|
||||
@@ -306,6 +333,10 @@ document = {
|
||||
result = collection.insert_one(document)
|
||||
print(f"Inserted document with ID: {result.inserted_id}")
|
||||
```
|
||||
Oder einen Benutzer innerhalb des mongo verwenden:
|
||||
```bash
|
||||
mongosh "mongodb://<myUser>:<mySecurePassword>@<account_name>.mongo.cosmos.azure.com:10255/<mymongodatabase>?ssl=true&replicaSet=globaldb&retrywrites=false"
|
||||
```
|
||||
## Referenzen
|
||||
|
||||
- [https://learn.microsoft.com/en-us/azure/cosmos-db/choose-api](https://learn.microsoft.com/en-us/azure/cosmos-db/choose-api)
|
||||
|
||||
@@ -10,12 +10,9 @@ Logic Apps bietet einen visuellen Designer, um Workflows mit einer **breiten Pal
|
||||
|
||||
Beim Erstellen einer Logic App müssen Sie entweder ein externes Speicherkonto erstellen oder verknüpfen, das den Workflow-Zustand, die Ausführungshistorie und Artefakte speichert. Dieser Speicher kann mit Diagnosetools zur Überwachung konfiguriert und mit Netzwerkzugriffsrestriktionen gesichert oder in ein virtuelles Netzwerk integriert werden, um den ein- und ausgehenden Datenverkehr zu steuern.
|
||||
|
||||
### Verwaltete Identitäten
|
||||
Logic Apps hat eine **systemzugeordnete verwaltete Identität**, die an ihren Lebenszyklus gebunden ist. Wenn sie aktiviert ist, erhält sie eine eindeutige Objekt- (Principal-) ID, die mit Azure RBAC verwendet werden kann, um die erforderlichen Berechtigungen für den sicheren Zugriff auf andere Azure-Dienste zu gewähren. Dies beseitigt die Notwendigkeit, Anmeldeinformationen im Code zu speichern, da die Identität über Microsoft Entra ID authentifiziert wird. Darüber hinaus können Sie auch **benutzerzugeordnete verwaltete Identitäten** verwenden, die über mehrere Ressourcen hinweg geteilt werden können. Diese Identitäten ermöglichen es Workflows und Logic Apps, sicher mit externen Systemen zu interagieren und sicherzustellen, dass die erforderlichen Zugriffskontrollen und Berechtigungen zentral über das Sicherheitsframework von Azure verwaltet werden.
|
||||
|
||||
### Beispiele
|
||||
|
||||
- **Automatisierung von Datenpipelines**: Logic Apps können **Datenübertragungs- und Transformationsprozesse** in Kombination mit Azure Data Factory automatisieren. Dies ist nützlich, um skalierbare und zuverlässige Datenpipelines zu erstellen, die Daten zwischen verschiedenen Datenspeichern, wie Azure SQL Database und Azure Blob Storage, bewegen und transformieren, was die Analyse- und Business-Intelligence-Operationen unterstützt.
|
||||
- **Automatisierung von Datenpipelines**: Logic Apps können **Datenübertragungs- und Transformationsprozesse** in Kombination mit Azure Data Factory automatisieren. Dies ist nützlich, um skalierbare und zuverlässige Datenpipelines zu erstellen, die Daten zwischen verschiedenen Datenspeichern, wie Azure SQL Database und Azure Blob Storage, bewegen und transformieren, was Analysen und Geschäftsintelligenzoperationen unterstützt.
|
||||
- **Integration mit Azure Functions**: Logic Apps können zusammen mit Azure Functions verwendet werden, um **anspruchsvolle, ereignisgesteuerte Anwendungen zu entwickeln, die nach Bedarf skalieren** und nahtlos mit anderen Azure-Diensten integriert werden. Ein Beispielanwendungsfall ist die Verwendung einer Logic App, um eine Azure Function als Reaktion auf bestimmte Ereignisse, wie Änderungen in einem Azure Storage-Konto, auszulösen, was eine dynamische Datenverarbeitung ermöglicht.
|
||||
|
||||
### Visualisieren einer LogicAPP
|
||||
@@ -28,7 +25,7 @@ oder den Code im Abschnitt "**Logic app code view**" zu überprüfen.
|
||||
|
||||
### SSRF-Schutz
|
||||
|
||||
Selbst wenn Sie die **Logic App anfällig für SSRF** finden, können Sie nicht auf die Anmeldeinformationen aus den Metadaten zugreifen, da Logic Apps dies nicht zulässt.
|
||||
Selbst wenn Sie die **Logic App anfällig für SSRF** finden, können Sie die Anmeldeinformationen aus den Metadaten nicht abrufen, da Logic Apps dies nicht zulässt.
|
||||
|
||||
Zum Beispiel wird etwas wie dies das Token nicht zurückgeben:
|
||||
```bash
|
||||
@@ -40,15 +37,66 @@ curl -XPOST 'https://prod-44.westus.logic.azure.com:443/workflows/2d8de4be6e9741
|
||||
Es gibt mehrere Hosting-Optionen:
|
||||
|
||||
* **Consumption**
|
||||
- **Multi-tenant**: bietet gemeinsame Rechenressourcen, arbeitet in der öffentlichen Cloud und folgt einem Preismodell pro Operation. Dies ist ideal für leichte und kosteneffektive Workloads.
|
||||
- **Multi-tenant**: bietet gemeinsame Rechenressourcen, arbeitet in der öffentlichen Cloud und folgt einem Preismodell nach Nutzung. Dies ist ideal für leichte und kosteneffiziente Workloads. Dies implementiert einen "Single Workflow".
|
||||
* **Standard**
|
||||
- **Workflow Service Plan**: dedizierte Rechenressourcen mit VNET-Integration für Networking und Gebühren pro Workflow-Serviceplan-Instanz. Es ist geeignet für anspruchsvollere Workloads, die mehr Kontrolle erfordern.
|
||||
- **App Service Environment V3** dedizierte Rechenressourcen mit vollständiger Isolation und Skalierbarkeit. Es integriert sich auch mit VNET für Networking und verwendet ein Preismodell basierend auf App Service-Instanzen innerhalb der Umgebung. Dies ist ideal für unternehmensgroße Anwendungen, die hohe Isolation benötigen.
|
||||
- **Hybrid** entworfen für lokale Verarbeitung und Multi-Cloud-Unterstützung. Es ermöglicht kundenverwaltete Rechenressourcen mit lokalem Netzwerkzugang und nutzt Kubernetes Event-Driven Autoscaling (KEDA).
|
||||
- **Workflow Service Plan**: dedizierte Rechenressourcen mit VNET-Integration für Netzwerke und berechnet pro Instanz des Workflow-Serviceplans. Es ist geeignet für anspruchsvollere Workloads, die mehr Kontrolle erfordern.
|
||||
- **App Service Environment V3**: dedizierte Rechenressourcen mit vollständiger Isolation und Skalierbarkeit. Es integriert sich auch mit VNET für Netzwerke und verwendet ein Preismodell basierend auf App Service-Instanzen innerhalb der Umgebung.
|
||||
- **Hybrid**: entworfen für lokale Verarbeitung und Multi-Cloud-Unterstützung. Es ermöglicht kundenverwaltete Rechenressourcen mit lokalem Netzwerkzugang und nutzt Kubernetes Event-Driven Autoscaling (KEDA). Es basiert auf einer Container App Connected Environment.
|
||||
|
||||
### Workflows
|
||||
### Hauptmerkmale
|
||||
- **Speicher**: Logic Apps benötigen ein externes Azure Storage-Konto, um den Workflow-Zustand, die Ausführungshistorie… zu speichern und müssen sich in derselben Ressourcengruppe wie die Logic App befinden.
|
||||
- **Netzwerk & Sicherheit**: Logic Apps können mit öffentlichem oder privatem Zugriff konfiguriert werden. Standardmäßig ist die App für das Internet geöffnet, kann jedoch mit einem Azure Virtual Network für isolierte Konnektivität integriert werden.
|
||||
- **Application Insights**: Application Performance Management (APM) über Azure Monitor Application Insights kann aktiviert werden, um die Leistung zu verfolgen, Anomalien zu erkennen und Analysen bereitzustellen.
|
||||
- **Zugriffskontrolle**: Logic Apps unterstützen System Managed Identities & User Managed Identities.
|
||||
|
||||
Workflows in Azure Logic Apps sind die zentralen automatisierten Prozesse, die Aktionen über verschiedene Dienste orchestrieren. Ein Workflow beginnt mit einem Trigger—einem Ereignis oder Zeitplan—und führt dann eine Reihe von Aktionen aus, wie das Aufrufen von APIs, das Verarbeiten von Daten oder das Interagieren mit anderen Azure-Diensten. Workflows können visuell mit einem Designer oder über Code (JSON-Definitionen) definiert werden und werden über Befehle wie az logic workflow create, az logic workflow show und az logic workflow update verwaltet. Sie unterstützen auch das Identitätsmanagement (über die Identitätsuntergruppe), um Berechtigungen und Integrationen mit externen Ressourcen sicher zu verwalten.
|
||||
### "Single" Workflows
|
||||
|
||||
Ein **Workflow** ist eine strukturierte Abfolge automatisierter Schritte oder Aufgaben, die einen bestimmten Prozess oder ein Ziel ausführen. Er definiert, wie verschiedene Aktionen, Bedingungen und Entscheidungen interagieren, um ein gewünschtes Ergebnis zu erzielen, wodurch die Abläufe optimiert und der manuelle Aufwand reduziert wird. Workflows können mehrere Systeme integrieren, Ereignisse und Regeln auslösen und gewährleisten Konsistenz und Effizienz in Prozessen.
|
||||
|
||||
Azure Logic Apps bietet die Funktionalität, **einen einzelnen Workflow zu erstellen, ohne dass eine Logic App** selbst erforderlich ist.
|
||||
|
||||
Jeder Workflow hat unterschiedliche **Trigger**. Diese Trigger sind die Schritte, die der Workflow befolgt. Jeder Trigger hat seine Parameter, die je nach Art des Triggers variieren können:
|
||||
- Verbindungsname
|
||||
- **Authentifizierungstyp**, der Access Key, Microsoft Entra ID, integrierte Dienstprinzipal-Authentifizierung und Logic Apps Managed Identity sein kann.
|
||||
|
||||
Trigger haben auch verschiedene Einstellungen:
|
||||
- Schema-Validierung: Stellt sicher, dass eingehende Daten einer vordefinierten Struktur folgen.
|
||||
- Parallelitätskontrolle: Begrenzung der Anzahl paralleler Ausführungen.
|
||||
- Triggerbedingungen: Bedingungen, die erfüllt sein müssen, bevor der Trigger ausgelöst wird.
|
||||
- Netzwerk: Konfiguriert die Chunk-Größe für den Datentransfer und ermöglicht das Unterdrücken von Workflow-Headern in Antworten.
|
||||
- **Sicherheit**: Ermöglicht **sichere Eingaben/Ausgaben, um** sensible Daten in Protokollen und Ausgaben zu verbergen.
|
||||
|
||||
**Einstellungen & API-Verbindungen:**
|
||||
|
||||
Ein Workflow hat verschiedene Einstellungen wie:
|
||||
- Erlaubte eingehende IP-Adressen: Diese Einstellung ermöglicht es Ihnen, einzuschränken, wer Ihre Logic App auslösen oder starten kann. Die Optionen sind Jede IP, Nur andere Logic Apps und Bestimmte IP-Bereiche.
|
||||
- Integrationskonto: Hier können Sie Ihre Logic App mit einem Integrationskonto verknüpfen.
|
||||
- Hohe Durchsatzrate: Diese Einstellung ermöglicht es Ihrer Logic App, mehr Anfragen schnell zu bearbeiten.
|
||||
- Aufbewahrung der Ausführungshistorie: wie lange die Historie der Ausführungen Ihrer Logic App aufbewahrt wird.
|
||||
|
||||
Sie können die verschiedenen API-Verbindungen sehen, die der Workflow hat. Innerhalb jeder dieser Verbindungen haben sie unterschiedliche Eigenschaften und die Möglichkeit, die API-Verbindung zu bearbeiten, wobei der Authentifizierungstyp geändert werden kann.
|
||||
|
||||
**Historie & Versionen:**
|
||||
Es gibt die Option, auf die **Historie** der verschiedenen Ausführungen zuzugreifen, die Einstellungen, Ausgaben, Parameter und den Code anzeigt.
|
||||
|
||||
Es gibt auch die Option, auf verschiedene **Versionen** des Workflows zuzugreifen, wo Sie den Code überprüfen und den aktuellen Workflow mit einer älteren Version davon ändern können.
|
||||
|
||||
**Autorisierung:**
|
||||
Azure Logic Apps unterstützen **Autorisierungsrichtlinien** mit Entra ID, um anforderungsbasierte Trigger zu sichern, indem ein gültiges Zugriffstoken erforderlich ist. Dieses Token muss bestimmte Ansprüche enthalten:
|
||||
- Aussteller (iss), um den Identitätsanbieter zu überprüfen
|
||||
- Zielgruppe (aud), um sicherzustellen, dass das Token für die Logic App bestimmt ist
|
||||
- Subjekt (sub), um den Anrufer zu identifizieren
|
||||
- JWT-ID (JSON Web Token-Identifikator)
|
||||
- Benutzerdefinierter Anspruch
|
||||
|
||||
Wenn eine Anfrage empfangen wird, validiert Logic Apps das Token anhand dieser Ansprüche und erlaubt die Ausführung nur, wenn sie mit der konfigurierten Richtlinie übereinstimmen. Dies kann verwendet werden, um einem anderen Mandanten zu erlauben, den Workflow auszulösen, oder um Trigger von anderen Quellen abzulehnen, zum Beispiel nur den Trigger zuzulassen, wenn er von https://login.microsoftonline.com/ kommt.
|
||||
|
||||
**Zugriffsschlüssel:**
|
||||
Wenn Sie einen anforderungsbasierten Trigger zum ersten Mal speichern, erstellt Logic Apps automatisch einen eindeutigen Endpunkt mit einer SAS-Signatur (erstellt aus dem Zugriffsschlüssel), die die Berechtigung zum Aufrufen des Workflows gewährt. Diese SAS-Signatur ist in der URL des Triggers eingebettet. Dieser Schlüssel kann regeneriert werden und gibt eine neue SAS-Signatur, aber die Schlüssel können nicht aufgelistet werden.
|
||||
|
||||
Die URL, um ihn mit dem Zugriffsschlüssel aufzurufen:
|
||||
|
||||
https://<region>.logic.azure.com:443/workflows/<workflow-id>/triggers/<trigger-name>/paths/invoke?api-version=<api-version>&sp=%2Ftriggers%2F<trigger-name>%2Frun&sv=<version>&sig=<signature>
|
||||
|
||||
### Enumeration
|
||||
|
||||
@@ -102,11 +150,6 @@ az rest \
|
||||
--uri "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Logic/workflows/{workflowName}/versions/{versionName}?api-version=2016-06-01" \
|
||||
--headers "Content-Type=application/json"
|
||||
|
||||
az rest \
|
||||
--method GET \
|
||||
--uri "https://examplelogicapp1994.scm.azurewebsites.net/api/functions/admin/download?includeCsproj=true&includeAppSettings=true" \
|
||||
--headers "Content-Type=application/json"
|
||||
|
||||
# List all Logic Apps in the specified resource group
|
||||
az logicapp list --resource-group <ResourceGroupName>
|
||||
|
||||
@@ -115,6 +158,20 @@ az logicapp show --name <LogicAppName> --resource-group <ResourceGroupName>
|
||||
|
||||
# List all application settings for a specific Logic App
|
||||
az logicapp config appsettings list --name <LogicAppName> --resource-group <ResourceGroupName>
|
||||
|
||||
# Get a Parameters from an Azure App Service using Azure REST API
|
||||
az rest --method GET --url "https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Web/sites/{app-service-name}/hostruntime/admin/vfs/parameters.json?api-version=2018-11-01&relativepath=1"
|
||||
|
||||
# Get webhook-triggered workflows from an Azure Logic App using Azure REST API
|
||||
az rest --method GET --url "https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Web/sites/{logic-app-name}/hostruntime/runtime/webhooks/workflow/api/management/workflows?api-version=2018-11-01"
|
||||
|
||||
# Get workflows from an Azure Logic App using Azure REST API
|
||||
az rest --method GET --url "https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Web/sites/{logic-app-name}/workflows?api-version=2018-11-01"
|
||||
|
||||
# Get details of a specific workflow including its connections and parameters in Azure Logic Apps using Azure REST API
|
||||
az rest --method GET --uri "https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Web/sites/{logic-app-name}/workflows/{workflow-name}?api-version=2018-11-01&\$expand=connections.json,parameters.json"
|
||||
|
||||
|
||||
```
|
||||
{{#endtab }}
|
||||
|
||||
@@ -258,7 +315,7 @@ Get-AzIntegrationAccountSchema -ResourceGroupName <resource-group-name> -Integra
|
||||
{{#endtabs }}
|
||||
|
||||
|
||||
## Privilegieneskalation
|
||||
## Privilegienerhöhung
|
||||
|
||||
Gleich wie bei Logic Apps Privesc:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user