GCP - Network Docker Escape
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)
दोनों लेखों में जहां इस तकनीक का उल्लेख किया गया है, हमलावरों ने GCP द्वारा प्रबंधित Docker कंटेनर के अंदर root एक्सेस प्राप्त करने में सफलता पाई, जिसमें होस्ट नेटवर्क तक पहुंच (और क्षमताएं CAP_NET_ADMIN
और CAP_NET_RAW
) शामिल हैं।
Google Compute Engine इंस्टेंस पर, नेटवर्क ट्रैफ़िक की नियमित जांच plain HTTP requests की कई metadata instance पर 169.254.169.254
के लिए प्रकट करती है। Google Guest Agent, एक ओपन-सोर्स सेवा, अक्सर ऐसे अनुरोध करती है।
यह एजेंट metadata में परिवर्तनों की निगरानी करने के लिए डिज़ाइन किया गया है। विशेष रूप से, मेटाडेटा में SSH सार्वजनिक कुंजी के लिए एक फ़ील्ड शामिल है। जब मेटाडेटा में एक नई सार्वजनिक SSH कुंजी जोड़ी जाती है, तो एजेंट स्वचालित रूप से इसे .authorized_key
फ़ाइल में अधिकृत करता है। यदि आवश्यक हो, तो यह एक नया उपयोगकर्ता भी बना सकता है और उन्हें sudoers में जोड़ सकता है।
एजेंट परिवर्तनों की निगरानी करने के लिए सभी मेटाडेटा मानों को पुनरावृत्त करने के लिए एक अनुरोध भेजता है (GET /computeMetadata/v1/?recursive=true
)। यह अनुरोध मेटाडेटा सर्वर को केवल तब प्रतिक्रिया भेजने के लिए प्रेरित करने के लिए डिज़ाइन किया गया है जब पिछले पुनर्प्राप्ति के बाद मेटाडेटा में कोई परिवर्तन हुआ हो, जिसे एक Etag द्वारा पहचाना जाता है (wait_for_change=true&last_etag=
)। इसके अतिरिक्त, एक timeout पैरामीटर (timeout_sec=
) शामिल है। यदि निर्दिष्ट समय सीमा के भीतर कोई परिवर्तन नहीं होता है, तो सर्वर अपरिवर्तित मानों के साथ प्रतिक्रिया करता है।
यह प्रक्रिया IMDS (Instance Metadata Service) को 60 सेकंड के बाद प्रतिक्रिया देने की अनुमति देती है यदि कोई कॉन्फ़िगरेशन परिवर्तन नहीं हुआ है, जिससे फर्जी कॉन्फ़िगरेशन प्रतिक्रिया को मेहमान एजेंट में इंजेक्ट करने के लिए एक संभावित खिड़की बनती है।
एक हमलावर इस पर Man-in-the-Middle (MitM) attack करके इसका लाभ उठा सकता है, IMDS सर्वर से प्रतिक्रिया को स्पूफ करके और एक नई सार्वजनिक कुंजी डालकर। इससे होस्ट पर अनधिकृत SSH एक्सेस सक्षम हो सकता है।
हालांकि ARP स्पूफिंग Google Compute Engine नेटवर्क पर अप्रभावी है, rshijack का एक संशोधित संस्करण जो Ezequiel द्वारा विकसित किया गया है, पैकेट इंजेक्शन के लिए संचार में SSH उपयोगकर्ता को इंजेक्ट करने के लिए उपयोग किया जा सकता है।
rshijack का यह संस्करण ACK और SEQ नंबरों को कमांड-लाइन तर्क के रूप में इनपुट करने की अनुमति देता है, जिससे वास्तविक मेटाडेटा सर्वर प्रतिक्रिया से पहले प्रतिक्रिया को स्पूफ करना आसान हो जाता है। इसके अतिरिक्त, एक छोटी शेल स्क्रिप्ट का उपयोग विशेष रूप से तैयार किए गए पेलोड को लौटाने के लिए किया जाता है। यह पेलोड Google Guest Agent को wouter
उपयोगकर्ता बनाने के लिए ट्रिगर करता है जिसमें .authorized_keys
फ़ाइल में एक निर्दिष्ट सार्वजनिक कुंजी होती है।
स्क्रिप्ट मेटाडेटा सर्वर को Google Guest Agent को विभिन्न मेटाडेटा मानों के बारे में तुरंत सूचित करने से रोकने के लिए वही ETag का उपयोग करती है, इस प्रकार प्रतिक्रिया में देरी होती है।
स्पूफिंग को निष्पादित करने के लिए, निम्नलिखित चरण आवश्यक हैं:
Metadata सर्वर के लिए अनुरोधों की निगरानी करें tcpdump का उपयोग करके:
एक पंक्ति की तलाश करें जो इस तरह की हो:
सही ETAG के साथ नकली मेटाडेटा डेटा rshijack को भेजें:
यह कदम सार्वजनिक कुंजी को अधिकृत करता है, संबंधित निजी कुंजी के साथ SSH कनेक्शन सक्षम करता है।
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)