From fa19168b435187fd5fc523b5052ccb710bea2dfc Mon Sep 17 00:00:00 2001 From: Translator Date: Mon, 17 Feb 2025 12:02:19 +0000 Subject: [PATCH] Translated ['src/pentesting-cloud/aws-security/aws-services/aws-organiza --- src/SUMMARY.md | 6 +- .../aws-services/aws-organizations-enum.md | 4 +- .../aws-services/aws-sqs-and-sns-enum.md | 4 +- .../az-persistence/az-queue-persistance.md | 8 +- .../az-queue-post-exploitation.md | 10 +- .../az-servicebus-post-exploitation.md | 23 +- .../az-sql-post-exploitation.md | 47 +++ .../az-container-instances-privesc.md | 64 ---- .../az-queue-privesc.md | 8 +- .../az-servicebus-privesc.md | 277 +++++++++++------- .../az-privilege-escalation/az-sql-privesc.md | 29 +- .../az-services/az-container-instances.md | 45 --- .../az-services/az-queue-enum.md | 8 +- .../az-services/az-servicebus-enum.md | 55 ++-- .../azure-security/az-services/az-sql.md | 120 +++++--- .../gcp-compute-instance.md | 20 +- 16 files changed, 411 insertions(+), 317 deletions(-) delete mode 100644 src/pentesting-cloud/azure-security/az-privilege-escalation/az-container-instances-privesc.md delete mode 100644 src/pentesting-cloud/azure-security/az-services/az-container-instances.md diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 478e28676..c53000a33 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -292,7 +292,7 @@ - [AWS - KMS Privesc](pentesting-cloud/aws-security/aws-privilege-escalation/aws-kms-privesc.md) - [AWS - Lambda Privesc](pentesting-cloud/aws-security/aws-privilege-escalation/aws-lambda-privesc.md) - [AWS - Lightsail Privesc](pentesting-cloud/aws-security/aws-privilege-escalation/aws-lightsail-privesc.md) - - [AWS - Macie Enum](pentesting-cloud/aws-security/aws-privilege-escalation/aws-macie-privesc.md) + - [AWS - Macie Privesc](pentesting-cloud/aws-security/aws-privilege-escalation/aws-macie-privesc.md) - [AWS - Mediapackage Privesc](pentesting-cloud/aws-security/aws-privilege-escalation/aws-mediapackage-privesc.md) - [AWS - MQ Privesc](pentesting-cloud/aws-security/aws-privilege-escalation/aws-mq-privesc.md) - [AWS - MSK Privesc](pentesting-cloud/aws-security/aws-privilege-escalation/aws-msk-privesc.md) @@ -415,7 +415,7 @@ - [Az - Azure App Services](pentesting-cloud/azure-security/az-services/az-app-services.md) - [Az - Cloud Shell](pentesting-cloud/azure-security/az-services/az-cloud-shell.md) - [Az - Container Registry](pentesting-cloud/azure-security/az-services/az-container-registry.md) - - [Az - Container Instances](pentesting-cloud/azure-security/az-services/az-container-instances.md) + - [Az - Container Instances, Apps & Jobs](pentesting-cloud/azure-security/az-services/az-container-instances-apps-jobs.md) - [Az - CosmosDB](pentesting-cloud/azure-security/az-services/az-cosmosDB.md) - [Az - Intune](pentesting-cloud/azure-security/az-services/intune.md) - [Az - File Shares](pentesting-cloud/azure-security/az-services/az-file-shares.md) @@ -470,7 +470,7 @@ - [Az - App Services Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-app-services-privesc.md) - [Az - Automation Accounts Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-automation-accounts-privesc.md) - [Az - Container Registry Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-container-registry-privesc.md) - - [Az - Container Instances Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-container-instances-privesc.md) + - [Az - Container Instances, Apps & Jobs Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-container-instances-apps-jobs-privesc.md) - [Az - CosmosDB Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-cosmosDB-privesc.md) - [Az - EntraID Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-entraid-privesc/README.md) - [Az - Conditional Access Policies & MFA Bypass](pentesting-cloud/azure-security/az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md) diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-organizations-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-organizations-enum.md index 24644317a..45a60d391 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-organizations-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-organizations-enum.md @@ -10,7 +10,7 @@ Wichtige Punkte: - **Erstellung neuer Konten**: AWS Organizations ermöglicht die Erstellung neuer AWS-Konten ohne zusätzliche Gebühren. - **Ressourcenzuweisung**: Es vereinfacht den Prozess der Zuweisung von Ressourcen über die Konten hinweg. -- **Kontengruppierung**: Konten können zusammen gruppiert werden, was das Management effizienter macht. +- **Kontengruppierung**: Konten können zusammengefasst werden, was das Management effizienter macht. - **Governance-Richtlinien**: Richtlinien können auf Konten oder Gruppen von Konten angewendet werden, um Compliance und Governance in der gesamten Organisation sicherzustellen. Weitere Informationen finden Sie unter: @@ -40,6 +40,6 @@ aws iam get-account-summary ``` ## Referenzen -- https://aws.amazon.com/organizations/ +- [https://aws.amazon.com/organizations/](https://aws.amazon.com/organizations/) {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-sqs-and-sns-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-sqs-and-sns-enum.md index 5cf9eb30c..1c1eb6a3e 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-sqs-and-sns-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-sqs-and-sns-enum.md @@ -18,7 +18,7 @@ aws sqs receive-message --queue-url aws sqs send-message --queue-url --message-body ``` > [!CAUTION] -> Stellen Sie außerdem sicher, dass Sie die richtige Region in **`--region`** angeben, auch wenn die `--queue-url` die Region enthält, da Sie sonst einen Fehler erhalten, der darauf hinweist, dass Sie keinen Zugriff haben, das Problem jedoch die Region ist. +> Stellen Sie außerdem sicher, dass Sie die richtige Region in **`--region`** angeben, auch wenn die `--queue-url` die Region enthält, da Sie sonst einen Fehler erhalten, der darauf hinweist, dass Sie keinen Zugriff haben, aber das Problem die Region ist. #### Unauthenticated Access @@ -46,6 +46,6 @@ aws sqs send-message --queue-url --message-body ## References -- https://docs.aws.amazon.com/cdk/api/v2/python/aws\_cdk.aws\_sqs/README.html +- [https://docs.aws.amazon.com/cdk/api/v2/python/aws\_cdk.aws\_sqs/README.html](https://docs.aws.amazon.com/cdk/api/v2/python/aws\_cdk.aws\_sqs/README.html) {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-persistence/az-queue-persistance.md b/src/pentesting-cloud/azure-security/az-persistence/az-queue-persistance.md index facf0bb4e..6a951761b 100644 --- a/src/pentesting-cloud/azure-security/az-persistence/az-queue-persistance.md +++ b/src/pentesting-cloud/azure-security/az-persistence/az-queue-persistance.md @@ -12,7 +12,7 @@ Für weitere Informationen siehe: ### Aktionen: `Microsoft.Storage/storageAccounts/queueServices/queues/write` -Diese Berechtigung ermöglicht es einem Angreifer, Warteschlangen und deren Eigenschaften innerhalb des Speicherkontos zu erstellen oder zu ändern. Sie kann verwendet werden, um unbefugte Warteschlangen zu erstellen, Metadaten zu ändern oder Zugriffssteuerlisten (ACLs) zu ändern, um den Zugriff zu gewähren oder einzuschränken. Diese Fähigkeit könnte Arbeitsabläufe stören, bösartige Daten injizieren, sensible Informationen exfiltrieren oder Warteschlangeneinstellungen manipulieren, um weitere Angriffe zu ermöglichen. +Diese Berechtigung ermöglicht es einem Angreifer, Warteschlangen und deren Eigenschaften innerhalb des Speicherkontos zu erstellen oder zu ändern. Sie kann verwendet werden, um unbefugte Warteschlangen zu erstellen, Metadaten zu ändern oder Zugriffssteuerungslisten (ACLs) zu ändern, um den Zugriff zu gewähren oder einzuschränken. Diese Fähigkeit könnte Arbeitsabläufe stören, bösartige Daten injizieren, sensible Informationen exfiltrieren oder Warteschlangeneinstellungen manipulieren, um weitere Angriffe zu ermöglichen. ```bash az storage queue create --name --account-name @@ -22,8 +22,8 @@ az storage queue policy set --name --permissions rwd --expiry 2024- ``` ## Referenzen -- https://learn.microsoft.com/en-us/azure/storage/queues/storage-powershell-how-to-use-queues -- https://learn.microsoft.com/en-us/rest/api/storageservices/queue-service-rest-api -- https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes +- [https://learn.microsoft.com/en-us/azure/storage/queues/storage-powershell-how-to-use-queues](https://learn.microsoft.com/en-us/azure/storage/queues/storage-powershell-how-to-use-queues) +- [https://learn.microsoft.com/en-us/rest/api/storageservices/queue-service-rest-api](https://learn.microsoft.com/en-us/rest/api/storageservices/queue-service-rest-api) +- [https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes](https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes) {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-post-exploitation/az-queue-post-exploitation.md b/src/pentesting-cloud/azure-security/az-post-exploitation/az-queue-post-exploitation.md index 9884335f1..8ed52d9c7 100644 --- a/src/pentesting-cloud/azure-security/az-post-exploitation/az-queue-post-exploitation.md +++ b/src/pentesting-cloud/azure-security/az-post-exploitation/az-queue-post-exploitation.md @@ -20,7 +20,7 @@ az storage message peek --queue-name --account-name --account-name ``` @@ -32,7 +32,7 @@ az storage message put --queue-name --content "Injected malicious m ``` ### DataActions: `Microsoft.Storage/storageAccounts/queueServices/queues/messages/write` -Diese Berechtigung ermöglicht es einem Angreifer, neue Nachrichten hinzuzufügen oder vorhandene in einer Azure Storage Queue zu aktualisieren. Dadurch könnten sie schädliche Inhalte einfügen oder vorhandene Nachrichten ändern, was möglicherweise Anwendungen irreführen oder unerwünschte Verhaltensweisen in Systemen verursachen könnte, die auf die Queue angewiesen sind. +Diese Berechtigung ermöglicht es einem Angreifer, neue Nachrichten hinzuzufügen oder vorhandene in einer Azure Storage Queue zu aktualisieren. Durch die Nutzung dieser Berechtigung könnten sie schädliche Inhalte einfügen oder bestehende Nachrichten ändern, was möglicherweise Anwendungen irreführen oder unerwünschte Verhaltensweisen in Systemen verursachen könnte, die auf die Queue angewiesen sind. ```bash az storage message put --queue-name --content "Injected malicious message" --account-name @@ -68,8 +68,8 @@ az storage queue policy set --name --permissions rwd --expiry 2024- ``` ## Referenzen -- https://learn.microsoft.com/en-us/azure/storage/queues/storage-powershell-how-to-use-queues -- https://learn.microsoft.com/en-us/rest/api/storageservices/queue-service-rest-api -- https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes +- [https://learn.microsoft.com/en-us/azure/storage/queues/storage-powershell-how-to-use-queues](https://learn.microsoft.com/en-us/azure/storage/queues/storage-powershell-how-to-use-queues) +- [https://learn.microsoft.com/en-us/rest/api/storageservices/queue-service-rest-api](https://learn.microsoft.com/en-us/rest/api/storageservices/queue-service-rest-api) +- [https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes](https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes) {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-post-exploitation/az-servicebus-post-exploitation.md b/src/pentesting-cloud/azure-security/az-post-exploitation/az-servicebus-post-exploitation.md index 3ddfb5152..5e996ab0f 100644 --- a/src/pentesting-cloud/azure-security/az-post-exploitation/az-servicebus-post-exploitation.md +++ b/src/pentesting-cloud/azure-security/az-post-exploitation/az-servicebus-post-exploitation.md @@ -34,16 +34,9 @@ Ein Angreifer mit dieser Berechtigung kann ein Azure Service Bus-Abonnement lös ```bash az servicebus topic subscription delete --resource-group --namespace-name --topic-name --name ``` -### Aktionen: `Microsoft.ServiceBus/namespaces/write` & `Microsoft.ServiceBus/namespaces/read` - -Ein Angreifer mit Berechtigungen zum Erstellen oder Ändern von Azure Service Bus-Namensräumen kann dies ausnutzen, um den Betrieb zu stören, unbefugte Ressourcen bereitzustellen oder sensible Daten offenzulegen. Sie können kritische Konfigurationen ändern, wie z.B. den öffentlichen Netzwerkzugang zu aktivieren, die Verschlüsselungseinstellungen herabzusetzen oder SKUs zu ändern, um die Leistung zu verschlechtern oder die Kosten zu erhöhen. Darüber hinaus könnten sie die lokale Authentifizierung deaktivieren, Replikationsstandorte manipulieren oder TLS-Versionen anpassen, um die Sicherheitskontrollen zu schwächen, was eine signifikante Risiko der Fehlkonfiguration von Namensräumen nach der Ausnutzung darstellt. -```bash -az servicebus namespace create --resource-group --name --location -az servicebus namespace update --resource-group --name --tags -``` ### Aktionen: `Microsoft.ServiceBus/namespaces/queues/write` (`Microsoft.ServiceBus/namespaces/queues/read`) -Ein Angreifer mit Berechtigungen zum Erstellen oder Ändern von Azure Service Bus-Warteschlangen (um die Warteschlange zu ändern, benötigen Sie auch die Aktion: `Microsoft.ServiceBus/namespaces/queues/read`) kann dies ausnutzen, um Daten abzufangen, Arbeitsabläufe zu stören oder unbefugten Zugriff zu ermöglichen. Sie können kritische Konfigurationen ändern, wie das Weiterleiten von Nachrichten an bösartige Endpunkte, das Anpassen der Nachrichten-TTL, um Daten unangemessen zu behalten oder zu löschen, oder das Aktivieren von Dead-Lettering, um die Fehlerbehandlung zu stören. Darüber hinaus könnten sie Warteschlangen Größen, Sperrdauern oder Status manipulieren, um die Funktionalität des Dienstes zu stören oder der Erkennung zu entkommen, was dies zu einem erheblichen Risiko nach der Ausnutzung macht. +Ein Angreifer mit Berechtigungen zum Erstellen oder Ändern von Azure Service Bus-Warteschlangen (um die Warteschlange zu ändern, benötigen Sie auch die Aktion: `Microsoft.ServiceBus/namespaces/queues/read`) kann dies ausnutzen, um Daten abzufangen, Arbeitsabläufe zu stören oder unbefugten Zugriff zu ermöglichen. Sie können kritische Konfigurationen ändern, wie das Weiterleiten von Nachrichten an bösartige Endpunkte, das Anpassen der Nachrichten-TTL, um Daten unangemessen zu behalten oder zu löschen, oder das Aktivieren von Dead-Lettering, um die Fehlerbehandlung zu stören. Darüber hinaus könnten sie Warteschlangengrößen, Sperrdauern oder Status manipulieren, um die Funktionalität des Dienstes zu stören oder der Erkennung zu entkommen, was dies zu einem erheblichen Risiko nach der Ausnutzung macht. ```bash az servicebus queue create --resource-group --namespace-name --name az servicebus queue update --resource-group --namespace-name --name @@ -72,12 +65,12 @@ Schau dir das hier an: ## Referenzen -- https://learn.microsoft.com/en-us/azure/storage/queues/storage-powershell-how-to-use-queues -- https://learn.microsoft.com/en-us/rest/api/storageservices/queue-service-rest-api -- https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes -- https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-python-how-to-use-topics-subscriptions?tabs=passwordless -- https://learn.microsoft.com/en-us/azure/role-based-access-control/permissions/integration#microsoftservicebus -- https://learn.microsoft.com/en-us/cli/azure/servicebus/namespace?view=azure-cli-latest -- https://learn.microsoft.com/en-us/cli/azure/servicebus/queue?view=azure-cli-latest +- [https://learn.microsoft.com/en-us/azure/storage/queues/storage-powershell-how-to-use-queues](https://learn.microsoft.com/en-us/azure/storage/queues/storage-powershell-how-to-use-queues) +- [https://learn.microsoft.com/en-us/rest/api/storageservices/queue-service-rest-api](https://learn.microsoft.com/en-us/rest/api/storageservices/queue-service-rest-api) +- [https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes](https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes) +- [https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-python-how-to-use-topics-subscriptions?tabs=passwordless](https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-python-how-to-use-topics-subscriptions?tabs=passwordless) +- [https://learn.microsoft.com/en-us/azure/role-based-access-control/permissions/integration#microsoftservicebus](https://learn.microsoft.com/en-us/azure/role-based-access-control/permissions/integration#microsoftservicebus) +- [https://learn.microsoft.com/en-us/cli/azure/servicebus/namespace?view=azure-cli-latest](https://learn.microsoft.com/en-us/cli/azure/servicebus/namespace?view=azure-cli-latest) +- [https://learn.microsoft.com/en-us/cli/azure/servicebus/queue?view=azure-cli-latest](https://learn.microsoft.com/en-us/cli/azure/servicebus/queue?view=azure-cli-latest) {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-post-exploitation/az-sql-post-exploitation.md b/src/pentesting-cloud/azure-security/az-post-exploitation/az-sql-post-exploitation.md index a2ce14c4e..0eba3de1e 100644 --- a/src/pentesting-cloud/azure-security/az-post-exploitation/az-sql-post-exploitation.md +++ b/src/pentesting-cloud/azure-security/az-post-exploitation/az-sql-post-exploitation.md @@ -19,6 +19,16 @@ az sql db create --resource-group --server --name # Update Database az sql db update --resource-group --server --name --max-size +``` +Mit diesen Berechtigungen (`Microsoft.Sql/servers/read` && `Microsoft.Sql/servers/databases/write`) können Sie eine gelöschte Datenbank wiederherstellen: +```bash +az sql db restore \ +--dest-name \ +--name \ +--resource-group \ +--server \ +--deleted-time "" + ``` ### `Microsoft.Sql/servers/elasticPools/write` && `Microsoft.Sql/servers/elasticPools/read` @@ -87,4 +97,41 @@ az sql db import --admin-user \ --storage-key \ --storage-uri `https://.blob.core.windows.net/bacpac-container/MyDatabase.bacpac` ``` +### `Microsoft.Sql/servers/connectionPolicies/write` && `Microsoft.Sql/servers/connectionPolicies/read` + +Mit diesen Berechtigungen kann ein Benutzer die Verbindungsrichtlinien eines Azure SQL-Servers ändern und abrufen. Diese Berechtigungen ermöglichen es jemandem, zu ändern, wie Clients mit dem Server verbinden – zwischen Methoden wie Redirect oder Proxy zu wählen – was ausgenutzt werden könnte, um die Sicherheit zu schwächen, den Datenverkehr umzuleiten oder sensible Daten abzufangen, wenn sie falsch konfiguriert sind. +```bash +az sql server conn-policy update \ +--resource-group \ +--server \ +--connection-policy +``` +### `Microsoft.Sql/servers/keys/write` && `Microsoft.Sql/servers/keys/read` + +Mit diesen Berechtigungen kann ein Benutzer Verschlüsselungsschlüssel, die mit einem Azure SQL Server verbunden sind, aktualisieren und abrufen. Diese Schlüssel werden häufig verwendet, um sensible Daten durch Verschlüsselung zu sichern, sodass deren Manipulation die Datensicherheit gefährden könnte, indem unbefugte Entschlüsselung oder Änderungen der Schlüsselrotation ermöglicht werden. +```bash +az sql server key create \ +--resource-group MyResourceGroup \ +--server MyServer \ +--kid "https://mykeyvault.vault.azure.net/keys/mykey/1234567890abcdef +``` +### `Microsoft.Sql/servers/databases/ledgerDigestUploads/disable/action`, `Microsoft.Sql/locations/ledgerDigestUploadsAzureAsyncOperation/read`, `Microsoft.Sql/locations/ledgerDigestUploadsOperationResults/read` + +Diese Berechtigung ermöglicht das Deaktivieren von Ledger Digest für eine Azure SQL-Datenbank, wodurch das regelmäßige Hochladen von kryptografischen Digest-Datensätzen in den Azure Blob Storage gestoppt wird, das die Integrität der Daten überprüft. +```bash +az sql db ledger-digest-uploads disable \ +--name ledgerDB \ +--resource-group myResourceGroup \ +--server my-sql-server +``` +### `Microsoft.Sql/servers/databases/transparentDataEncryption/write`, `Microsoft.Sql/locations/transparentDataEncryptionAzureAsyncOperation/read`, `Microsoft.Sql/servers/databases/transparentDataEncryption/read` + +Diese Berechtigung ermöglicht einem autorisierten Benutzer oder Angreifer, die Einstellungen zur Transparent Data Encryption (TDE) in einer Azure SQL-Datenbank zu aktivieren, zu deaktivieren oder zu ändern, was die Datensicherheit durch die Änderung der Verschlüsselungskonfigurationen potenziell beeinträchtigen kann. +```bash +az sql db tde set \ +--database \ +--resource-group \ +--server \ +--status +``` {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-container-instances-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-container-instances-privesc.md deleted file mode 100644 index ad0030f1a..000000000 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-container-instances-privesc.md +++ /dev/null @@ -1,64 +0,0 @@ -# Az - Azure Container Instances Privesc - -{{#include ../../../banners/hacktricks-training.md}} - -## Azure Container Instances - -Für weitere Informationen siehe: - -{{#ref}} -../az-services/az-container-instances.md -{{#endref}} - -### `Microsoft.ContainerInstance/containerGroups/read`, `Microsoft.ContainerInstance/containerGroups/containers/exec/action` - -Diese Berechtigungen ermöglichen es dem Benutzer, **einen Befehl** in einem laufenden Container **auszuführen**. Dies kann verwendet werden, um **Berechtigungen** im Container zu **eskalieren**, wenn eine verwaltete Identität angehängt ist. Natürlich ist es auch möglich, auf den Quellcode und andere sensible Informationen zuzugreifen, die im Container gespeichert sind. - -Um ein `ls` auszuführen und die Ausgabe zu erhalten, ist es so einfach wie: -```bash -az container exec --name --resource-group --exec-command 'ls' -``` -Es ist auch möglich, die **Ausgabe** des Containers mit folgendem Befehl zu **lesen**: -```bash -az container attach --name --resource-group -``` -Oder erhalten Sie die Protokolle mit: -```bash -az container logs --name --resource-group -``` -### `Microsoft.ContainerInstance/containerGroups/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action` - -Diese Berechtigungen ermöglichen es, **eine benutzerdefinierte verwaltete Identität** an eine Containergruppe anzuhängen. Dies ist sehr nützlich, um Privilegien im Container zu eskalieren. - -Um eine benutzerdefinierte verwaltete Identität an eine Containergruppe anzuhängen: -```bash -az rest \ ---method PATCH \ ---url "/subscriptions//resourceGroups//providers/Microsoft.ContainerInstance/containerGroups/?api-version=2021-09-01" \ ---body '{ -"identity": { -"type": "UserAssigned", -"userAssignedIdentities": { -"/subscriptions//resourceGroups//providers/Microsoft.ManagedIdentity/userAssignedIdentities/": {} -} -} -}' \ ---headers "Content-Type=application/json" -``` -### `Microsoft.Resources/subscriptions/resourcegroups/read`, `Microsoft.ContainerInstance/containerGroups/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action` - -Diese Berechtigungen ermöglichen es, **eine Containergruppe zu erstellen oder zu aktualisieren**, die mit einer **benutzerverwalteten Identität** verknüpft ist. Dies ist sehr nützlich, um Privilegien im Container zu eskalieren. -```bash -az container create \ ---resource-group > \ ---name nginx2 \ ---image mcr.microsoft.com/oss/nginx/nginx:1.9.15-alpine \ ---assign-identity "/subscriptions//resourceGroups//providers/Microsoft.ManagedIdentity/userAssignedIdentities/" \ ---restart-policy OnFailure \ ---os-type Linux \ ---cpu 1 \ ---memory 1.0 -``` -Darüber hinaus ist es auch möglich, eine vorhandene Containergruppe zu aktualisieren, indem beispielsweise das **`--command-line` Argument** mit einer Reverse-Shell hinzugefügt wird. - -{{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-queue-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-queue-privesc.md index 75686bfe2..7722b8040 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-queue-privesc.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-queue-privesc.md @@ -20,7 +20,7 @@ az storage message peek --queue-name --account-name --account-name ``` @@ -56,8 +56,8 @@ az storage queue policy set --name --permissions rwd --expiry 2024- ``` ## Referenzen -- https://learn.microsoft.com/en-us/azure/storage/queues/storage-powershell-how-to-use-queues -- https://learn.microsoft.com/en-us/rest/api/storageservices/queue-service-rest-api -- https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes +- [https://learn.microsoft.com/en-us/azure/storage/queues/storage-powershell-how-to-use-queues](https://learn.microsoft.com/en-us/azure/storage/queues/storage-powershell-how-to-use-queues) +- [https://learn.microsoft.com/en-us/rest/api/storageservices/queue-service-rest-api](https://learn.microsoft.com/en-us/rest/api/storageservices/queue-service-rest-api) +- [https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes](https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes) {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-servicebus-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-servicebus-privesc.md index 9a1b36f90..37194b29d 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-servicebus-privesc.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-servicebus-privesc.md @@ -12,9 +12,9 @@ Für weitere Informationen siehe: ### Microsoft.ServiceBus/namespaces/authorizationrules/listKeys/action ODER Microsoft.ServiceBus/namespaces/authorizationrules/regenerateKeys/action -Diese Berechtigungen ermöglichen es Ihnen, die Schlüssel für lokale Autorisierungsregeln innerhalb eines Service Bus-Namensraums abzurufen oder zu regenerieren. Mit diesen Schlüsseln ist es möglich, sich als der Service Bus-Namensraum zu authentifizieren, was es Ihnen ermöglicht, Nachrichten an jede Warteschlange oder jedes Thema zu senden, Nachrichten von jeder Warteschlange oder jedem Abonnement zu empfangen oder potenziell mit dem System auf eine Weise zu interagieren, die den Betrieb stören, gültige Benutzer impersonieren oder schädliche Daten in den Nachrichtenworkflow injizieren könnte. +Diese Berechtigungen ermöglichen es Ihnen, die Schlüssel für lokale Autorisierungsregeln innerhalb eines Service Bus-Namensraums abzurufen oder zu regenerieren. Mit diesen Schlüsseln ist es möglich, sich als der Service Bus-Namensraum zu authentifizieren, was es Ihnen ermöglicht, Nachrichten an jede Warteschlange oder jedes Thema zu senden, Nachrichten von jeder Warteschlange oder jedem Abonnement zu empfangen oder potenziell mit dem System auf eine Weise zu interagieren, die den Betrieb stören, gültige Benutzer impersonieren oder schädliche Daten in den Messaging-Workflow injizieren könnte. -Beachten Sie, dass die **`RootManageSharedAccessKey`-Regel standardmäßig die volle Kontrolle** über den Service Bus-Namensraum hat und von der `az`-CLI verwendet wird. Es können jedoch auch andere Regeln mit anderen Schlüsselwerten existieren. +Beachten Sie, dass standardmäßig die **`RootManageSharedAccessKey`-Regel vollständige Kontrolle** über den Service Bus-Namensraum hat und von der `az`-CLI verwendet wird. Es können jedoch auch andere Regeln mit anderen Schlüsselwerten existieren. ```bash # List keys az servicebus namespace authorization-rule keys list --resource-group --namespace-name --authorization-rule-name RootManageSharedAccessKey [--authorization-rule-name RootManageSharedAccessKey] @@ -29,7 +29,7 @@ Mit dieser Berechtigung ist es möglich, **eine neue Autorisierungsregel** mit a az servicebus namespace authorization-rule create --authorization-rule-name "myRule" --namespace-name mynamespacespdemo --resource-group Resource_Group_1 --rights Manage Listen Send ``` >[!WARNING] ->Dieser Befehl gibt keine Schlüssel zurück, daher müssen Sie diese mit den vorherigen Befehlen (und Berechtigungen) abrufen, um die Berechtigungen zu eskalieren. +>Dieser Befehl gibt keine Schlüssel zurück, daher müssen Sie diese mit den vorherigen Befehlen (und Berechtigungen) abrufen, um die Berechtigungen zu erhöhen. Darüber hinaus ist es mit diesem Befehl (und `Microsoft.ServiceBus/namespaces/authorizationRules/read`) möglich, wenn Sie diese Aktion über die Azure CLI ausführen, eine vorhandene Autorisierungsregel zu aktualisieren und ihr mehr Berechtigungen zu geben (falls sie einige fehlten) mit dem folgenden Befehl: ```bash @@ -41,7 +41,7 @@ az servicebus namespace authorization-rule update \ ``` ### Microsoft.ServiceBus/namespaces/[queues|topics]/authorizationRules/ListKeys/action ODER Microsoft.ServiceBus/namespaces/[queues|topics]/authorizationRules/regenerateKeys/action -Spezifische Themen und Warteschlangen innerhalb eines Service Bus-Namensraums können eigene Autorisierungsregeln haben, die verwendet werden können, um den Zugriff auf die Entität zu steuern. Durch das Vorhandensein dieser Berechtigungen können Sie **die Schlüssel für diese lokalen Autorisierungsregeln abrufen oder regenerieren**, wodurch Sie sich als die Entität authentifizieren und potenziell Nachrichten senden oder empfangen, Abonnements verwalten oder mit dem System auf eine Weise interagieren können, die den Betrieb stören, gültige Benutzer impersonieren oder schädliche Daten in den Messaging-Workflow injizieren könnte. +Spezifische Themen und Warteschlangen innerhalb eines Service Bus-Namensraums können eigene Autorisierungsregeln haben, die verwendet werden können, um den Zugriff auf die Entität zu steuern. Durch das Vorhandensein dieser Berechtigungen können Sie **die Schlüssel für diese lokalen Autorisierungsregeln abrufen oder regenerieren**, wodurch Sie sich als die Entität authentifizieren und potenziell Nachrichten senden oder empfangen, Abonnements verwalten oder mit dem System auf eine Weise interagieren können, die den Betrieb stören, gültige Benutzer impersonieren oder bösartige Daten in den Nachrichtenworkflow injizieren könnte. ```bash # List keys (topics) az servicebus topic authorization-rule keys list --resource-group --namespace-name --topic-name --name @@ -84,127 +84,202 @@ az servicebus namespace update --disable-local-auth false -n -- ``` ### Nachrichten mit Schlüsseln senden (Microsoft.ServiceBus/namespaces/authorizationRules/listkeys/action ODER Microsoft.ServiceBus/namespaces/authorizationRules/regenerateKeys/action) -Sie können die `PrimaryConnectionString` abrufen, die als Anmeldeinformation für den Service Bus-Namespace fungiert. Mit dieser Verbindungszeichenfolge können Sie sich vollständig als der Service Bus-Namespace authentifizieren, was es Ihnen ermöglicht, Nachrichten an jede Warteschlange oder jedes Thema zu senden und potenziell mit dem System auf eine Weise zu interagieren, die den Betrieb stören, gültige Benutzer impersonieren oder bösartige Daten in den Nachrichtenworkflow injizieren könnte. +Sie können die `PrimaryConnectionString` abrufen, die als Anmeldeinformation für den Service Bus-Namespace fungiert. Mit dieser Verbindungszeichenfolge können Sie sich vollständig als der Service Bus-Namespace authentifizieren, was es Ihnen ermöglicht, Nachrichten an jede Warteschlange oder jedes Thema zu senden und potenziell mit dem System auf eine Weise zu interagieren, die den Betrieb stören, gültige Benutzer impersonieren oder bösartige Daten in den Nachrichtenworkflow injizieren könnte. Diese Methode funktioniert, wenn `--disable-local-auth` auf false gesetzt ist. ```python -#You need to install the following libraries -#pip install azure-servicebus -#pip install aiohttp -#pip install azure-identity - import asyncio from azure.servicebus.aio import ServiceBusClient from azure.servicebus import ServiceBusMessage -# Constants NAMESPACE_CONNECTION_STR = "" -TOPIC_NAME = "" +TOPIC_OR_QUEUE_NAME = "" -# Function to send a single message to a Service Bus topic -async def send_individual_message(publisher): -# Prepare a single message with updated content -single_message = ServiceBusMessage("Hacktricks-Training: Single Item") -# Send the message to the topic -await publisher.send_messages(single_message) -print("Sent a single message containing 'Hacktricks-Training'") +async def send_message(): +async with ServiceBusClient.from_connection_string(NAMESPACE_CONNECTION_STR) as client: +async with client.get_topic_sender(topic_name=TOPIC_OR_QUEUE_NAME) as sender: +await sender.send_messages(ServiceBusMessage("Hacktricks-Training: Single Item")) +print("Sent message") -# Function to send multiple messages to a Service Bus topic -async def send_multiple_messages(publisher): -# Generate a collection of messages with updated content -message_list = [ServiceBusMessage(f"Hacktricks-Training: Item {i+1} in list") for i in range(5)] -# Send the entire collection of messages to the topic -await publisher.send_messages(message_list) -print("Sent a list of 5 messages containing 'Hacktricks-Training'") +asyncio.run(send_message()) +``` +Zusätzlich können Sie Nachrichten mit az rest senden. In diesem Fall müssen Sie ein SAS-Token generieren, um es zu verwenden. +```python +import time, urllib.parse, hmac, hashlib, base64 -# Function to send a grouped batch of messages to a Service Bus topic -async def send_grouped_messages(publisher): -# Send a grouped batch of messages with updated content -async with publisher: -grouped_message_batch = await publisher.create_message_batch() -for i in range(10): -try: -# Append a message to the batch with updated content -grouped_message_batch.add_message(ServiceBusMessage(f"Hacktricks-Training: Item {i+1}")) -except ValueError: -# If batch reaches its size limit, handle by creating another batch -break -# Dispatch the batch of messages to the topic -await publisher.send_messages(grouped_message_batch) -print("Sent a batch of 10 messages containing 'Hacktricks-Training'") +def generate_sas_token(uri, key_name, key, expiry_in_seconds=3600): +expiry = int(time.time() + expiry_in_seconds) +string_to_sign = urllib.parse.quote_plus(uri) + "\n" + str(expiry) +signed_hmac_sha256 = hmac.new(key.encode('utf-8'), string_to_sign.encode('utf-8'), hashlib.sha256).digest() +signature = urllib.parse.quote_plus(base64.b64encode(signed_hmac_sha256)) +token = f"SharedAccessSignature sr={urllib.parse.quote_plus(uri)}&sig={signature}&se={expiry}&skn={key_name}" +return token -# Main function to execute all tasks -async def execute(): -# Instantiate the Service Bus client with the connection string -async with ServiceBusClient.from_connection_string( -conn_str=NAMESPACE_CONNECTION_STR, -logging_enable=True) as sb_client: -# Create a topic sender for dispatching messages to the topic -publisher = sb_client.get_topic_sender(topic_name=TOPIC_NAME) -async with publisher: -# Send a single message -await send_individual_message(publisher) -# Send multiple messages -await send_multiple_messages(publisher) -# Send a batch of messages -await send_grouped_messages(publisher) +# Replace these with your actual values +resource_uri = "https://.servicebus.windows.net/" +key_name = "" +primary_key = "" -# Run the asynchronous execution -asyncio.run(execute()) -print("Messages Sent") -print("----------------------------") +sas_token = generate_sas_token(resource_uri, key_name, primary_key) +print(sas_token) +``` + +```bash +az rest --method post \ +--uri "https://.servicebus.windows.net//messages" \ +--headers "Content-Type=application/atom+xml;type=entry;charset=utf-8" "Authorization=SharedAccessSignature sr=https%3A%2F%2F.servicebus.windows.net%2F&sig=&se=&skn=" \ +--body "" ``` -### Empfangen mit Schlüsseln (Microsoft.ServiceBus/namespaces/authorizationRules/listkeys/action ODER Microsoft.ServiceBus/namespaces/authorizationRules/regenerateKeys/action) +### Mit Schlüsseln empfangen (Microsoft.ServiceBus/namespaces/authorizationRules/listkeys/action ODER Microsoft.ServiceBus/namespaces/authorizationRules/regenerateKeys/action) -Sie können die PrimaryConnectionString abrufen, die als Anmeldeinformation für den Service Bus-Namespace dient. Mit dieser Verbindungszeichenfolge können Sie Nachrichten aus jeder Warteschlange oder jedem Abonnement innerhalb des Namensraums empfangen, was den Zugriff auf potenziell sensible oder kritische Daten ermöglicht, Datenexfiltration ermöglicht oder die Nachrichtenverarbeitung und Anwendungsabläufe stört. +Sie können die PrimaryConnectionString abrufen, die als Anmeldeinformation für den Service Bus-Namespace dient. Mit dieser Verbindungszeichenfolge können Sie Nachrichten aus jeder Warteschlange oder jedem Abonnement innerhalb des Namensraums empfangen, was den Zugriff auf potenziell sensible oder kritische Daten ermöglicht, Datenexfiltration ermöglicht oder die Nachrichtenverarbeitung und Anwendungsabläufe stört. Diese Methode funktioniert, wenn `--disable-local-auth` auf false gesetzt ist. ```python -#You need to install the following libraries -#pip install azure-servicebus -#pip install aiohttp -#pip install azure-identity - import asyncio from azure.servicebus.aio import ServiceBusClient -NAMESPACE_CONNECTION_STR = "" -TOPIC_NAME = "" -SUBSCRIPTION_NAME = "" #Topic Subscription +CONN_STR = "" +QUEUE = "" -# Function to receive and process messages from a Service Bus subscription -async def receive_and_process_messages(): -# Create a Service Bus client using the connection string -async with ServiceBusClient.from_connection_string( -conn_str=NAMESPACE_CONNECTION_STR, -logging_enable=True) as servicebus_client: +# For topics/subscriptions, you would use: +# TOPIC = "" +# SUBSCRIPTION = "" -# Get the Subscription Receiver object for the specified topic and subscription -receiver = servicebus_client.get_subscription_receiver( -topic_name=TOPIC_NAME, -subscription_name=SUBSCRIPTION_NAME, -max_wait_time=5 -) - -async with receiver: -# Receive messages with a defined maximum wait time and count -received_msgs = await receiver.receive_messages( -max_wait_time=5, -max_message_count=20 -) -for msg in received_msgs: -print("Received: " + str(msg)) -# Complete the message to remove it from the subscription +async def receive(): +async with ServiceBusClient.from_connection_string(CONN_STR) as client: +# For a queue receiver: +async with client.get_queue_receiver(queue_name=QUEUE, max_wait_time=5) as receiver: +msgs = await receiver.receive_messages(max_wait_time=5, max_message_count=20) +for msg in msgs: +print("Received:", msg) await receiver.complete_message(msg) -# Run the asynchronous message processing function -asyncio.run(receive_and_process_messages()) -print("Message Receiving Completed") -print("----------------------------") +# For a topic/subscription receiver (commented out): +# async with client.get_subscription_receiver(topic_name=TOPIC, subscription_name=SUBSCRIPTION, max_wait_time=5) as receiver: +# msgs = await receiver.receive_messages(max_wait_time=5, max_message_count=20) +# for msg in msgs: +# print("Received:", msg) +# await receiver.complete_message(msg) + +asyncio.run(receive()) +print("Done receiving messages") +``` +Zusätzlich können Sie Nachrichten mit az rest senden. In diesem Fall müssen Sie ein SAS-Token generieren, um es zu verwenden. +```python +import time, urllib.parse, hmac, hashlib, base64 + +def generate_sas_token(uri, key_name, key, expiry_in_seconds=3600): +expiry = int(time.time() + expiry_in_seconds) +string_to_sign = urllib.parse.quote_plus(uri) + "\n" + str(expiry) +signature = urllib.parse.quote_plus(base64.b64encode( +hmac.new(key.encode('utf-8'), string_to_sign.encode('utf-8'), hashlib.sha256).digest() +)) +token = f"SharedAccessSignature sr={urllib.parse.quote_plus(uri)}&sig={signature}&se={expiry}&skn={key_name}" +return token + +# Example usage: +resource_uri = "https://.servicebus.windows.net/queue" # For queue +# resource_uri = "https://.servicebus.windows.net//subscriptions/" # For topic subscription +sas_token = generate_sas_token(resource_uri, "", "") +print(sas_token) + +``` +Für eine Warteschlange können Sie die Nachricht abrufen oder einen Blick darauf werfen (das Abrufen von Nachrichten würde sie entfernen, während das Blicken dies nicht tut): +```bash +#Get a message +az rest --method post \ +--uri "https://.servicebus.windows.net//messages/head?timeout=60" \ +--headers "Content-Type=application/atom+xml;type=entry;charset=utf-8" "Authorization=SharedAccessSignature sr=&sig=&se=&skn=" + +#Peek a message +az rest --method get \ +--uri "https://.servicebus.windows.net//messages/head?peekonly=true&timeout=60" \ +--headers "Authorization=SharedAccessSignature sr=&sig=&se=&skn=" + +#You can select the meesage changing the field PreviousSequenceNumber +az rest --method get \ +--uri "https://.servicebus.windows.net//messages?timeout=60&PreviousSequenceNumber=&api-version=2017-04" \ +--headers "Authorization=SharedAccessSignature sr=&sig=&se=&skn=" +``` +Bitte geben Sie den Text an, den Sie übersetzen möchten. +```bash +#Get a message +az rest --method post \ +--uri "https://.servicebus.windows.net//subscriptions//messages/head?timeout=60" \ +--headers "Content-Type=application/atom+xml;type=entry;charset=utf-8" "Authorization=SharedAccessSignature sr=&sig=&se=&skn=" + +#Peek a message +az rest --method get \ +--uri "https://.servicebus.windows.net//subscriptions//messages/head?timeout=60&api-version=2017-04" \ +--headers "Authorization=SharedAccessSignature sr=&sig=&se=&skn=" + +#You can select the meesage changing the field PreviousSequenceNumber +az rest --method get \ +--uri "https://.servicebus.windows.net//subscriptions//messages?timeout=60&PreviousSequenceNumber=&api-version=2017-04" \ +--headers "Authorization=SharedAccessSignature sr=&sig=&se=&skn=" +``` +### Nachrichten senden. DataActions: `Microsoft.ServiceBus/namespaces/messages/send/action` + +Sie können diese Berechtigungen verwenden, um Nachrichten zu senden, selbst wenn `--disable-local-auth` auf true gesetzt ist. +```python +import asyncio +from azure.identity.aio import DefaultAzureCredential +from azure.servicebus.aio import ServiceBusClient +from azure.servicebus import ServiceBusMessage + +NS = ".servicebus.windows.net" # Your namespace +QUEUE_OR_TOPIC = "" # Your queue name + +async def run(): +credential = DefaultAzureCredential() +async with ServiceBusClient(fully_qualified_namespace=NS, credential=credential) as client: +async with client.get_queue_sender(queue_name=QUEUE) as sender: +await sender.send_messages(ServiceBusMessage("Single Message")) +print("Sent a single message") +await credential.close() + +if __name__ == "__main__": +asyncio.run(run()) +``` +### Nachrichten empfangen. DataActions: `Microsoft.ServiceBus/namespaces/messages/receive/action` + +Sie können diese Berechtigungen verwenden, um Nachrichten zu empfangen, selbst wenn `--disable-local-auth` auf true gesetzt ist. +```python +import asyncio +from azure.identity.aio import DefaultAzureCredential +from azure.servicebus.aio import ServiceBusClient + +NS = ".servicebus.windows.net" +QUEUE = "" + +# For a topic subscription, uncomment and set these values: +# TOPIC = "" +# SUBSCRIPTION = "" + +async def run(): +credential = DefaultAzureCredential() +async with ServiceBusClient(fully_qualified_namespace=NS, credential=credential) as client: +# Receiving from a queue: +async with client.get_queue_receiver(queue_name=QUEUE, max_wait_time=5) as receiver: +async for msg in receiver: +print("Received from Queue:", msg) +await receiver.complete_message(msg) + +# To receive from a topic subscription, uncomment the code below and comment out the queue receiver above: +# async with client.get_subscription_receiver(topic_name=TOPIC, subscription_name=SUBSCRIPTION, max_wait_time=5) as receiver: +# async for msg in receiver: +# print("Received from Topic Subscription:", msg) +# await receiver.complete_message(msg) + +await credential.close() + +asyncio.run(run()) +print("Done receiving messages") ``` ## Referenzen -- https://learn.microsoft.com/en-us/azure/storage/queues/storage-powershell-how-to-use-queues -- https://learn.microsoft.com/en-us/rest/api/storageservices/queue-service-rest-api -- https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes -- https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-python-how-to-use-topics-subscriptions?tabs=passwordless -- https://learn.microsoft.com/en-us/azure/role-based-access-control/permissions/integration#microsoftservicebus +- [https://learn.microsoft.com/en-us/azure/storage/queues/storage-powershell-how-to-use-queues](https://learn.microsoft.com/en-us/azure/storage/queues/storage-powershell-how-to-use-queues) +- [https://learn.microsoft.com/en-us/rest/api/storageservices/queue-service-rest-api](https://learn.microsoft.com/en-us/rest/api/storageservices/queue-service-rest-api) +- [https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes](https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes) +- [https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-python-how-to-use-topics-subscriptions?tabs=passwordless](https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-python-how-to-use-topics-subscriptions?tabs=passwordless) +- [https://learn.microsoft.com/en-us/azure/role-based-access-control/permissions/integration#microsoftservicebus](https://learn.microsoft.com/en-us/azure/role-based-access-control/permissions/integration#microsoftservicebus) {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-sql-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-sql-privesc.md index 5f9e0ff5d..da4130ddb 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-sql-privesc.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-sql-privesc.md @@ -26,15 +26,40 @@ az sql server create \ --resource-group \ --location \ --admin-user \ ---admin-password +--admin-password ``` -Zusätzlich ist es notwendig, den öffentlichen Zugriff zu aktivieren, wenn Sie von einem nicht privaten Endpunkt aus zugreifen möchten. Um ihn zu aktivieren: +Zusätzlich ist es notwendig, den öffentlichen Zugriff zu aktivieren, wenn Sie von einem nicht privaten Endpunkt aus zugreifen möchten. Um dies zu aktivieren: ```bash az sql server update \ --name \ --resource-group \ --enable-public-network true ``` +Darüber hinaus können Sie mit den Berechtigungen die zugewiesene Identität aktivieren und mit der verwalteten Identität, die an den Server angehängt ist, arbeiten. Zum Beispiel hier mit einer verwalteten Identität, die auf Azure Storage zugreifen kann: +```bash +az sql server update \ +--name \ +--resource-group \ +--assign_identity +``` + +```sql +CREATE EXTERNAL DATA SOURCE ManagedIdentity +WITH ( +TYPE = BLOB_STORAGE, +LOCATION = 'https://.blob.core.windows.net/', +CREDENTIAL = ManagedIdentityCredential +); +GO + +SELECT * +FROM OPENROWSET( +BULK 'message.txt', +DATA_SOURCE = 'ManagedIdentity', +SINGLE_CLOB +) AS DataFile; +GO +``` ### `Microsoft.Sql/servers/firewallRules/write` Ein Angreifer kann Firewall-Regeln auf Azure SQL-Servern manipulieren, um unbefugten Zugriff zu ermöglichen. Dies kann ausgenutzt werden, um den Server für bestimmte IP-Adressen oder ganze IP-Bereiche, einschließlich öffentlicher IPs, zu öffnen, wodurch der Zugriff für böswillige Akteure ermöglicht wird. Diese Post-Exploitation-Aktivität kann verwendet werden, um bestehende Netzwerksicherheitskontrollen zu umgehen, Persistenz zu etablieren oder laterale Bewegungen innerhalb der Umgebung zu erleichtern, indem sensible Ressourcen exponiert werden. diff --git a/src/pentesting-cloud/azure-security/az-services/az-container-instances.md b/src/pentesting-cloud/azure-security/az-services/az-container-instances.md deleted file mode 100644 index 6646682eb..000000000 --- a/src/pentesting-cloud/azure-security/az-services/az-container-instances.md +++ /dev/null @@ -1,45 +0,0 @@ -# Az - Container Instances - -{{#include ../../../banners/hacktricks-training.md}} - -## Grundinformationen - -Azure Container Instances (ACI) bieten eine **serverlose, bedarfsorientierte Möglichkeit**, **Container** in der Azure-Cloud auszuführen. Sie können **einzelne oder mehrere Container** in einer Gruppe mit **skalierbarer Rechenleistung**, **Netzwerkoptionen** und der Flexibilität, sich mit **anderen Azure-Diensten** (wie Storage, Virtuellen Netzwerken oder Container-Registrierungen) zu verbinden, **bereitstellen**. - -Da es sich um **ephemere** Workloads handelt, müssen Sie die zugrunde liegende VM-Infrastruktur nicht verwalten — Azure kümmert sich darum für Sie. Aus einer **offensiven Sicherheits-Perspektive** ist es jedoch entscheidend zu verstehen, wie **Berechtigungen**, **Identitäten**, **Netzwerkkonfigurationen** und **Protokolle** Angriffsflächen und potenzielle Fehlkonfigurationen offenbaren können. - -### Konfigurationen - -- Um einen Container zu erstellen, ist es möglich, ein öffentliches Image, ein Container-Image aus einem Azure Container Registry oder einem externen Repository zu verwenden, was möglicherweise **erfordert, ein Passwort zu konfigurieren**, um darauf zuzugreifen. -- In Bezug auf das Netzwerk kann es auch eine **öffentliche IP** haben oder **private Endpunkte** sein. -- Es ist auch möglich, gängige Docker-Einstellungen wie zu konfigurieren: -- **Umgebungsvariablen** -- **Volumes** (sogar von Azure Files) -- **Ports** -- **CPU- und Speicherkapazitätsgrenzen** -- **Neustartpolitik** -- **Als privilegiert ausführen** -- **Befehlszeile zum Ausführen** -- ... - -## Enumeration - -> [!WARNING] -> Bei der Enumeration von ACI können Sie sensible Konfigurationen wie **Umgebungsvariablen**, **Netzwerkdetails** oder **verwaltete Identitäten** offenbaren. Seien Sie vorsichtig beim Protokollieren oder Anzeigen dieser. -```bash -# List all container instances in the subscription -az container list - -# Show detailed information about a specific container instance -az container show --name --resource-group - -# Fetch logs from a container -az container logs --name --resource-group - -# Execute a command in a running container and get the output -az container exec --name --resource-group --exec-command "ls" - -# Get yaml configuration of the container group -az container export --name --resource-group -``` - diff --git a/src/pentesting-cloud/azure-security/az-services/az-queue-enum.md b/src/pentesting-cloud/azure-security/az-services/az-queue-enum.md index aa67f41f2..330e3f50e 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-queue-enum.md +++ b/src/pentesting-cloud/azure-security/az-services/az-queue-enum.md @@ -4,7 +4,7 @@ ## Grundinformationen -Azure Queue Storage ist ein Dienst in Microsofts Azure-Cloud-Plattform, der für die Nachrichtenwarteschlange zwischen Anwendungskomponenten entwickelt wurde, **um asynchrone Kommunikation und Entkopplung zu ermöglichen**. Es ermöglicht Ihnen, eine unbegrenzte Anzahl von Nachrichten zu speichern, jede bis zu 64 KB groß, und unterstützt Operationen wie das Erstellen und Löschen von Warteschlangen, das Hinzufügen, Abrufen, Aktualisieren und Löschen von Nachrichten sowie das Verwalten von Metadaten und Zugriffsrichtlinien. Während es typischerweise Nachrichten in einer First-In-First-Out (FIFO)-Reihenfolge verarbeitet, wird strikte FIFO nicht garantiert. +Azure Queue Storage ist ein Dienst in Microsofts Azure-Cloud-Plattform, der für die Nachrichtenwarteschlange zwischen Anwendungskomponenten entwickelt wurde, **um asynchrone Kommunikation und Entkopplung zu ermöglichen**. Es ermöglicht Ihnen, eine unbegrenzte Anzahl von Nachrichten zu speichern, von denen jede bis zu 64 KB groß sein kann, und unterstützt Operationen wie das Erstellen und Löschen von Warteschlangen, das Hinzufügen, Abrufen, Aktualisieren und Löschen von Nachrichten sowie das Verwalten von Metadaten und Zugriffsrichtlinien. Während es normalerweise Nachrichten in einer First-In-First-Out (FIFO)-Reihenfolge verarbeitet, wird strikte FIFO nicht garantiert. ### Enumeration @@ -84,8 +84,8 @@ $queueMessage.Value ## Referenzen -- https://learn.microsoft.com/en-us/azure/storage/queues/storage-powershell-how-to-use-queues -- https://learn.microsoft.com/en-us/rest/api/storageservices/queue-service-rest-api -- https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes +- [https://learn.microsoft.com/en-us/azure/storage/queues/storage-powershell-how-to-use-queues](https://learn.microsoft.com/en-us/azure/storage/queues/storage-powershell-how-to-use-queues) +- [https://learn.microsoft.com/en-us/rest/api/storageservices/queue-service-rest-api](https://learn.microsoft.com/en-us/rest/api/storageservices/queue-service-rest-api) +- [https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes](https://learn.microsoft.com/en-us/azure/storage/queues/queues-auth-abac-attributes) {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-services/az-servicebus-enum.md b/src/pentesting-cloud/azure-security/az-services/az-servicebus-enum.md index dd3ef4871..b957dcb9d 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-servicebus-enum.md +++ b/src/pentesting-cloud/azure-security/az-services/az-servicebus-enum.md @@ -4,52 +4,61 @@ ## Service Bus -Azure Service Bus ist ein cloudbasierter **Messaging-Dienst**, der entwickelt wurde, um eine zuverlässige **Kommunikation zwischen verschiedenen Teilen einer Anwendung oder separaten Anwendungen** zu ermöglichen. Er fungiert als sicherer Mittelsmann und stellt sicher, dass Nachrichten sicher zugestellt werden, selbst wenn Sender und Empfänger nicht gleichzeitig arbeiten. Durch die Entkopplung von Systemen ermöglicht er es Anwendungen, unabhängig zu arbeiten, während sie weiterhin Daten oder Anweisungen austauschen. Er ist besonders nützlich für Szenarien, die Lastverteilung über mehrere Arbeiter, zuverlässige Nachrichtenübermittlung oder komplexe Koordination erfordern, wie z.B. die Verarbeitung von Aufgaben in der richtigen Reihenfolge oder die sichere Verwaltung von Zugriffsrechten. +Azure Service Bus ist ein cloudbasierter **Messaging-Dienst**, der entwickelt wurde, um eine zuverlässige **Kommunikation zwischen verschiedenen Teilen einer Anwendung oder separaten Anwendungen** zu ermöglichen. Er fungiert als sicherer Mittelsmann und stellt sicher, dass Nachrichten sicher zugestellt werden, selbst wenn Sender und Empfänger nicht gleichzeitig arbeiten. Durch die Entkopplung von Systemen ermöglicht es Anwendungen, unabhängig zu arbeiten, während sie weiterhin Daten oder Anweisungen austauschen. Es ist besonders nützlich für Szenarien, die Lastenausgleich über mehrere Arbeiter, zuverlässige Nachrichtenübermittlung oder komplexe Koordination erfordern, wie z.B. die Verarbeitung von Aufgaben in der richtigen Reihenfolge oder die sichere Verwaltung von Zugriffsrechten. -### Schlüsselkonzepte +### Key Concepts -1. **Warteschlangen:** Ihr Zweck ist es, Nachrichten zu speichern, bis der Empfänger bereit ist. +1. **Namespaces:** Ein Namespace in Messaging-Systemen ist ein logischer Container, der Messaging-Komponenten, Warteschlangen und Themen organisiert und verwaltet. Er bietet eine isolierte Umgebung, in der Anwendungen Nachrichten senden, empfangen und verarbeiten können. Warteschlangen und Themen teilen sich die gleiche Infrastruktur und Konfiguration innerhalb eines Service Bus-Namespace, arbeiten jedoch unabhängig und interagieren nicht miteinander. +2. **Queues:** Ihr Zweck ist es, Nachrichten zu speichern, bis der Empfänger bereit ist. - Nachrichten sind geordnet, zeitgestempelt und dauerhaft gespeichert. -- Lieferung im Pull-Modus (abrufbasierte Bereitstellung). +- Lieferung im Pull-Modus (on-demand retrieval). - Unterstützt Punkt-zu-Punkt-Kommunikation. -2. **Themen:** Publish-Subscribe-Messaging für die Übertragung. +3. **Topics:** Publish-Subscribe-Messaging für Broadcast. - Mehrere unabhängige Abonnements erhalten Kopien von Nachrichten. - Abonnements können Regeln/Filter haben, um die Lieferung zu steuern oder Metadaten hinzuzufügen. - Unterstützt Viele-zu-Viele-Kommunikation. -3. **Namespaces:** Ein Container für alle Messaging-Komponenten, Warteschlangen und Themen, ist wie Ihr eigener Teil eines leistungsstarken Azure-Clusters, der dedizierte Kapazität bietet und optional über drei Verfügbarkeitszonen hinweg reicht. +Der Service Bus-Endpunkt/Verbindungszeichenfolge ist: +```bash +https://.servicebus.windows.net:443/ +``` ### Erweiterte Funktionen Einige erweiterte Funktionen sind: -- **Nachrichtensitzungen**: Stellt FIFO-Verarbeitung sicher und unterstützt Anfrage-Antwort-Muster. -- **Automatische Weiterleitung**: Überträgt Nachrichten zwischen Warteschlangen oder Themen im selben Namespace. -- **Dead-Lettering**: Erfasst nicht zustellbare Nachrichten zur Überprüfung. -- **Geplante Lieferung**: Verzögert die Nachrichtenverarbeitung für zukünftige Aufgaben. -- **Nachrichtenaussetzung**: Verschiebt den Abruf von Nachrichten, bis sie bereit sind. -- **Transaktionen**: Gruppiert Operationen in atomare Ausführung. -- **Filter & Aktionen**: Wendet Regeln an, um Nachrichten zu filtern oder zu annotieren. -- **Automatisches Löschen bei Inaktivität**: Löscht Warteschlangen nach Inaktivität (min: 5 Minuten). -- **Duplikaterkennung**: Entfernt doppelte Nachrichten während der erneuten Übertragung. -- **Batch-Löschung**: Löscht im Bulk abgelaufene oder unnötige Nachrichten. +- **Message Sessions**: Stellt FIFO-Verarbeitung sicher und unterstützt Anfrage-Antwort-Muster. +- **Auto-Forwarding**: Überträgt Nachrichten zwischen Warteschlangen oder Themen im selben Namensraum. +- **Dead-Lettering**: Erfasst unzustellbare Nachrichten zur Überprüfung. +- **Scheduled Delivery**: Verzögert die Nachrichtenverarbeitung für zukünftige Aufgaben. +- **Message Deferral**: Verschiebt den Abruf von Nachrichten, bis sie bereit sind. +- **Transactions**: Gruppiert Operationen in atomare Ausführung. +- **Filters & Actions**: Wendet Regeln an, um Nachrichten zu filtern oder zu annotieren. +- **Auto-Delete on Idle**: Löscht Warteschlangen nach Inaktivität (min: 5 Minuten). +- **Duplicate Detection**: Entfernt doppelte Nachrichten während der erneuten Sendung. +- **Batch Deletion**: Löscht im Bulk abgelaufene oder unnötige Nachrichten. ### Autorisierungsregel / SAS-Richtlinie -SAS-Richtlinien definieren die Zugriffsberechtigungen für Azure Service Bus-Entitäten, Namespace (die wichtigste), Warteschlangen und Themen. Jede Richtlinie hat die folgenden Komponenten: +SAS-Richtlinien definieren die Zugriffsberechtigungen für Azure Service Bus-Entitäten im Namensraum (die wichtigste), Warteschlangen und Themen. Jede Richtlinie hat die folgenden Komponenten: - **Berechtigungen**: Kontrollkästchen zur Angabe von Zugriffslevels: -- Verwalten: Gewährt vollständige Kontrolle über die Entität, einschließlich Konfiguration und Berechtigungsmanagement. -- Senden: Erlaubt das Senden von Nachrichten an die Entität. -- Anhören: Erlaubt das Empfangen von Nachrichten von der Entität. +- Manage: Gewährt vollständige Kontrolle über die Entität, einschließlich Konfiguration und Berechtigungsmanagement. +- Send: Erlaubt das Senden von Nachrichten an die Entität. +- Listen: Erlaubt das Empfangen von Nachrichten von der Entität. - **Primäre und sekundäre Schlüssel**: Dies sind kryptografische Schlüssel, die zur Generierung sicherer Tokens für die Authentifizierung des Zugriffs verwendet werden. - **Primäre und sekundäre Verbindungszeichenfolgen**: Vorgefertigte Verbindungszeichenfolgen, die den Endpunkt und den Schlüssel für die einfache Verwendung in Anwendungen enthalten. - **SAS-Richtlinien-ARM-ID**: Der Azure Resource Manager (ARM)-Pfad zur Richtlinie für die programmgesteuerte Identifizierung. -### Namespace +Es ist wichtig zu beachten, dass ein Namensraum eine einzige SAS-Richtlinie hat, die jede Entität innerhalb davon beeinflusst, während Warteschlangen und Themen ihre eigenen individuellen SAS-Richtlinien für eine granularere Kontrolle haben können. -sku, autorisierungsregel, +### "--disable-local-auth" -### Enumeration +Der Parameter --disable-local-auth wird verwendet, um zu steuern, ob die lokale Authentifizierung (d.h. die Verwendung von Shared Access Signature (SAS)-Schlüsseln) für Ihren Service Bus-Namensraum aktiviert ist. Hier ist, was Sie wissen müssen: + +- Wenn auf true gesetzt: Die lokale Authentifizierung mit SAS-Schlüsseln ist deaktiviert und die Authentifizierung über Azure Active Directory (Azure AD) ist erlaubt. +- Wenn auf false gesetzt: Sowohl die SAS (lokale) Authentifizierung als auch die Azure AD-Authentifizierung sind verfügbar, und Sie können Verbindungszeichenfolgen mit SAS-Schlüsseln verwenden, um auf Ihre Service Bus-Ressourcen zuzugreifen. + +### Aufzählung {{#tabs }} {{#tab name="az cli" }} diff --git a/src/pentesting-cloud/azure-security/az-services/az-sql.md b/src/pentesting-cloud/azure-security/az-services/az-sql.md index bdcde921f..023cf5bce 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-sql.md +++ b/src/pentesting-cloud/azure-security/az-services/az-sql.md @@ -4,30 +4,47 @@ ## Azure SQL -Azure SQL ist eine Familie von verwalteten, sicheren und intelligenten Produkten, die die **SQL Server-Datenbank-Engine in der Azure-Cloud** verwenden. Das bedeutet, dass Sie sich nicht um die physische Verwaltung Ihrer Server kümmern müssen und sich auf die Verwaltung Ihrer Daten konzentrieren können. +Azure SQL ist eine Familie von verwalteten, sicheren und intelligenten Produkten, die die **SQL Server-Datenbank-Engine in der Azure-Cloud** nutzen. Das bedeutet, dass Sie sich nicht um die physische Verwaltung Ihrer Server kümmern müssen und sich auf die Verwaltung Ihrer Daten konzentrieren können. -Azure SQL besteht aus drei Hauptangeboten: +Azure SQL besteht aus vier Hauptangeboten: -1. **Azure SQL-Datenbank**: Dies ist ein **vollständig verwalteter Datenbankdienst**, der es Ihnen ermöglicht, einzelne Datenbanken in der Azure-Cloud zu hosten. Er bietet integrierte Intelligenz, die Ihre einzigartigen Datenbankmuster lernt und maßgeschneiderte Empfehlungen sowie automatische Optimierungen bereitstellt. -2. **Azure SQL Managed Instance**: Dies ist für größere, vollständig SQL Server-Instanz-gestützte Bereitstellungen. Es bietet nahezu 100% Kompatibilität mit der neuesten SQL Server On-Premises (Enterprise Edition) Datenbank-Engine, die eine native Implementierung des virtuellen Netzwerks (VNet) bietet, die häufige Sicherheitsbedenken anspricht, und ein Geschäftsmodell, das für On-Premises SQL Server-Kunden vorteilhaft ist. -3. **Azure SQL Server auf Azure VMs**: Dies ist Infrastructure as a Service (IaaS) und eignet sich am besten für Migrationen, bei denen Sie **Kontrolle über das Betriebssystem und die SQL Server-Instanz** haben möchten, als ob es sich um einen Server handelt, der On-Premises läuft. +1. **Azure SQL Server**: Azure SQL Server ist ein verwalteter relationaler Datenbankdienst, der die Bereitstellung und Verwaltung von SQL Server-Datenbanken vereinfacht, mit integrierten Sicherheits- und Leistungsfunktionen. +2. **Azure SQL Database**: Dies ist ein **vollständig verwalteter Datenbankdienst**, der es Ihnen ermöglicht, einzelne Datenbanken in der Azure-Cloud zu hosten. Er bietet integrierte Intelligenz, die Ihre einzigartigen Datenbankmuster lernt und maßgeschneiderte Empfehlungen sowie automatische Optimierungen bereitstellt. +3. **Azure SQL Managed Instance**: Dies ist für größere, gesamte SQL Server-Instanz-Umsetzungen gedacht. Es bietet nahezu 100% Kompatibilität mit der neuesten SQL Server On-Premises (Enterprise Edition) Datenbank-Engine, die eine native virtuelle Netzwerk (VNet)-Implementierung bietet, die häufige Sicherheitsbedenken anspricht, und ein Geschäftsmodell, das für On-Premises SQL Server-Kunden vorteilhaft ist. +4. **Azure SQL Server auf Azure VMs**: Dies ist Infrastructure as a Service (IaaS) und eignet sich am besten für Migrationen, bei denen Sie **Kontrolle über das Betriebssystem und die SQL Server-Instanz** haben möchten, als ob es sich um einen Server handelt, der On-Premises läuft. -### Azure SQL-Datenbank +### Azure SQL Server -**Azure SQL-Datenbank** ist eine **vollständig verwaltete Datenbankplattform als Dienst (PaaS)**, die skalierbare und sichere relationale Datenbanklösungen bietet. Sie basiert auf den neuesten SQL Server-Technologien und beseitigt die Notwendigkeit für Infrastrukturmanagement, was sie zu einer beliebten Wahl für cloudbasierte Anwendungen macht. +Azure SQL Server ist ein relationales Datenbankmanagementsystem (RDBMS), das Transact-SQL für Datenoperationen verwendet und für die Verarbeitung von Unternehmenssystemen ausgelegt ist. Es bietet robuste Funktionen für Leistung, Sicherheit, Skalierbarkeit und Integration mit verschiedenen Microsoft-Anwendungen. Azure SQL-Datenbanken basieren auf diesem Server, da diese auf diesen Servern aufgebaut sind und es der Einstiegspunkt für Benutzer ist, um auf die Datenbanken zuzugreifen. -#### Hauptmerkmale +#### Netzwerk -- **Immer Aktuell**: Läuft auf der neuesten stabilen Version von SQL Server und erhält automatisch neue Funktionen und Patches. -- **PaaS-Funktionen**: Integrierte hohe Verfügbarkeit, Backups und Updates. -- **Datenflexibilität**: Unterstützt relationale und nicht-relationale Daten (z. B. Graphen, JSON, räumliche Daten und XML). +**Netzwerkverbindung**: Wählen Sie, ob Sie den Zugriff über einen öffentlichen Endpunkt oder einen privaten Endpunkt aktivieren möchten. Wenn Sie "Kein Zugriff" auswählen, werden keine Endpunkte erstellt, bis dies manuell konfiguriert wird: +- Kein Zugriff: Es sind keine Endpunkte konfiguriert, wodurch eingehende Verbindungen blockiert werden, bis sie manuell eingerichtet werden. +- Öffentlicher Endpunkt: Ermöglicht direkte Verbindungen über das öffentliche Internet, unterliegt Firewall-Regeln und anderen Sicherheitskonfigurationen. +- Privater Endpunkt: Beschränkt die Konnektivität auf ein privates Netzwerk. -#### Kaufmodelle / Dienstebenen +**Verbindungsrichtlinie**: Definieren Sie, wie Clients mit dem SQL-Datenbankserver kommunizieren: +- Standard: Verwendet eine Umleitungsrichtlinie für alle Clientverbindungen von innerhalb von Azure (außer für solche, die private Endpunkte verwenden) und eine Proxy-Richtlinie für Verbindungen von außerhalb von Azure. +- Proxy: Leitet alle Clientverbindungen über das Azure SQL-Datenbank-Gateway. +- Umleitung: Clients verbinden sich direkt mit dem Knoten, der die Datenbank hostet. -- **vCore-basiert**: Wählen Sie Compute, Speicher und Speicher unabhängig. Für allgemeine Zwecke, geschäftskritisch (mit hoher Resilienz und Leistung für OLTP-Anwendungen) und bis zu 128 TB Speicher. -- **DTU-basiert**: Bündelt Compute, Speicher und I/O in festen Ebenen. Ausgewogene Ressourcen für gängige Aufgaben. -- Standard: Ausgewogene Ressourcen für gängige Aufgaben. -- Premium: Hohe Leistung für anspruchsvolle Workloads. +#### Authentifizierungsmethoden +Azure SQL unterstützt verschiedene Authentifizierungsmethoden, um den Datenbankzugriff zu sichern: + +- **Microsoft Entra-only-Authentifizierung**: Verwendet Microsoft Entra (ehemals Azure AD) für zentrales Identitätsmanagement und Single Sign-On. +- **Sowohl SQL- als auch Microsoft Entra-Authentifizierung**: Ermöglicht die Verwendung traditioneller SQL-Authentifizierung zusammen mit Microsoft Entra. +- **SQL-Authentifizierung**: Vertraut ausschließlich auf SQL Server-Benutzernamen und -Passwörter. + +#### Sicherheitsmerkmale + +SQL-Server haben **verwaltete Identitäten**. Verwaltete Identitäten ermöglichen es Ihrem Server, sich sicher mit anderen Azure-Diensten zu authentifizieren, ohne Anmeldeinformationen zu speichern. Sie ermöglichen den Zugriff auf andere Dienste, die eine systemzugewiesene verwaltete Identität haben, und können von anderen Diensten mit anderen Identitäten, die eine benutzerzugewiesene verwaltete Identität sind, aufgerufen werden. Einige der Dienste, auf die SQL zugreifen kann, sind Azure Storage Account (V2), Azure Data Lake Storage Gen2, SQL Server, Oracle, Teradata, MongoDB oder Cosmos DB API für MongoDB, generisches ODBC, Bulk-Operationen und S3-kompatible Objektspeicherung. + +Weitere Sicherheitsmerkmale, die der SQL-Server hat, sind: + +- **Firewall-Regeln**: Firewall-Regeln steuern den Zugriff auf Ihren Server, indem sie den Datenverkehr einschränken oder zulassen. Dies ist auch eine Funktion der Datenbanken selbst. +- **Transparente Datenverschlüsselung (TDE)**: TDE verschlüsselt Ihre Datenbanken, Backups und Protokolle im Ruhezustand, um Ihre Daten zu schützen, selbst wenn der Speicher kompromittiert ist. Dies kann mit einem dienstverwalteten Schlüssel oder einem kundenverwalteten Schlüssel erfolgen. +- **Microsoft Defender für SQL**: Microsoft Defender für SQL kann aktiviert werden und bietet Schwachstellenbewertungen und erweiterten Bedrohungsschutz für einen Server. #### Bereitstellungsmodelle @@ -35,19 +52,56 @@ Azure SQL-Datenbank unterstützt flexible Bereitstellungsoptionen, um verschiede - **Einzelne Datenbank**: - Eine vollständig isolierte Datenbank mit eigenen dedizierten Ressourcen. -- Ideal für Microservices oder Anwendungen, die eine einzige Datenquelle benötigen. -- **Elastic Pool**: +- Ideal für Microservices oder Anwendungen, die eine einzelne Datenquelle benötigen. +- **Elastischer Pool**: - Ermöglicht mehreren Datenbanken, Ressourcen innerhalb eines Pools zu teilen. - Kosten effizient für Anwendungen mit schwankenden Nutzungsmustern über mehrere Datenbanken. +### Azure SQL Database + +**Azure SQL Database** ist eine **vollständig verwaltete Datenbankplattform als Dienst (PaaS)**, die skalierbare und sichere relationale Datenbanklösungen bietet. Sie basiert auf den neuesten SQL Server-Technologien und beseitigt die Notwendigkeit für Infrastrukturmanagement, was sie zu einer beliebten Wahl für cloudbasierte Anwendungen macht. + +#### Hauptmerkmale + +- **Immer auf dem neuesten Stand**: Läuft auf der neuesten stabilen Version von SQL Server und erhält automatisch neue Funktionen und Patches. +- **PaaS-Funktionen**: Integrierte hohe Verfügbarkeit, Backups und Updates. +- **Datenflexibilität**: Unterstützt relationale und nicht-relationale Daten (z. B. Grafiken, JSON, räumliche Daten und XML). + +#### Netzwerk + +**Netzwerkverbindung**: Wählen Sie, ob Sie den Zugriff über einen öffentlichen Endpunkt oder einen privaten Endpunkt aktivieren möchten. Wenn Sie "Kein Zugriff" auswählen, werden keine Endpunkte erstellt, bis dies manuell konfiguriert wird: +- Kein Zugriff: Es sind keine Endpunkte konfiguriert, wodurch eingehende Verbindungen blockiert werden, bis sie manuell eingerichtet werden. +- Öffentlicher Endpunkt: Ermöglicht direkte Verbindungen über das öffentliche Internet, unterliegt Firewall-Regeln und anderen Sicherheitskonfigurationen. +- Privater Endpunkt: Beschränkt die Konnektivität auf ein privates Netzwerk. + +**Verbindungsrichtlinie**: Definieren Sie, wie Clients mit dem SQL-Datenbankserver kommunizieren: +- Standard: Verwendet eine Umleitungsrichtlinie für alle Clientverbindungen von innerhalb von Azure (außer für solche, die private Endpunkte verwenden) und eine Proxy-Richtlinie für Verbindungen von außerhalb von Azure. +- Proxy: Leitet alle Clientverbindungen über das Azure SQL-Datenbank-Gateway. +- Umleitung: Clients verbinden sich direkt mit dem Knoten, der die Datenbank hostet. + +#### Sicherheitsmerkmale + +- **Microsoft Defender für SQL**: kann aktiviert werden und bietet Schwachstellenbewertungen und erweiterten Bedrohungsschutz. +- **Ledger**: überprüft kryptografisch die Integrität von Daten und stellt sicher, dass Manipulationen erkannt werden. +- **Serveridentität**: verwendet systemzugewiesene und benutzerzugewiesene verwaltete Identitäten, um den zentralen Zugriff zu ermöglichen. +- **Verwaltung der transparenten Datenverschlüsselungsschlüssel**: verschlüsselt Datenbanken, Backups und Protokolle im Ruhezustand, ohne dass Änderungen an der Anwendung erforderlich sind. Die Verschlüsselung kann für jede Datenbank aktiviert werden, und wenn sie auf Datenbankebene konfiguriert ist, überschreiben diese Einstellungen die serverseitige Konfiguration. +- **Immer verschlüsselt**: ist eine Suite von erweiterten Datenschutzfunktionen, die das Eigentum an Daten von der Datenverwaltung trennt. Dies stellt sicher, dass Administratoren oder Betreiber mit hohen Berechtigungen nicht auf sensible Daten zugreifen können. + +#### Kaufmodelle / Dienstebenen + +- **vCore-basiert**: Wählen Sie Compute, Speicher und Speicher unabhängig. Für allgemeine Zwecke, geschäftskritisch (mit hoher Resilienz und Leistung für OLTP-Apps) und skaliert bis zu 128 TB Speicher. +- **DTU-basiert**: Bündelt Compute, Speicher und I/O in festen Ebenen. Ausgewogene Ressourcen für gängige Aufgaben. +- Standard: Ausgewogene Ressourcen für gängige Aufgaben. +- Premium: Hohe Leistung für anspruchsvolle Workloads. + #### Skalierbare Leistung und Pools -- **Einzelne Datenbanken**: Jede Datenbank ist isoliert und hat ihre eigenen dedizierten Compute-, Speicher- und Speicherressourcen. Ressourcen können dynamisch (hoch oder runter) ohne Ausfallzeiten skaliert werden (1–128 vCores, 32 GB–4 TB Speicher und bis zu 128 TB). -- **Elastic Pools**: Teilen Sie Ressourcen über mehrere Datenbanken in einem Pool, um die Effizienz zu maximieren und Kosten zu sparen. Ressourcen können auch dynamisch für den gesamten Pool skaliert werden. -- **Flexibilität der Dienstebene**: Beginnen Sie klein mit einer einzelnen Datenbank in der allgemeinen Zweckebene. Upgrade auf geschäftskritische oder Hyperscale-Ebenen, wenn die Bedürfnisse wachsen. +- **Einzelne Datenbanken**: Jede Datenbank ist isoliert und hat ihre eigenen dedizierten Compute-, Speicher- und Speicherressourcen. Ressourcen können dynamisch (nach oben oder unten) ohne Ausfallzeiten skaliert werden (1–128 vCores, 32 GB–4 TB Speicher und bis zu 128 TB). +- **Elastische Pools**: Teilen Sie Ressourcen über mehrere Datenbanken in einem Pool, um die Effizienz zu maximieren und Kosten zu sparen. Ressourcen können auch dynamisch für den gesamten Pool skaliert werden. +- **Flexibilität der Dienstebene**: Beginnen Sie klein mit einer einzelnen Datenbank in der allgemeinen Zweckebene. Upgrade auf geschäftskritische oder Hyperscale-Ebenen, wenn die Anforderungen wachsen. - **Skalierungsoptionen**: Dynamische Skalierung oder Autoscaling-Alternativen. -#### Eingebaute Überwachung & Optimierung +#### Integrierte Überwachung & Optimierung - **Abfrage-Store**: Verfolgt Leistungsprobleme, identifiziert die Hauptressourcennutzer und bietet umsetzbare Empfehlungen. - **Automatische Optimierung**: Optimiert proaktiv die Leistung mit Funktionen wie automatischer Indizierung und Korrekturen von Abfrageplänen. @@ -56,7 +110,7 @@ Azure SQL-Datenbank unterstützt flexible Bereitstellungsoptionen, um verschiede #### Notfallwiederherstellung & Verfügbarkeit - **Automatische Backups**: SQL-Datenbank führt automatisch vollständige, differenzielle und Transaktionsprotokoll-Backups von Datenbanken durch. -- **Punkt-in-Zeit-Wiederherstellung**: Stellen Sie Datenbanken auf jeden früheren Zustand innerhalb des Backup-Aufbewahrungszeitraums wieder her. +- **Punkt-in-Zeit-Wiederherstellung**: Stellen Sie Datenbanken in jeden früheren Zustand innerhalb des Backup-Aufbewahrungszeitraums wieder her. - **Geo-Redundanz** - **Failover-Gruppen**: Vereinfacht die Notfallwiederherstellung, indem Datenbanken für automatisches Failover über Regionen gruppiert werden. @@ -66,30 +120,30 @@ Azure SQL-Datenbank unterstützt flexible Bereitstellungsoptionen, um verschiede #### Dienstebenen -- **Allgemeiner Zweck**: Kosten effektive Option für Anwendungen mit standardmäßigen I/O- und Latenzanforderungen. +- **Allgemeiner Zweck**: Kostenwirksame Option für Anwendungen mit standardmäßigen I/O- und Latenzanforderungen. - **Geschäftskritisch**: Hochleistungsoption mit niedriger I/O-Latenz für kritische Workloads. #### Erweiterte Sicherheitsmerkmale -* **Bedrohungsschutz**: Erweiterte Bedrohungsschutzwarnungen für verdächtige Aktivitäten und SQL-Injection-Angriffe. Auditing zur Verfolgung und Protokollierung von Datenbankereignissen zur Einhaltung. +* **Bedrohungsschutz**: Erweiterte Bedrohungsschutzwarnungen für verdächtige Aktivitäten und SQL-Injection-Angriffe. Auditing zur Verfolgung und Protokollierung von Datenbankereignissen zur Einhaltung von Vorschriften. * **Zugriffskontrolle**: Microsoft Entra-Authentifizierung für zentrales Identitätsmanagement. Zeilenebene-Sicherheit und dynamische Datenmaskierung für granulare Zugriffskontrolle. * **Backups**: Automatisierte und manuelle Backups mit Punkt-in-Zeit-Wiederherstellungsfähigkeit. -### Azure SQL Virtuelle Maschinen +### Azure SQL Virtual Machines -**Azure SQL Virtuelle Maschinen** eignen sich am besten für Migrationen, bei denen Sie **Kontrolle über das Betriebssystem und die SQL Server-Instanz** haben möchten, als ob es sich um einen Server handelt, der On-Premises läuft. Sie können unterschiedliche Maschinen Größen und eine große Auswahl an SQL Server-Versionen und -Editionen haben. +**Azure SQL Virtual Machines** eignet sich am besten für Migrationen, bei denen Sie **Kontrolle über das Betriebssystem und die SQL Server-Instanz** haben möchten, als ob es sich um einen Server handelt, der On-Premises läuft. Es kann verschiedene Maschinen Größen und eine große Auswahl an SQL Server-Versionen und -Editionen haben. #### Hauptmerkmale **Automatisiertes Backup**: Planen Sie Backups für SQL-Datenbanken. -**Automatische Patches**: Automatisiert die Installation von Windows- und SQL Server-Updates während eines Wartungsfensters. -**Azure Key Vault-Integration**: Konfiguriert Key Vault automatisch für SQL Server-VMs. -**Defender für Cloud-Integration**: Sehen Sie Defender für SQL-Empfehlungen im Portal. -**Versions-/Edition-Flexibilität**: Ändern Sie die SQL Server-Version oder -Edition-Metadaten, ohne die VM neu bereitzustellen. +**Automatische Patchverwaltung**: Automatisiert die Installation von Windows- und SQL Server-Updates während eines Wartungsfensters. +**Azure Key Vault-Integration**: Konfiguriert automatisch Key Vault für SQL Server VMs. +**Defender für Cloud-Integration**: Anzeigen von Defender für SQL-Empfehlungen im Portal. +**Versions-/Editionenflexibilität**: Ändern Sie die SQL Server-Version oder -Editionen-Metadaten, ohne die VM neu bereitzustellen. #### Sicherheitsmerkmale -**Microsoft Defender für SQL**: Sicherheitsinformationen und -warnungen. +**Microsoft Defender für SQL**: Sicherheitsanalysen und -warnungen. **Azure Key Vault-Integration**: Sichere Speicherung von Anmeldeinformationen und Verschlüsselungsschlüsseln. **Microsoft Entra (Azure AD)**: Authentifizierung und Zugriffskontrolle. @@ -99,7 +153,7 @@ Azure SQL-Datenbank unterstützt flexible Bereitstellungsoptionen, um verschiede {{#tab name="az cli"}} ```bash # List Servers -az sql server list # --output table +az sql server list # managed identities are enumerated here too ## List Server Usages az sql server list-usages --name --resource-group ## List Server Firewalls diff --git a/src/pentesting-cloud/gcp-security/gcp-services/gcp-compute-instances-enum/gcp-compute-instance.md b/src/pentesting-cloud/gcp-security/gcp-services/gcp-compute-instances-enum/gcp-compute-instance.md index d6f758cde..5efba5b43 100644 --- a/src/pentesting-cloud/gcp-security/gcp-services/gcp-compute-instances-enum/gcp-compute-instance.md +++ b/src/pentesting-cloud/gcp-security/gcp-services/gcp-compute-instances-enum/gcp-compute-instance.md @@ -24,7 +24,7 @@ Es ist möglich, die **Festplatte** auszuwählen, die verwendet werden soll, ode ### Container bereitstellen Es ist möglich, einen **Container** innerhalb der virtuellen Maschine bereitzustellen.\ -Es ist möglich, das zu verwendende **Image** zu konfigurieren, den **Befehl** festzulegen, der innerhalb ausgeführt werden soll, **Argumente**, ein **Volume** zu mounten und **Umgebungsvariablen** (sensible Informationen?) zu konfigurieren sowie mehrere Optionen für diesen Container wie Ausführung als **privilegiert**, stdin und pseudo TTY zu konfigurieren. +Es ist möglich, das **Image** auszuwählen, den **Befehl** festzulegen, der innerhalb ausgeführt werden soll, **Argumente**, ein **Volume** zu mounten und **Umgebungsvariablen** (sensible Informationen?) festzulegen sowie mehrere Optionen für diesen Container zu konfigurieren, wie als **privilegiert** ausführen, stdin und pseudo TTY. ### Dienstkonto @@ -34,13 +34,13 @@ Dieses Dienstkonto hat die **Editor-Rolle über das gesamte Projekt (hohe Berech Und die **Standardzugriffsbereiche** sind die folgenden: - **https://www.googleapis.com/auth/devstorage.read\_only** -- Lesezugriff auf Buckets :) -- https://www.googleapis.com/auth/logging.write -- https://www.googleapis.com/auth/monitoring.write -- https://www.googleapis.com/auth/servicecontrol -- https://www.googleapis.com/auth/service.management.readonly -- https://www.googleapis.com/auth/trace.append +- [https://www.googleapis.com/auth/logging.write](https://www.googleapis.com/auth/logging.write) +- [https://www.googleapis.com/auth/monitoring.write](https://www.googleapis.com/auth/monitoring.write) +- [https://www.googleapis.com/auth/servicecontrol](https://www.googleapis.com/auth/servicecontrol) +- [https://www.googleapis.com/auth/service.management.readonly](https://www.googleapis.com/auth/service.management.readonly) +- [https://www.googleapis.com/auth/trace.append](https://www.googleapis.com/auth/trace.append) -Es ist jedoch möglich, **`cloud-platform` mit einem Klick zu gewähren** oder **benutzerdefinierte** zu spezifizieren. +Es ist jedoch möglich, **es mit einem Klick `cloud-platform` zu gewähren** oder **benutzerdefinierte** zu spezifizieren.
@@ -58,7 +58,7 @@ Es ist möglich, HTTP- und HTTPS-Verkehr zuzulassen. ### Zusätzliche Sicherheit -Diese Optionen werden die **Sicherheit** der VM **erhöhen** und werden empfohlen: +Diese Optionen werden die **Sicherheit** der VM **erhöhen** und sind empfohlen: - **Sicherer Boot:** Sicherer Boot hilft, Ihre VM-Instanzen vor Malware und Rootkits auf Boot- und Kernel-Ebene zu schützen. - **vTPM aktivieren:** Das virtuelle Trusted Platform Module (vTPM) validiert die Integrität Ihrer Gast-VM vor dem Booten und während des Bootvorgangs und bietet Schlüsselgenerierung und -schutz. @@ -66,7 +66,7 @@ Diese Optionen werden die **Sicherheit** der VM **erhöhen** und werden empfohle ### VM-Zugriff -Der gängige Weg, um den Zugriff auf die VM zu ermöglichen, besteht darin, **bestimmte SSH-Öffentlichkeits-Schlüssel** den Zugriff auf die VM zu erlauben.\ +Der gängige Weg, um den Zugriff auf die VM zu ermöglichen, besteht darin, **bestimmte SSH-Öffentlichkeits-Schlüssel** zuzulassen, um auf die VM zuzugreifen.\ Es ist jedoch auch möglich, den Zugriff auf die VM über den `os-config`-Dienst mithilfe von IAM zu **aktivieren**. Darüber hinaus ist es möglich, 2FA zu aktivieren, um auf die VM über diesen Dienst zuzugreifen.\ Wenn dieser **Dienst** **aktiviert** ist, ist der Zugriff über **SSH-Schlüssel deaktiviert.** @@ -76,7 +76,7 @@ Wenn dieser **Dienst** **aktiviert** ist, ist der Zugriff über **SSH-Schlüssel Es ist möglich, **Automatisierung** (Benutzerdaten in AWS) zu definieren, die **Shell-Befehle** sind, die jedes Mal ausgeführt werden, wenn die Maschine eingeschaltet oder neu gestartet wird. -Es ist auch möglich, **zusätzliche Metadaten-Schlüssel-Wert-Paare** hinzuzufügen, die über den Metadaten-Endpunkt zugänglich sind. Diese Informationen werden häufig für Umgebungsvariablen und Start-/Herunterfahrskripte verwendet. Dies kann mit der **`describe`-Methode** aus einem Befehl im Abschnitt zur Enumeration abgerufen werden, kann jedoch auch von innerhalb der Instanz über den Metadaten-Endpunkt abgerufen werden. +Es ist auch möglich, **zusätzliche Metadaten-Schlüssel-Wert-Paare** hinzuzufügen, die über den Metadaten-Endpunkt zugänglich sind. Diese Informationen werden häufig für Umgebungsvariablen und Start-/Herunterfahrskripte verwendet. Dies kann mit der **`describe`-Methode** aus einem Befehl im Enumerationsabschnitt abgerufen werden, kann jedoch auch von innerhalb der Instanz über den Metadaten-Endpunkt abgerufen werden. ```bash # view project metadata curl "http://metadata.google.internal/computeMetadata/v1/project/attributes/?recursive=true&alt=text" \