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