Translated ['src/banners/hacktricks-training.md', 'src/pentesting-ci-cd/

This commit is contained in:
Translator
2025-01-02 01:25:02 +00:00
parent c0ee8b41f2
commit ff7e659f3f
209 changed files with 1994 additions and 1989 deletions

View File

@@ -1,40 +1,40 @@
# AWS - Unauthenticated Enum & Access
# AWS - Unauthentifizierte Enum & Zugriff
{{#include ../../../banners/hacktricks-training.md}}
## AWS Credentials Leaks
## AWS Anmeldeinformationen Leaks
Eine gängige Methode, um Zugang oder Informationen über ein AWS-Konto zu erhalten, besteht darin, nach **Leaks** zu **suchen**. Sie können nach Leaks suchen, indem Sie **Google Dorks** verwenden, die **öffentlichen Repos** der **Organisation** und der **Mitarbeiter** der Organisation in **Github** oder anderen Plattformen überprüfen, in **Datenbanken für Credentials-Leaks** suchen... oder an jedem anderen Ort, an dem Sie Informationen über das Unternehmen und seine Cloud-Infrastruktur finden könnten.\
Eine gängige Methode, um Zugriff oder Informationen über ein AWS-Konto zu erhalten, besteht darin, nach **Lecks** zu **suchen**. Sie können nach Lecks suchen, indem Sie **Google Dorks** verwenden, die **öffentlichen Repos** der **Organisation** und der **Mitarbeiter** der Organisation in **Github** oder anderen Plattformen überprüfen, in **Datenbanken für Anmeldeinformationen** suchen... oder an jedem anderen Ort, an dem Sie Informationen über das Unternehmen und seine Cloud-Infrastruktur finden könnten.\
Einige nützliche **Tools**:
- [https://github.com/carlospolop/leakos](https://github.com/carlospolop/leakos)
- [https://github.com/carlospolop/pastos](https://github.com/carlospolop/pastos)
- [https://github.com/carlospolop/gorks](https://github.com/carlospolop/gorks)
## AWS Unauthenticated Enum & Access
## AWS Unauthentifizierte Enum & Zugriff
Es gibt mehrere Dienste in AWS, die so konfiguriert werden könnten, dass sie irgendeine Art von Zugang für das gesamte Internet oder für mehr Personen als erwartet gewähren. Überprüfen Sie hier, wie:
Es gibt mehrere Dienste in AWS, die so konfiguriert werden könnten, dass sie irgendeine Art von Zugriff für das gesamte Internet oder für mehr Personen als erwartet gewähren. Überprüfen Sie hier, wie:
- [**Accounts Unauthenticated Enum**](aws-accounts-unauthenticated-enum.md)
- [**Cloud9 Unauthenticated Enum**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/broken-reference/README.md)
- [**Cloudfront Unauthenticated Enum**](aws-cloudfront-unauthenticated-enum.md)
- [**Cloudsearch Unauthenticated Enum**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/broken-reference/README.md)
- [**Cognito Unauthenticated Enum**](aws-cognito-unauthenticated-enum.md)
- [**DocumentDB Unauthenticated Enum**](aws-documentdb-enum.md)
- [**EC2 Unauthenticated Enum**](aws-ec2-unauthenticated-enum.md)
- [**Elasticsearch Unauthenticated Enum**](aws-elasticsearch-unauthenticated-enum.md)
- [**IAM Unauthenticated Enum**](aws-iam-and-sts-unauthenticated-enum.md)
- [**IoT Unauthenticated Access**](aws-iot-unauthenticated-enum.md)
- [**Kinesis Video Unauthenticated Access**](aws-kinesis-video-unauthenticated-enum.md)
- [**Media Unauthenticated Access**](aws-media-unauthenticated-enum.md)
- [**MQ Unauthenticated Access**](aws-mq-unauthenticated-enum.md)
- [**MSK Unauthenticated Access**](aws-msk-unauthenticated-enum.md)
- [**RDS Unauthenticated Access**](aws-rds-unauthenticated-enum.md)
- [**Redshift Unauthenticated Access**](aws-redshift-unauthenticated-enum.md)
- [**SQS Unauthenticated Access**](aws-sqs-unauthenticated-enum.md)
- [**S3 Unauthenticated Access**](aws-s3-unauthenticated-enum.md)
- [**Accounts Unauthentifizierte Enum**](aws-accounts-unauthenticated-enum.md)
- [**Cloud9 Unauthentifizierte Enum**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/broken-reference/README.md)
- [**Cloudfront Unauthentifizierte Enum**](aws-cloudfront-unauthenticated-enum.md)
- [**Cloudsearch Unauthentifizierte Enum**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/broken-reference/README.md)
- [**Cognito Unauthentifizierte Enum**](aws-cognito-unauthenticated-enum.md)
- [**DocumentDB Unauthentifizierte Enum**](aws-documentdb-enum.md)
- [**EC2 Unauthentifizierte Enum**](aws-ec2-unauthenticated-enum.md)
- [**Elasticsearch Unauthentifizierte Enum**](aws-elasticsearch-unauthenticated-enum.md)
- [**IAM Unauthentifizierte Enum**](aws-iam-and-sts-unauthenticated-enum.md)
- [**IoT Unauthentifizierter Zugriff**](aws-iot-unauthenticated-enum.md)
- [**Kinesis Video Unauthentifizierter Zugriff**](aws-kinesis-video-unauthenticated-enum.md)
- [**Media Unauthentifizierter Zugriff**](aws-media-unauthenticated-enum.md)
- [**MQ Unauthentifizierter Zugriff**](aws-mq-unauthenticated-enum.md)
- [**MSK Unauthentifizierter Zugriff**](aws-msk-unauthenticated-enum.md)
- [**RDS Unauthentifizierter Zugriff**](aws-rds-unauthenticated-enum.md)
- [**Redshift Unauthentifizierter Zugriff**](aws-redshift-unauthenticated-enum.md)
- [**SQS Unauthentifizierter Zugriff**](aws-sqs-unauthenticated-enum.md)
- [**S3 Unauthentifizierter Zugriff**](aws-s3-unauthenticated-enum.md)
## Cross Account Attacks
## Cross Account Angriffe
In dem Vortrag [**Breaking the Isolation: Cross-Account AWS Vulnerabilities**](https://www.youtube.com/watch?v=JfEFIcpJ2wk) wird präsentiert, wie einige Dienste es **jedem AWS-Konto** ermöglichten, auf sie zuzugreifen, weil **AWS-Dienste ohne Angabe von Konten-ID** erlaubt waren.
@@ -42,13 +42,13 @@ Während des Vortrags werden mehrere Beispiele angegeben, wie S3-Buckets, die **
![](<../../../images/image (260).png>)
Andere Dienste, die als anfällig gefunden wurden:
Weitere Dienste, die als anfällig gefunden wurden:
- AWS Config
- Serverless-Repository
- Serverless Repository
## Tools
- [**cloud_enum**](https://github.com/initstring/cloud_enum): Multi-Cloud-OSINT-Tool. **Finden Sie öffentliche Ressourcen** in AWS, Azure und Google Cloud. Unterstützte AWS-Dienste: Offene / Geschützte S3-Buckets, awsapps (WorkMail, WorkDocs, Connect usw.)
- [**cloud_enum**](https://github.com/initstring/cloud_enum): Multi-Cloud OSINT-Tool. **Finden Sie öffentliche Ressourcen** in AWS, Azure und Google Cloud. Unterstützte AWS-Dienste: Offene / Geschützte S3-Buckets, awsapps (WorkMail, WorkDocs, Connect usw.)
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -1,4 +1,4 @@
# AWS - Accounts Unauthenticated Enum
# AWS - Konten Unauthenticated Enum
{{#include ../../../banners/hacktricks-training.md}}
@@ -16,15 +16,15 @@ curl -v https://<acount_id>.signin.aws.amazon.com
## It also works from account aliases
curl -v https://vodafone-uk2.signin.aws.amazon.com
```
You can [automate this process with this tool](https://github.com/dagrz/aws_pwn/blob/master/reconnaissance/validate_accounts.py).
Du kannst [diesen Prozess mit diesem Tool automatisieren](https://github.com/dagrz/aws_pwn/blob/master/reconnaissance/validate_accounts.py).
### OSINT
Suchen Sie nach URLs, die `<alias>.signin.aws.amazon.com` mit einem **Alias, der mit der Organisation verbunden ist,** enthalten.
Suche nach URLs, die `<alias>.signin.aws.amazon.com` mit einem **Alias, der mit der Organisation verbunden ist,** enthalten.
### Marketplace
Wenn ein Anbieter **Instanzen im Marketplace hat,** können Sie die Eigentümer-ID (Kontonummer) des AWS-Kontos, das er verwendet hat, erhalten.
Wenn ein Anbieter **Instanzen im Marketplace hat,** kannst du die Besitzer-ID (Konto-ID) des AWS-Kontos, das er verwendet hat, erhalten.
### Snapshots
@@ -32,7 +32,7 @@ Wenn ein Anbieter **Instanzen im Marketplace hat,** können Sie die Eigentümer-
- RDS-öffentliche Snapshots (RDS -> Snapshots -> Alle öffentlichen Snapshots)
- Öffentliche AMIs (EC2 -> AMIs -> Öffentliche Bilder)
### Errors
### Fehler
Viele AWS-Fehlermeldungen (sogar Zugriff verweigert) geben diese Informationen preis.

View File

@@ -19,11 +19,11 @@ Laut dem Vortrag [Attack Vectors for APIs Using AWS API Gateway Lambda Authorize
]
}
```
Das Problem mit dieser Art, Berechtigungen zum Aufrufen von Endpunkten zu erteilen, ist, dass das **"\*" "alles" impliziert** und **keine weiteren Regex-Syntax unterstützt** wird.
Das Problem mit dieser Methode, Berechtigungen zum Aufrufen von Endpunkten zu erteilen, ist, dass das **"\*" "alles" impliziert** und **keine weiteren Regex-Syntax unterstützt** wird.
Einige Beispiele:
- Eine Regel wie `arn:aws:execute-apis:sa-east-1:accid:api-id/prod/*/dashboard/*`, um jedem Benutzer Zugriff auf `/dashboard/user/{username}` zu gewähren, gewährt ihnen Zugriff auf andere Routen wie `/admin/dashboard/createAdmin`, zum Beispiel.
- Eine Regel wie `arn:aws:execute-apis:sa-east-1:accid:api-id/prod/*/dashboard/*`, um jedem Benutzer Zugriff auf `/dashboard/user/{username}` zu gewähren, gibt ihnen auch Zugriff auf andere Routen wie `/admin/dashboard/createAdmin`, zum Beispiel.
> [!WARNING]
> Beachten Sie, dass **"\*" nicht aufhört, sich mit Schrägstrichen zu erweitern**, daher könnte die Verwendung von "\*" im api-id beispielsweise auch "irgendeine Stufe" oder "irgendeine Methode" anzeigen, solange der endgültige Regex weiterhin gültig ist.\

View File

@@ -12,9 +12,9 @@ Für weitere Informationen siehe diese Seite:
### buildspec.yml
Wenn Sie Schreibzugriff auf ein Repository mit einer Datei namens **`buildspec.yml`** erlangen, könnten Sie diese Datei **hintertüren**, die die **Befehle angibt, die innerhalb eines CodeBuild-Projekts ausgeführt werden**, und die Geheimnisse exfiltrieren, was durchgeführt wird, und auch die **CodeBuild IAM-Rollenanmeldeinformationen** gefährden.
Wenn Sie Schreibzugriff auf ein Repository mit einer Datei namens **`buildspec.yml`** erlangen, könnten Sie diese Datei **backdoor** und die **Befehle, die innerhalb eines CodeBuild-Projekts ausgeführt werden sollen**, spezifizieren sowie die Geheimnisse exfiltrieren, was durchgeführt wird, und auch die **CodeBuild IAM-Rollenanmeldeinformationen** gefährden.
Beachten Sie, dass selbst wenn es keine **`buildspec.yml`**-Datei gibt, Sie aber wissen, dass Codebuild verwendet wird (oder ein anderes CI/CD), das **Ändern von legitimen Code**, der ausgeführt werden soll, Ihnen auch beispielsweise eine Reverse-Shell verschaffen kann.
Beachten Sie, dass selbst wenn es keine **`buildspec.yml`**-Datei gibt, Sie aber wissen, dass Codebuild verwendet wird (oder ein anderes CI/CD), das **Ändern von legitimen Code**, der ausgeführt werden soll, Ihnen ebenfalls beispielsweise eine Reverse-Shell verschaffen kann.
Für einige verwandte Informationen könnten Sie die Seite über den Angriff auf Github Actions (ähnlich wie diese) überprüfen:
@@ -22,12 +22,12 @@ Für einige verwandte Informationen könnten Sie die Seite über den Angriff auf
../../../pentesting-ci-cd/github-security/abusing-github-actions/
{{#endref}}
## Selbstgehostete GitHub Actions-Runner in AWS CodeBuild <a href="#action-runner" id="action-runner"></a>
## Selbstgehostete GitHub Actions-Runners in AWS CodeBuild <a href="#action-runner" id="action-runner"></a>
Wie [**in den Dokumenten angegeben**](https://docs.aws.amazon.com/codebuild/latest/userguide/action-runner.html), ist es möglich, **CodeBuild** so zu konfigurieren, dass **selbstgehostete Github-Aktionen** ausgeführt werden, wenn ein Workflow in einem konfigurierten Github-Repo ausgelöst wird. Dies kann durch Überprüfung der CodeBuild-Projektkonfiguration erkannt werden, da der **`Ereignistyp`** enthalten sein muss: **`WORKFLOW_JOB_QUEUED`** und in einem Github-Workflow, da er einen **selbstgehosteten** Runner wie folgt auswählen wird:
Wie [**in den Dokumenten angegeben**](https://docs.aws.amazon.com/codebuild/latest/userguide/action-runner.html), ist es möglich, **CodeBuild** so zu konfigurieren, dass **selbstgehostete Github-Aktionen** ausgeführt werden, wenn ein Workflow in einem konfigurierten Github-Repo ausgelöst wird. Dies kann durch Überprüfung der CodeBuild-Projektkonfiguration erkannt werden, da der **`Event type`** enthalten sein muss: **`WORKFLOW_JOB_QUEUED`** und in einem Github-Workflow, da er einen **selbstgehosteten** Runner wie folgt auswählen wird:
```bash
runs-on: codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }}
```
Diese neue Beziehung zwischen Github Actions und AWS schafft eine weitere Möglichkeit, AWS von Github aus zu kompromittieren, da der Code in Github in einem CodeBuild-Projekt mit einer angehängten IAM-Rolle ausgeführt wird.
Diese neue Beziehung zwischen Github Actions und AWS schafft eine weitere Möglichkeit, AWS über Github zu kompromittieren, da der Code in Github in einem CodeBuild-Projekt mit einer angehängten IAM-Rolle ausgeführt wird.
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -4,7 +4,7 @@
## Unauthenticated Cognito
Cognito ist ein AWS-Dienst, der Entwicklern ermöglicht, **ihren App-Nutzern Zugang zu AWS-Diensten** zu gewähren. Entwickler werden **IAM-Rollen an authentifizierte Benutzer** in ihrer App vergeben (potenziell können sich Personen einfach anmelden) und sie können auch eine **IAM-Rolle an nicht authentifizierte Benutzer** vergeben.
Cognito ist ein AWS-Dienst, der Entwicklern ermöglicht, **ihren App-Nutzern Zugriff auf AWS-Dienste zu gewähren**. Entwickler gewähren **IAM-Rollen für authentifizierte Benutzer** in ihrer App (potenziell können sich Personen einfach anmelden) und sie können auch eine **IAM-Rolle für nicht authentifizierte Benutzer** gewähren.
Für grundlegende Informationen über Cognito siehe:
@@ -14,8 +14,8 @@ Für grundlegende Informationen über Cognito siehe:
### Identity Pool ID
Identity Pools können **IAM-Rollen an nicht authentifizierte Benutzer** vergeben, die nur **die Identity Pool ID** kennen (was ziemlich häufig **zu finden** ist), und ein Angreifer mit diesen Informationen könnte versuchen, **auf diese IAM-Rolle** zuzugreifen und sie auszunutzen.\
Darüber hinaus könnten IAM-Rollen auch an **authentifizierte Benutzer** vergeben werden, die auf den Identity Pool zugreifen. Wenn ein Angreifer **einen Benutzer registrieren** kann oder bereits **Zugriff auf den Identitätsanbieter** hat, der im Identity Pool verwendet wird, könnte er auf die **IAM-Rolle zugreifen, die authentifizierten** Benutzern zugewiesen ist und deren Berechtigungen missbrauchen.
Identity Pools können **IAM-Rollen für nicht authentifizierte Benutzer** gewähren, die nur **die Identity Pool ID kennen** (was ziemlich häufig **zu finden** ist), und ein Angreifer mit diesen Informationen könnte versuchen, **auf diese IAM-Rolle zuzugreifen** und sie auszunutzen.\
Darüber hinaus könnten IAM-Rollen auch **authentifizierten Benutzern** zugewiesen werden, die auf den Identity Pool zugreifen. Wenn ein Angreifer **einen Benutzer registrieren** kann oder bereits **Zugriff auf den Identitätsanbieter** hat, der im Identity Pool verwendet wird, könnte er auf die **IAM-Rolle zugreifen, die authentifizierten** Benutzern zugewiesen ist und deren Berechtigungen missbrauchen.
[**Überprüfen Sie hier, wie das geht**](../aws-services/aws-cognito-enum/cognito-identity-pools.md).

View File

@@ -12,7 +12,7 @@
### Öffentliche Ports
Es ist möglich, **irgendeinen Port der virtuellen Maschinen ins Internet zu exponieren**. Je nachdem, **was auf dem exponierten Port läuft**, könnte ein Angreifer dies ausnutzen.
Es ist möglich, **jeden Port der virtuellen Maschinen ins Internet zu exponieren**. Abhängig davon, **was auf dem exponierten Port läuft**, könnte ein Angreifer dies ausnutzen.
#### SSRF

View File

@@ -10,9 +10,9 @@ Für weitere Informationen siehe:
../aws-services/aws-ecr-enum.md
{{#endref}}
### Öffentliche Registrierungs-Repositorys (Bilder)
### Öffentliche Registrierungsrepositories (Bilder)
Wie im Abschnitt ECS Enum erwähnt, ist ein öffentliches Repository **für jeden zugänglich** und verwendet das Format **`public.ecr.aws/<random>/<name>`**. Wenn ein Angreifer eine URL eines öffentlichen Repositorys findet, könnte er **das Bild herunterladen und nach sensiblen Informationen** in den Metadaten und dem Inhalt des Bildes suchen.
Wie im Abschnitt ECS Enum erwähnt, ist ein öffentliches Repository **für jeden zugänglich** und verwendet das Format **`public.ecr.aws/<random>/<name>`**. Wenn ein Angreifer eine URL zu einem öffentlichen Repository findet, könnte er **das Bild herunterladen und nach sensiblen Informationen** in den Metadaten und dem Inhalt des Bildes suchen.
```bash
aws ecr describe-repositories --query 'repositories[?repositoryUriPublic == `true`].repositoryName' --output text
```
@@ -21,7 +21,7 @@ aws ecr describe-repositories --query 'repositories[?repositoryUriPublic == `tru
### Private Repo auflisten
Die Tools [**skopeo**](https://github.com/containers/skopeo) und [**crane**](https://github.com/google/go-containerregistry/blob/main/cmd/crane/doc/crane.md) können verwendet werden, um zugängliche Repositories innerhalb einer privaten Registrierung aufzulisten.
Die Tools [**skopeo**](https://github.com/containers/skopeo) und [**crane**](https://github.com/google/go-containerregistry/blob/main/cmd/crane/doc/crane.md) können verwendet werden, um zugängliche Repositories innerhalb einer privaten Registrierungsstelle aufzulisten.
```bash
# Get image names
skopeo list-tags docker://<PRIVATE_REGISTRY_URL> | grep -oP '(?<=^Name: ).+'

View File

@@ -12,7 +12,7 @@ Für weitere Informationen siehe:
### Webanfälligkeit
Beachte, dass standardmäßig Beanstalk-Umgebungen **Metadatav1 deaktiviert** haben.
Beachten Sie, dass standardmäßig Beanstalk-Umgebungen **Metadatav1 deaktiviert** haben.
Das Format der Beanstalk-Webseiten ist **`https://<webapp-name>-env.<region>.elasticbeanstalk.com/`**

View File

@@ -7,7 +7,7 @@
### ~~Rolle annehmen Brute-Force~~
> [!CAUTION]
> **Diese Technik funktioniert** nicht mehr, da Sie immer diese Fehlermeldung erhalten, unabhängig davon, ob die Rolle existiert oder nicht:
> **Diese Technik funktioniert nicht** mehr, da Sie, unabhängig davon, ob die Rolle existiert oder nicht, immer diese Fehlermeldung erhalten:
>
> `An error occurred (AccessDenied) when calling the AssumeRole operation: User: arn:aws:iam::947247140022:user/testenv is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::429217632764:role/account-balanceasdas`
>
@@ -19,17 +19,17 @@ Der Versuch, **eine Rolle ohne die erforderlichen Berechtigungen anzunehmen**, l
```ruby
An error occurred (AccessDenied) when calling the AssumeRole operation: User: arn:aws:iam::012345678901:user/MyUser is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::111111111111:role/aws-service-role/rds.amazonaws.com/AWSServiceRoleForRDS
```
Diese Nachricht bestätigt die Existenz der Rolle, zeigt jedoch an, dass ihre Assume-Rollenrichtlinie Ihre Annahme nicht erlaubt. Im Gegensatz dazu führt der Versuch, **eine nicht existierende Rolle anzunehmen, zu einem anderen Fehler**:
Diese Nachricht bestätigt die Existenz der Rolle, weist jedoch darauf hin, dass ihre Assume-Rolle-Policy Ihre Annahme nicht zulässt. Im Gegensatz dazu führt der Versuch, **eine nicht existierende Rolle anzunehmen, zu einem anderen Fehler**:
```less
An error occurred (AccessDenied) when calling the AssumeRole operation: Not authorized to perform sts:AssumeRole
```
Interessanterweise ist diese Methode des **Unterscheidens zwischen bestehenden und nicht bestehenden Rollen** sogar über verschiedene AWS-Konten hinweg anwendbar. Mit einer gültigen AWS-Konto-ID und einer gezielten Wortliste kann man die im Konto vorhandenen Rollen auflisten, ohne auf inhärente Einschränkungen zu stoßen.
Sie können dieses [Skript verwenden, um potenzielle Principals aufzulisten](https://github.com/RhinoSecurityLabs/Security-Research/tree/master/tools/aws-pentest-tools/assume_role_enum), das dieses Problem ausnutzt.
Sie können dieses [Skript verwenden, um potenzielle Principals aufzulisten](https://github.com/RhinoSecurityLabs/Security-Research/tree/master/tools/aws-pentest-tools/assume_role_enum), indem Sie dieses Problem ausnutzen.
### Vertrauensrichtlinien: Brute-Force über Konten hinweg Rollen und Benutzer
Die Konfiguration oder Aktualisierung der **Vertrauensrichtlinie einer IAM-Rolle umfasst die Definition, welche AWS-Ressourcen oder -Dienste berechtigt sind, diese Rolle zu übernehmen** und temporäre Anmeldeinformationen zu erhalten. Wenn die angegebene Ressource in der Richtlinie **existiert**, wird die Vertrauensrichtlinie **erfolgreich** gespeichert. Wenn die Ressource **nicht existiert**, wird ein **Fehler generiert**, der anzeigt, dass ein ungültiger Principal angegeben wurde.
Die Konfiguration oder Aktualisierung einer **IAM-Rollenvertrauensrichtlinie umfasst die Definition, welche AWS-Ressourcen oder -Dienste berechtigt sind, diese Rolle zu übernehmen** und temporäre Anmeldeinformationen zu erhalten. Wenn die im Richtlinien angegebenen Ressourcen **existieren**, wird die Vertrauensrichtlinie **erfolgreich** gespeichert. Wenn die Ressource **nicht existiert**, wird ein **Fehler generiert**, der anzeigt, dass ein ungültiger Principal angegeben wurde.
> [!WARNING]
> Beachten Sie, dass Sie in dieser Ressource eine rollen- oder benutzerübergreifende Kontenrolle oder einen Benutzer angeben könnten:
@@ -54,7 +54,7 @@ Dies ist ein Beispiel für eine Richtlinie:
```
#### GUI
Das ist der **Fehler**, den Sie finden, wenn Sie eine **Rolle verwenden, die nicht existiert**. Wenn die Rolle **existiert**, wird die Richtlinie **ohne Fehler** gespeichert. (Der Fehler tritt beim Update auf, funktioniert aber auch beim Erstellen)
Das ist der **Fehler**, den Sie finden werden, wenn Sie eine **Rolle verwenden, die nicht existiert**. Wenn die Rolle **existiert**, wird die Richtlinie **ohne Fehler gespeichert**. (Der Fehler tritt beim Aktualisieren auf, funktioniert aber auch beim Erstellen)
![](<../../../images/image (153).png>)
@@ -99,7 +99,7 @@ Unserer Verwendung von [Pacu](https://github.com/RhinoSecurityLabs/pacu):
- `run iam__enum_users --role-name admin --account-id 229736458923 --word-list /tmp/names.txt`
- `run iam__enum_roles --role-name admin --account-id 229736458923 --word-list /tmp/names.txt`
- Die `admin` Rolle, die im Beispiel verwendet wird, ist eine **Rolle in Ihrem Konto, die von pacu impersoniert werden kann**, um die Richtlinien zu erstellen, die für die Enumeration benötigt werden.
- Die `admin` Rolle, die im Beispiel verwendet wird, ist eine **Rolle in Ihrem Konto, die von pacu impersoniert werden soll**, um die Richtlinien zu erstellen, die es für die Enumeration benötigt.
### Privesc
@@ -118,7 +118,7 @@ Im Falle, dass die Rolle schlecht konfiguriert ist und es jedem erlaubt, sie zu
]
}
```
Der Angreifer könnte es einfach annehmen.
Der Angreifer könnte einfach davon ausgehen.
## Drittanbieter OIDC-Föderation
@@ -144,7 +144,7 @@ Dieses Vertrauen könnte den Zugriff auf eine Rolle mit der folgenden **Vertraue
}
```
Diese Vertrauensrichtlinie könnte korrekt sein, aber der **Mangel an weiteren Bedingungen** sollte dich misstrauisch machen.\
Das liegt daran, dass die vorherige Rolle von **JEDER PERSON von Github Actions** übernommen werden kann! Du solltest in den Bedingungen auch andere Dinge wie den Organisationsnamen, den Reponamen, die Umgebung, den Branch... angeben.
Das liegt daran, dass die vorherige Rolle von **JEDER Person von Github Actions** übernommen werden kann! Du solltest in den Bedingungen auch andere Dinge wie den Organisationsnamen, den Reponamen, die Umgebung, den Branch... angeben.
Eine weitere potenzielle Fehlkonfiguration besteht darin, eine **Bedingung** wie die folgende hinzuzufügen:
```json
@@ -152,7 +152,7 @@ Eine weitere potenzielle Fehlkonfiguration besteht darin, eine **Bedingung** wie
"token.actions.githubusercontent.com:sub": "repo:org_name*:*"
}
```
Beachten Sie das **Wildcard** (\*) vor dem **Doppelpunkt** (:). Sie können eine Organisation wie **org_name1** erstellen und **die Rolle annehmen** von einer Github Action.
Beachten Sie das **Wildcard** (\*) vor dem **Doppelpunkt** (:). Sie können eine Organisation wie **org_name1** erstellen und die **Rolle** von einer Github-Aktion annehmen.
## Referenzen

View File

@@ -11,7 +11,7 @@ Um diesen Angriff durchzuführen, sind die Voraussetzungen:
- Das Opfer muss **Identity Center** verwenden
- Der Angreifer muss die **Subdomain** kennen, die vom Opfer verwendet wird `<victimsub>.awsapps.com/start`
Nur mit den vorherigen Informationen wird der **Angreifer in der Lage sein, einen Link an den Benutzer zu senden**, der, wenn er **akzeptiert** wird, dem **Angreifer Zugriff auf das AWS-Benutzer**konto gewährt.
Nur mit den vorherigen Informationen kann der **Angreifer einen Link an den Benutzer senden**, der, wenn er **akzeptiert** wird, dem **Angreifer Zugriff auf das AWS-Benutzer**konto gewährt.
### Angriff
@@ -52,18 +52,18 @@ url = authz.get('verificationUriComplete')
deviceCode = authz.get('deviceCode')
print("Give this URL to the victim: " + url)
```
Senden Sie den generierten Link an das Opfer mit Ihren großartigen Social-Engineering-Fähigkeiten!
Sende den generierten Link an das Opfer mit deinen großartigen Social-Engineering-Fähigkeiten!
3. **Warten Sie, bis das Opfer es akzeptiert**
3. **Warte, bis das Opfer es akzeptiert**
Wenn das Opfer **bereits bei AWS angemeldet** war, muss es nur die Berechtigungen akzeptieren. Wenn nicht, muss es sich **anmelden und dann die Berechtigungen akzeptieren**.\
So sieht das Prompt heutzutage aus:
So sieht die Aufforderung heutzutage aus:
<figure><img src="../../../images/image (343).png" alt="" width="311"><figcaption></figcaption></figure>
4. **Holen Sie sich das SSO-Zugriffstoken**
4. **Erhalte SSO-Zugriffstoken**
Wenn das Opfer das Prompt akzeptiert hat, führen Sie diesen Code aus, um **ein SSO-Token zu generieren, das den Benutzer impersoniert**:
Wenn das Opfer die Aufforderung akzeptiert hat, führe diesen Code aus, um **ein SSO-Token zu generieren, das den Benutzer impersoniert**:
```python
token_response = sso_oidc.create_token(
clientId=client_id,
@@ -73,9 +73,9 @@ deviceCode=deviceCode
)
sso_token = token_response.get('accessToken')
```
Der SSO-Zugriffstoken ist **8 Stunden gültig**.
Das SSO-Zugriffstoken ist **8 Stunden gültig**.
5. **Benutzer impersonifizieren**
5. **Benutzer impersonieren**
```python
sso_client = boto3.client('sso', region_name=REGION)
@@ -104,7 +104,7 @@ sts_creds.get('roleCredentials')
```
### Phishing des unphishbaren MFA
Es ist interessant zu wissen, dass der vorherige Angriff **auch funktioniert, wenn ein "unphishbarer MFA" (webAuth) verwendet wird**. Dies liegt daran, dass der vorherige **Workflow niemals die verwendete OAuth-Domain verlässt**. Anders als bei anderen Phishing-Angriffen, bei denen der Benutzer die Anmeldedomain ersetzen muss, ist im Fall des Gerätecode-Workflows so vorbereitet, dass ein **Code von einem Gerät bekannt ist** und der Benutzer sich sogar auf einem anderen Gerät anmelden kann. Wenn die Eingabeaufforderung akzeptiert wird, kann das Gerät, nur durch **Kenntnis des ursprünglichen Codes**, **Anmeldeinformationen** für den Benutzer **abrufen**.
Es ist interessant zu wissen, dass der vorherige Angriff **auch funktioniert, wenn ein "unphishbarer MFA" (webAuth) verwendet wird**. Das liegt daran, dass der vorherige **Workflow niemals die verwendete OAuth-Domain verlässt**. Anders als bei anderen Phishing-Angriffen, bei denen der Benutzer die Anmeldedomain ersetzen muss, ist im Fall des Gerätecode-Workflows vorgesehen, dass ein **Code von einem Gerät bekannt ist** und der Benutzer sich sogar an einem anderen Gerät anmelden kann. Wenn die Eingabeaufforderung akzeptiert wird, kann das Gerät, nur durch **Kenntnis des ursprünglichen Codes**, **Anmeldeinformationen** für den Benutzer **abrufen**.
Für weitere Informationen dazu [**prüfen Sie diesen Beitrag**](https://mjg59.dreamwidth.org/62175.html).

View File

@@ -12,7 +12,7 @@ Für weitere Informationen siehe:
## Öffentlicher Port
Es ist möglich, **öffentlichen Zugriff auf die Datenbank aus dem Internet** zu gewähren. Der Angreifer muss dennoch **den Benutzernamen und das Passwort,** IAM-Zugriff oder einen **Exploit** kennen, um in die Datenbank einzutreten.
Es ist möglich, **öffentlichen Zugriff auf die Datenbank aus dem Internet** zu gewähren. Der Angreifer muss dennoch **den Benutzernamen und das Passwort,** IAM-Zugriff oder einen **Exploit** kennen, um in die Datenbank zu gelangen.
## Öffentliche RDS-Snapshots

View File

@@ -6,7 +6,7 @@
Ein Bucket wird als **„öffentlich“** betrachtet, wenn **jeder Benutzer den Inhalt** des Buckets auflisten kann, und als **„privat“**, wenn der Inhalt des Buckets **nur von bestimmten Benutzern aufgelistet oder geschrieben werden kann**.
Unternehmen könnten **Bucket-Berechtigungen falsch konfiguriert** haben, was den Zugriff entweder auf alles oder auf alle, die in AWS in einem beliebigen Konto authentifiziert sind (also auf jeden), gewährt. Beachten Sie, dass selbst bei solchen Fehlkonfigurationen einige Aktionen möglicherweise nicht ausgeführt werden können, da Buckets ihre eigenen Zugriffskontrolllisten (ACLs) haben können.
Unternehmen könnten **Berechtigungen für Buckets falsch konfiguriert** haben, was entweder den Zugriff auf alles oder auf alle authentifizierten Benutzer in AWS in jedem Konto (also auf jeden) ermöglicht. Beachten Sie, dass selbst bei solchen Fehlkonfigurationen einige Aktionen möglicherweise nicht ausgeführt werden können, da Buckets ihre eigenen Zugriffskontrolllisten (ACLs) haben können.
**Erfahren Sie hier mehr über AWS-S3 Fehlkonfigurationen:** [**http://flaws.cloud**](http://flaws.cloud/) **und** [**http://flaws2.cloud/**](http://flaws2.cloud)
@@ -17,7 +17,7 @@ Verschiedene Methoden, um herauszufinden, ob eine Webseite AWS zur Speicherung v
#### Enumeration & OSINT:
- Verwendung des **wappalyzer** Browser-Plugins
- Verwendung von Burp (**Spidering** des Webs) oder durch manuelles Navigieren durch die Seite, alle **Ressourcen**, die **geladen** werden, werden im Verlauf gespeichert.
- Verwendung von burp (**Spidering** des Webs) oder durch manuelles Navigieren durch die Seite, alle **geladenen Ressourcen** werden im Verlauf gespeichert.
- **Überprüfen Sie Ressourcen** in Domains wie:
```
@@ -33,7 +33,7 @@ http://[bucket_name].s3.amazonaws.com/
#### Brute-Force
Sie können Buckets finden, indem Sie **Namen** brute-forcen, die mit dem Unternehmen, das Sie pentesten, in Verbindung stehen:
Sie können Buckets durch **Brute-Forcing von Namen** finden, die mit dem Unternehmen, das Sie pentesten, in Verbindung stehen:
- [https://github.com/sa7mon/S3Scanner](https://github.com/sa7mon/S3Scanner)
- [https://github.com/clario-tech/s3-inspector](https://github.com/clario-tech/s3-inspector)
@@ -59,7 +59,7 @@ cat subdomains.txt | tr "." "\n" | sort -u >> /tmp/words-hosts-s3.txt
# Erstellen Sie Permutationen basierend auf einer Liste mit den Domains und Subdomains, die angegriffen werden sollen
goaltdns -l /tmp/words-hosts-s3.txt -w /tmp/words-s3.txt -o /tmp/final-words-s3.txt.temp
## Das vorherige Tool ist spezialisiert auf die Erstellung von Permutationen für Subdomains, lassen Sie uns diese Liste filtern
<strong>### Entfernen Sie Zeilen, die mit "." enden.
<strong>### Entfernen Sie Zeilen, die mit "." enden
</strong>cat /tmp/final-words-s3.txt.temp | grep -Ev "\.$" > /tmp/final-words-s3.txt.temp2
### Erstellen Sie eine Liste ohne TLD
cat /tmp/final-words-s3.txt.temp2 | sed -E 's/\.[a-zA-Z0-9]+$//' > /tmp/final-words-s3.txt.temp3
@@ -96,12 +96,12 @@ Non-authoritative answer:
11.192.218.52.in-addr.arpa name = s3-website-us-west-2.amazonaws.com.
```
Überprüfen Sie, ob die aufgelöste Domain das Wort "website" enthält.\
Sie können auf die statische Website zugreifen, indem Sie: `flaws.cloud.s3-website-us-west-2.amazonaws.com`\
oder Sie können auf den Bucket zugreifen, indem Sie: `flaws.cloud.s3-us-west-2.amazonaws.com` besuchen.
Sie können auf die statische Website zugreifen, indem Sie zu: `flaws.cloud.s3-website-us-west-2.amazonaws.com` gehen\
oder Sie können auf den Bucket zugreifen, indem Sie besuchen: `flaws.cloud.s3-us-west-2.amazonaws.com`
#### Durch Ausprobieren
Wenn Sie versuchen, auf einen Bucket zuzugreifen, aber im **Domainnamen eine andere Region angeben** (zum Beispiel der Bucket ist in `bucket.s3.amazonaws.com`, aber Sie versuchen, auf `bucket.s3-website-us-west-2.amazonaws.com` zuzugreifen), dann werden Sie **auf den richtigen Standort hingewiesen**:
Wenn Sie versuchen, auf einen Bucket zuzugreifen, aber im **Domainnamen eine andere Region angeben** (zum Beispiel der Bucket ist in `bucket.s3.amazonaws.com`, aber Sie versuchen, auf `bucket.s3-website-us-west-2.amazonaws.com` zuzugreifen, dann werden Sie **auf den richtigen Standort hingewiesen**:
![](<../../../images/image (106).png>)
@@ -125,7 +125,7 @@ Sie können dies auch mit der CLI überprüfen:
#Opcionally you can select the region if you now it
aws s3 ls s3://flaws.cloud/ [--no-sign-request] [--profile <PROFILE_NAME>] [ --recursive] [--region us-west-2]
```
Wenn der Bucket keinen Domainnamen hat, geben Sie beim Versuch, ihn aufzulisten, **nur den Bucket-Namen** und nicht die gesamte AWSs3-Domain an. Beispiel: `s3://<BUCKETNAME>`
Wenn der Bucket keinen Domainnamen hat, geben Sie beim Versuch, ihn aufzulisten, **nur den Bucket-Namen** an und nicht die gesamte AWSs3-Domain. Beispiel: `s3://<BUCKETNAME>`
### Öffentliches URL-Template
```
@@ -134,7 +134,7 @@ https://{user_provided}.s3.amazonaws.com
### Konto-ID aus öffentlichem Bucket abrufen
Es ist möglich, ein AWS-Konto zu bestimmen, indem man den neuen **`S3:ResourceAccount`** **Policy Condition Key** ausnutzt. Diese Bedingung **beschränkt den Zugriff basierend auf dem S3-Bucket**, in dem sich ein Konto befindet (andere kontobasierte Richtlinien beschränken den Zugriff basierend auf dem Konto, in dem sich der anfordernde Principal befindet).\
Und da die Richtlinie **Wildcard-Zeichen** enthalten kann, ist es möglich, die Kontonummer **nur eine Zahl nach der anderen** zu finden.
Und da die Richtlinie **Wildcard-Zeichen** enthalten kann, ist es möglich, die Kontonummer **nur eine Ziffer nach der anderen** zu finden.
Dieses Tool automatisiert den Prozess:
```bash
@@ -150,7 +150,7 @@ Diese Technik funktioniert auch mit API Gateway-URLs, Lambda-URLs, Data Exchange
### Bestätigen, dass ein Bucket zu einem AWS-Konto gehört
Wie in [**diesem Blogbeitrag**](https://blog.plerion.com/things-you-wish-you-didnt-need-to-know-about-s3/)** erklärt, wenn Sie Berechtigungen zum Auflisten eines Buckets haben** ist es möglich, eine accountID zu bestätigen, zu der der Bucket gehört, indem Sie eine Anfrage wie folgt senden:
Wie in [**diesem Blogbeitrag**](https://blog.plerion.com/things-you-wish-you-didnt-need-to-know-about-s3/) erklärt, **wenn Sie Berechtigungen zum Auflisten eines Buckets haben**, ist es möglich, eine accountID zu bestätigen, zu der der Bucket gehört, indem Sie eine Anfrage wie folgt senden:
```bash
curl -X GET "[bucketname].amazonaws.com/" \
-H "x-amz-expected-bucket-owner: [correct-account-id]"

View File

@@ -12,10 +12,10 @@ Für weitere Informationen über SNS siehe:
### Offen für Alle
Wenn Sie ein SNS-Thema über die Webkonsole konfigurieren, ist es möglich anzugeben, dass **jeder veröffentlichen und abonnieren kann**:
Wenn du ein SNS-Thema über die Webkonsole konfigurierst, ist es möglich anzugeben, dass **jeder veröffentlichen und abonnieren kann**:
<figure><img src="../../../images/image (212).png" alt=""><figcaption></figcaption></figure>
Wenn Sie also **die ARN von Themen** im Konto finden (oder potenzielle Namen für Themen brute-forcen), können Sie **überprüfen**, ob Sie **veröffentlichen** oder **abonnieren** können.
Wenn du also **die ARN der Themen** im Konto **findest** (oder potenzielle Namen für Themen bruteforced), kannst du **überprüfen**, ob du **veröffentlichen** oder **abonnieren** kannst.
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -14,8 +14,8 @@ Für weitere Informationen zu SQS siehe:
```
https://sqs.[region].amazonaws.com/[account-id]/{user_provided}
```
### Berechtigungen Überprüfen
### Berechtigungen überprüfen
Es ist möglich, eine SQS-Warteschlangenrichtlinie falsch zu konfigurieren und Berechtigungen für alle in AWS zu gewähren, um Nachrichten zu senden und zu empfangen. Wenn Sie also die ARN der Warteschlangen erhalten, versuchen Sie, ob Sie darauf zugreifen können.
Es ist möglich, eine SQS-Warteschlangenrichtlinie falsch zu konfigurieren und Berechtigungen für alle in AWS zu gewähren, um Nachrichten zu senden und zu empfangen. Wenn Sie die ARN von Warteschlangen erhalten, versuchen Sie, ob Sie auf sie zugreifen können.
{{#include ../../../banners/hacktricks-training.md}}