AWS - Steal Lambda Requests
Last updated
Last updated
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE) GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
Slicer एक प्रक्रिया है जो कंटेनर के बाहर है और invocations को init प्रक्रिया को भेजती है।
Init प्रक्रिया पोर्ट 9001 पर सुनती है जो कुछ दिलचस्प एंडपॉइंट्स को उजागर करती है:
/2018-06-01/runtime/invocation/next
– अगली invocation घटना प्राप्त करें
/2018-06-01/runtime/invocation/{invoke-id}/response
– invoke के लिए हैंडलर प्रतिक्रिया लौटाएं
/2018-06-01/runtime/invocation/{invoke-id}/error
– एक निष्पादन त्रुटि लौटाएं
bootstrap.py में एक लूप है जो init प्रक्रिया से invocations प्राप्त करता है और उन्हें संभालने के लिए उपयोगकर्ता के कोड को कॉल करता है (/next
).
अंततः, bootstrap.py init को response भेजता है
ध्यान दें कि bootstrap उपयोगकर्ता के कोड को एक मॉड्यूल के रूप में लोड करता है, इसलिए उपयोगकर्ता के कोड द्वारा किया गया कोई भी कोड निष्पादन वास्तव में इस प्रक्रिया में हो रहा है।
इस हमले का लक्ष्य उपयोगकर्ता के कोड को एक दुर्भावनापूर्ण bootstrap.py
प्रक्रिया को निष्पादित करना है जो उस bootstrap.py
प्रक्रिया के अंदर है जो कमजोर अनुरोध को संभालती है। इस तरह, दुर्भावनापूर्ण bootstrap प्रक्रिया init प्रक्रिया के साथ बातचीत करना शुरू कर देगी ताकि अनुरोधों को संभाला जा सके जबकि वैध bootstrap फंस गया है जो दुर्भावनापूर्ण को चला रहा है, इसलिए यह init प्रक्रिया से अनुरोध नहीं मांगेगा।
यह एक सरल कार्य है क्योंकि उपयोगकर्ता का कोड वैध bootstrap.py
प्रक्रिया द्वारा निष्पादित किया जा रहा है। इसलिए हमलावर कर सकता है:
Init प्रक्रिया को वर्तमान invocation का एक नकली परिणाम भेजें, ताकि init सोचता है कि bootstrap प्रक्रिया अधिक invocations की प्रतीक्षा कर रही है।
एक अनुरोध /${invoke-id}/response
पर भेजा जाना चाहिए
Invoke-id को वैध bootstrap.py
प्रक्रिया के स्टैक से inspect पायथन मॉड्यूल का उपयोग करके प्राप्त किया जा सकता है (जैसा कि यहां प्रस्तावित है) या बस इसे फिर से /2018-06-01/runtime/invocation/next
पर अनुरोध करके प्राप्त किया जा सकता है (जैसा कि यहां प्रस्तावित है).
अगली invocations को संभालने के लिए एक दुर्भावनापूर्ण boostrap.py
निष्पादित करें
छिपाने के उद्देश्यों के लिए, हमलावर के नियंत्रित C2 को lambda invocations पैरामीटर भेजना संभव है और फिर अनुरोधों को सामान्य रूप से संभालें।
इस हमले के लिए, bootstrap.py
का मूल कोड सिस्टम से या github से प्राप्त करना, दुर्भावनापूर्ण कोड जोड़ना और इसे वर्तमान lambda invocation से चलाना पर्याप्त है।
एक RCE भेद्यता खोजें।
एक दुर्भावनापूर्ण bootstrap उत्पन्न करें (जैसे https://raw.githubusercontent.com/carlospolop/lambda_bootstrap_switcher/main/backdoored_bootstrap.py)
दुर्भावनापूर्ण bootstrap निष्पादित करें।
आप इन कार्यों को आसानी से चलाकर कर सकते हैं:
For more info check https://github.com/carlospolop/lambda_bootstrap_switcher
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)