AWS - Step Functions Privesc
Last updated
Last updated
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Für weitere Informationen zu diesem AWS-Dienst, siehe:
AWS - Step Functions EnumDiese Privilegieneskalationstechniken erfordern die Nutzung einiger AWS Step Function-Ressourcen, um die gewünschten Privilegieneskalationsaktionen durchzuführen.
Um alle möglichen Aktionen zu überprüfen, könntest du zu deinem eigenen AWS-Konto gehen, die Aktion auswählen, die du verwenden möchtest, und die verwendeten Parameter einsehen, wie in:
Oder du könntest auch zur API-Dokumentation von AWS gehen und die Dokumentation zu jeder Aktion überprüfen:
states:TestState
& iam:PassRole
Ein Angreifer mit den Berechtigungen states:TestState
& iam:PassRole
kann jeden Zustand testen und jede IAM-Rolle an ihn übergeben, ohne eine vorhandene Zustandsmaschine zu erstellen oder zu aktualisieren, was unbefugten Zugriff auf andere AWS-Dienste mit den Berechtigungen der Rollen ermöglicht. Diese Berechtigungen können in Kombination zu umfangreichen unbefugten Aktionen führen, von der Manipulation von Workflows zur Datenänderung bis hin zu Datenlecks, Ressourcenmanipulation und Privilegieneskalation.
Die folgenden Beispiele zeigen, wie man einen Zustand testet, der einen Zugriffsschlüssel für den admin
-Benutzer erstellt, indem diese Berechtigungen und eine permissive Rolle der AWS-Umgebung genutzt werden. Diese permissive Rolle sollte mit einer hochprivilegierten Richtlinie verknüpft sein (zum Beispiel arn:aws:iam::aws:policy/AdministratorAccess
), die es dem Zustand ermöglicht, die Aktion iam:CreateAccessKey
auszuführen:
stateDefinition.json:
Befehl ausgeführt, um die Privilegieneskalation durchzuführen:
Potenzielle Auswirkungen: Unbefugte Ausführung und Manipulation von Workflows sowie Zugriff auf sensible Ressourcen, was zu erheblichen Sicherheitsverletzungen führen kann.
states:CreateStateMachine
& iam:PassRole
& (states:StartExecution
| states:StartSyncExecution
)Ein Angreifer mit states:CreateStateMachine
& iam:PassRole
wäre in der Lage, eine Zustandsmaschine zu erstellen und ihr jede IAM-Rolle zuzuweisen, was unbefugten Zugriff auf andere AWS-Dienste mit den Berechtigungen der Rolle ermöglicht. Im Gegensatz zur vorherigen Privilegieneskalationstechnik (states:TestState
& iam:PassRole
) wird diese nicht von selbst ausgeführt; Sie benötigen auch die Berechtigungen states:StartExecution
oder states:StartSyncExecution
(states:StartSyncExecution
ist nicht für Standard-Workflows verfügbar, nur für Ausdruckszustandsmaschinen) um eine Ausführung über die Zustandsmaschine zu starten.
Die folgenden Beispiele zeigen, wie man eine Zustandsmaschine erstellt, die einen Zugriffsschlüssel für den admin
-Benutzer erstellt und diesen Zugriffsschlüssel in einen von einem Angreifer kontrollierten S3-Bucket exfiltriert, indem diese Berechtigungen und eine großzügige Rolle der AWS-Umgebung genutzt werden. Diese großzügige Rolle sollte mit einer hochprivilegierten Richtlinie verknüpft sein (zum Beispiel arn:aws:iam::aws:policy/AdministratorAccess
), die es der Zustandsmaschine ermöglicht, die Aktionen iam:CreateAccessKey
und s3:putObject
auszuführen.
stateMachineDefinition.json:
Befehl ausgeführt, um die Zustandsmaschine zu erstellen:
Befehl ausgeführt, um eine Ausführung der zuvor erstellten Zustandsmaschine zu starten:
Der vom Angreifer kontrollierte S3-Bucket sollte Berechtigungen haben, um eine s3:PutObject-Aktion vom Opferkonto zu akzeptieren.
Potenzielle Auswirkungen: Unbefugte Ausführung und Manipulation von Workflows sowie Zugriff auf sensible Ressourcen, was zu erheblichen Sicherheitsverletzungen führen kann.
states:UpdateStateMachine
& (nicht immer erforderlich) iam:PassRole
Ein Angreifer mit der Berechtigung states:UpdateStateMachine
wäre in der Lage, die Definition einer Zustandsmaschine zu ändern und zusätzliche heimliche Zustände hinzuzufügen, die zu einer Privilegieneskalation führen könnten. Auf diese Weise wird, wenn ein legitimer Benutzer eine Ausführung der Zustandsmaschine startet, dieser neue bösartige heimliche Zustand ausgeführt und die Privilegieneskalation erfolgreich sein.
Je nachdem, wie permissiv die mit der Zustandsmaschine verbundene IAM-Rolle ist, würde ein Angreifer mit 2 Situationen konfrontiert werden:
Permissive IAM-Rolle: Wenn die mit der Zustandsmaschine verbundene IAM-Rolle bereits permissiv ist (sie hat beispielsweise die arn:aws:iam::aws:policy/AdministratorAccess
-Richtlinie angehängt), dann wäre die Berechtigung iam:PassRole
nicht erforderlich, um Privilegien zu eskalieren, da es nicht notwendig wäre, auch die IAM-Rolle zu aktualisieren; die Definition der Zustandsmaschine wäre ausreichend.
Nicht permissive IAM-Rolle: Im Gegensatz zum vorherigen Fall würde ein Angreifer hier auch die Berechtigung iam:PassRole
benötigen, da es notwendig wäre, eine permissive IAM-Rolle mit der Zustandsmaschine zu verknüpfen, zusätzlich zur Änderung der Definition der Zustandsmaschine.
Die folgenden Beispiele zeigen, wie man eine legitime Zustandsmaschine aktualisiert, die nur eine HelloWorld Lambda-Funktion aufruft, um einen zusätzlichen Zustand hinzuzufügen, der den Benutzer unprivilegedUser
zur administrator
IAM-Gruppe hinzufügt. Auf diese Weise wird, wenn ein legitimer Benutzer eine Ausführung der aktualisierten Zustandsmaschine startet, dieser neue bösartige Stealth-Zustand ausgeführt und die Privilegieneskalation wird erfolgreich sein.
Wenn die Zustandsmaschine keine permissive IAM-Rolle zugeordnet hat, wäre auch die Berechtigung iam:PassRole
erforderlich, um die IAM-Rolle zu aktualisieren, um eine permissive IAM-Rolle zuzuordnen (zum Beispiel eine mit der angehängten arn:aws:iam::aws:policy/AdministratorAccess
-Richtlinie).
Befehl ausgeführt, um die legitime Zustandsmaschine zu aktualisieren:
Potenzielle Auswirkungen: Unbefugte Ausführung und Manipulation von Workflows sowie Zugriff auf sensible Ressourcen, was zu erheblichen Sicherheitsverletzungen führen kann.
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)