AWS - Abusing Lambda Extensions
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Lambda extensions कार्यों को विभिन्न निगरानी, अवलोकन, सुरक्षा, और शासन उपकरणों के साथ एकीकृत करके बढ़ाते हैं। ये एक्सटेंशन .zip आर्काइव का उपयोग करके Lambda लेयर्स के माध्यम से जोड़े जाते हैं या कंटेनर इमेज डिप्लॉयमेंट्स में शामिल होते हैं, और दो मोड में कार्य करते हैं: आंतरिक और बाहरी।
आंतरिक एक्सटेंशन रनटाइम प्रक्रिया के साथ विलीन होते हैं, इसके स्टार्टअप को भाषा-विशिष्ट पर्यावरण चर और रैपर स्क्रिप्ट का उपयोग करके संशोधित करते हैं। यह अनुकूलन विभिन्न रनटाइम्स पर लागू होता है, जिसमें Java Correto 8 और 11, Node.js 10 और 12, और .NET Core 3.1 शामिल हैं।
बाहरी एक्सटेंशन अलग प्रक्रियाओं के रूप में चलते हैं, Lambda फ़ंक्शन के जीवनचक्र के साथ संचालन संरेखण बनाए रखते हैं। वे विभिन्न रनटाइम्स के साथ संगत हैं जैसे Node.js 10 और 12, Python 3.7 और 3.8, Ruby 2.5 और 2.7, Java Corretto 8 और 11, .NET Core 3.1, और कस्टम रनटाइम्स।
अधिक जानकारी के लिए कैसे lambda extensions काम करते हैं, दस्तावेज़ देखें।
यह इस पोस्ट में प्रस्तावित तकनीक का सारांश है: https://www.clearvector.com/blog/lambda-spy/
यह पाया गया कि Lambda रनटाइम वातावरण में डिफ़ॉल्ट Linux कर्नेल “process_vm_readv” और “process_vm_writev” सिस्टम कॉल के साथ संकलित है। और सभी प्रक्रियाएँ एक ही उपयोगकर्ता आईडी के साथ चलती हैं, यहां तक कि बाहरी एक्सटेंशन के लिए बनाई गई नई प्रक्रिया भी। इसका मतलब है कि एक बाहरी एक्सटेंशन को डिज़ाइन के अनुसार Rapid की हीप मेमोरी तक पूर्ण पढ़ने और लिखने की पहुंच है।
इसके अलावा, जबकि Lambda एक्सटेंशन आह्वान घटनाओं की सदस्यता लेने की क्षमता रखते हैं, AWS इन एक्सटेंशनों को कच्चा डेटा नहीं दिखाता। यह सुनिश्चित करता है कि एक्सटेंशन संवेदनशील जानकारी तक पहुंच नहीं प्राप्त कर सकते जो HTTP अनुरोध के माध्यम से भेजी जाती है।
Init (Rapid) प्रक्रिया सभी API अनुरोधों की निगरानी करती है http://127.0.0.1:9001 जबकि Lambda एक्सटेंशन प्रारंभ होते हैं और किसी भी रनटाइम कोड के निष्पादन से पहले चलते हैं, लेकिन Rapid के बाद।
चर AWS_LAMBDA_RUNTIME_API
Rapid API के IP पते और पोर्ट नंबर को बच्चे रनटाइम प्रक्रियाओं और अतिरिक्त एक्सटेंशनों को इंगित करता है।
AWS_LAMBDA_RUNTIME_API
पर्यावरण चर को एक पोर्ट
में बदलकर, जिसके पास हम पहुंच रखते हैं, Lambda रनटाइम के भीतर सभी क्रियाओं को इंटरसेप्ट करना संभव है (मैन-इन-द-मिडल)। यह संभव है क्योंकि एक्सटेंशन Rapid Init के समान विशेषाधिकारों के साथ चलता है, और सिस्टम का कर्नेल प्रक्रिया मेमोरी में संशोधन की अनुमति देता है, जिससे पोर्ट नंबर को बदलना संभव होता है।
क्योंकि एक्सटेंशन किसी भी रनटाइम कोड से पहले चलते हैं, पर्यावरण चर को संशोधित करने से रनटाइम प्रक्रिया (जैसे, Python, Java, Node, Ruby) पर प्रभाव पड़ेगा जब यह शुरू होता है। इसके अलावा, हमारे बाद लोड किए गए एक्सटेंशन, जो इस चर पर निर्भर करते हैं, वे भी हमारे एक्सटेंशन के माध्यम से रूट करेंगे। यह सेटअप मैलवेयर को सुरक्षा उपायों या लॉगिंग एक्सटेंशनों को पूरी तरह से बायपास करने की अनुमति दे सकता है या सीधे रनटाइम वातावरण के भीतर।
उपकरण lambda-spy को मेमोरी लिखने और Lambda अनुरोधों से संवेदनशील जानकारी चुराने और यहां तक कि संशोधित करने के लिए बनाया गया था।
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)