mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-01 15:35:51 -08:00
58 lines
3.5 KiB
Markdown
58 lines
3.5 KiB
Markdown
# AWS - ECS Post Exploitation
|
|
|
|
{{#include ../../../banners/hacktricks-training.md}}
|
|
|
|
## ECS
|
|
|
|
Für weitere Informationen siehe:
|
|
|
|
{{#ref}}
|
|
../aws-services/aws-ecs-enum.md
|
|
{{#endref}}
|
|
|
|
### Host IAM-Rollen
|
|
|
|
In ECS kann eine **IAM-Rolle der Aufgabe** zugewiesen werden, die innerhalb des Containers ausgeführt wird. **Wenn** die Aufgabe innerhalb einer **EC2**-Instanz ausgeführt wird, hat die **EC2-Instanz** eine **andere IAM**-Rolle, die ihr zugeordnet ist.\
|
|
Das bedeutet, dass, wenn es Ihnen gelingt, eine ECS-Instanz zu **kompromittieren**, Sie potenziell die **IAM-Rolle, die mit dem ECR und der EC2-Instanz verbunden ist, erhalten können**. Für weitere Informationen darüber, wie Sie diese Anmeldeinformationen erhalten können, siehe:
|
|
|
|
{{#ref}}
|
|
https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf
|
|
{{#endref}}
|
|
|
|
> [!CAUTION]
|
|
> Beachten Sie, dass, wenn die EC2-Instanz IMDSv2 durchsetzt, [**laut den Dokumenten**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-v2-how-it-works.html) die **Antwort der PUT-Anfrage** ein **Hop-Limit von 1** haben wird, was es unmöglich macht, auf die EC2-Metadaten von einem Container innerhalb der EC2-Instanz zuzugreifen.
|
|
|
|
### Privesc zum Knoten, um Anmeldeinformationen und Geheimnisse anderer Container zu stehlen
|
|
|
|
Darüber hinaus verwendet EC2 Docker, um ECS-Aufgaben auszuführen. Wenn Sie also zum Knoten entkommen oder **auf den Docker-Socket zugreifen** können, können Sie **überprüfen**, welche **anderen Container** ausgeführt werden, und sogar **in sie eindringen** und **ihre angehängten IAM-Rollen stehlen**.
|
|
|
|
#### Container auf dem aktuellen Host ausführen
|
|
|
|
Darüber hinaus hat die **EC2-Instanzrolle** normalerweise genügend **Berechtigungen**, um den **Zustand der Containerinstanz** der EC2-Instanzen, die als Knoten im Cluster verwendet werden, zu **aktualisieren**. Ein Angreifer könnte den **Zustand einer Instanz auf DRAINING** ändern, dann wird ECS **alle Aufgaben von ihr entfernen** und die, die als **REPLICA** ausgeführt werden, werden **in einer anderen Instanz ausgeführt,** möglicherweise innerhalb der **Instanz des Angreifers**, sodass er **ihre IAM-Rollen** und potenziell sensible Informationen aus dem Container stehlen kann.
|
|
```bash
|
|
aws ecs update-container-instances-state \
|
|
--cluster <cluster> --status DRAINING --container-instances <container-instance-id>
|
|
```
|
|
Die gleiche Technik kann durch **das Abmelden der EC2-Instanz vom Cluster** durchgeführt werden. Dies ist potenziell weniger heimlich, aber es wird **die Aufgaben zwingen, auf anderen Instanzen ausgeführt zu werden:**
|
|
```bash
|
|
aws ecs deregister-container-instance \
|
|
--cluster <cluster> --container-instance <container-instance-id> --force
|
|
```
|
|
Eine letzte Technik, um die erneute Ausführung von Aufgaben zu erzwingen, besteht darin, ECS anzuzeigen, dass der **Task oder Container gestoppt wurde**. Es gibt 3 potenzielle APIs, um dies zu tun:
|
|
```bash
|
|
# Needs: ecs:SubmitTaskStateChange
|
|
aws ecs submit-task-state-change --cluster <value> \
|
|
--status STOPPED --reason "anything" --containers [...]
|
|
|
|
# Needs: ecs:SubmitContainerStateChange
|
|
aws ecs submit-container-state-change ...
|
|
|
|
# Needs: ecs:SubmitAttachmentStateChanges
|
|
aws ecs submit-attachment-state-changes ...
|
|
```
|
|
### Sensible Informationen aus ECR-Containern stehlen
|
|
|
|
Die EC2-Instanz wird wahrscheinlich auch die Berechtigung `ecr:GetAuthorizationToken` haben, die es ihr ermöglicht, **Bilder herunterzuladen** (du könntest nach sensiblen Informationen darin suchen).
|
|
|
|
{{#include ../../../banners/hacktricks-training.md}}
|