release_agent exploit - Relative Paths to PIDs
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)
अधिक जानकारी के लिए https://ajxchapman.github.io/containers/2020/11/19/privileged-container-escape.html से ब्लॉग पोर्ट देखें। यह केवल एक सारांश है:
यह तकनीक कंटेनर के भीतर से होस्ट कोड निष्पादित करने के लिए एक विधि का वर्णन करती है, जो स्टोरेज-ड्राइवर कॉन्फ़िगरेशन द्वारा उत्पन्न चुनौतियों को पार करती है जो होस्ट पर कंटेनर की फ़ाइल प्रणाली पथ को अस्पष्ट करती हैं, जैसे कि काता कंटेनर या विशिष्ट devicemapper
सेटिंग्स।
मुख्य चरण:
प्रोसेस आईडी (PIDs) का पता लगाना: लिनक्स छद्म-फ़ाइल प्रणाली में /proc/<pid>/root
प्रतीकात्मक लिंक का उपयोग करके, कंटेनर के भीतर किसी भी फ़ाइल को होस्ट की फ़ाइल प्रणाली के सापेक्ष एक्सेस किया जा सकता है। यह होस्ट पर कंटेनर की फ़ाइल प्रणाली पथ को जानने की आवश्यकता को दरकिनार करता है।
PID बाशिंग: होस्ट पर PIDs के माध्यम से खोजने के लिए एक ब्रूट फोर्स दृष्टिकोण का उपयोग किया जाता है। यह /proc/<pid>/root/<file>
पर एक विशिष्ट फ़ाइल की उपस्थिति की जांच करके किया जाता है। जब फ़ाइल मिलती है, तो यह संकेत करता है कि संबंधित PID उस प्रक्रिया से संबंधित है जो लक्षित कंटेनर के भीतर चल रही है।
निष्पादन को ट्रिगर करना: अनुमानित PID पथ को cgroups release_agent
फ़ाइल में लिखा जाता है। यह क्रिया release_agent
के निष्पादन को ट्रिगर करती है। इस चरण की सफलता को आउटपुट फ़ाइल के निर्माण की जांच करके पुष्टि की जाती है।
शोषण प्रक्रिया में अधिक विस्तृत क्रियाओं का एक सेट शामिल है, जिसका उद्देश्य कंटेनर के भीतर चल रही प्रक्रिया के सही PID का अनुमान लगाकर होस्ट पर एक पेलोड निष्पादित करना है। यह इस प्रकार विकसित होता है:
पर्यावरण प्रारंभ करें: होस्ट पर एक पेलोड स्क्रिप्ट (payload.sh
) तैयार की जाती है, और cgroup हेरफेर के लिए एक अद्वितीय निर्देशिका बनाई जाती है।
पेलोड तैयार करें: पेलोड स्क्रिप्ट, जिसमें होस्ट पर निष्पादित होने वाले आदेश होते हैं, लिखी जाती है और इसे निष्पादन योग्य बनाया जाता है।
Cgroup सेट करें: cgroup को माउंट और कॉन्फ़िगर किया जाता है। यह सुनिश्चित करने के लिए notify_on_release
ध्वज सेट किया जाता है कि जब cgroup को जारी किया जाता है तो पेलोड निष्पादित होता है।
ब्रूट फोर्स PID: एक लूप संभावित PIDs के माध्यम से दोहराता है, प्रत्येक अनुमानित PID को release_agent
फ़ाइल में लिखता है। यह प्रभावी रूप से पेलोड स्क्रिप्ट को release_agent
के रूप में सेट करता है।
निष्पादन को ट्रिगर और जांचें: प्रत्येक PID के लिए, cgroup का cgroup.procs
लिखा जाता है, यदि PID सही है तो release_agent
के निष्पादन को ट्रिगर करता है। लूप तब तक जारी रहता है जब तक पेलोड स्क्रिप्ट का आउटपुट नहीं मिल जाता, जो सफल निष्पादन को इंगित करता है।
ब्लॉग पोस्ट से PoC:
सीखें और AWS हैकिंग का अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE) सीखें और GCP हैकिंग का अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)