Abusing Docker Socket for Privilege Escalation
कुछ अवसरों पर आपके पास केवल docker socket तक पहुंच होती है और आप इसका उपयोग privileges बढ़ाने के लिए करना चाहते हैं। कुछ क्रियाएं बहुत संदिग्ध हो सकती हैं और आप उनसे बचना चाह सकते हैं, इसलिए यहां आपको विभिन्न फ्लैग्स मिलेंगे जो privileges बढ़ाने के लिए उपयोगी हो सकते हैं:
माउंट के माध्यम से
आप filesystem के विभिन्न भागों को रूट के रूप में चल रहे कंटेनर में माउंट कर सकते हैं और उन्हें एक्सेस कर सकते हैं। आप कंटेनर के अंदर privileges बढ़ाने के लिए माउंट का भी दुरुपयोग कर सकते हैं।
-v /:/host
-> होस्ट filesystem को कंटेनर में माउंट करें ताकि आप होस्ट filesystem को पढ़ सकें।यदि आप कंटेनर में होते हुए भी होस्ट की तरह महसूस करना चाहते हैं तो आप निम्नलिखित फ्लैग्स का उपयोग करके अन्य रक्षा तंत्रों को अक्षम कर सकते हैं:
--privileged
--cap-add=ALL
--security-opt apparmor=unconfined
--security-opt seccomp=unconfined
-security-opt label:disable
--pid=host
--userns=host
--uts=host
--cgroupns=host
**
--device=/dev/sda1 --cap-add=SYS_ADMIN --security-opt apparmor=unconfined
** -> यह पिछली विधि के समान है, लेकिन यहां हम डिवाइस डिस्क को माउंट कर रहे हैं। फिर, कंटेनर के अंदरmount /dev/sda1 /mnt
चलाएं और आप/mnt
में होस्ट filesystem को एक्सेस कर सकते हैंमाउंट करने के लिए
</dev/sda1>
डिवाइस खोजने के लिए होस्ट मेंfdisk -l
चलाएं-v /tmp:/host
-> यदि किसी कारण से आप केवल कुछ निर्देशिका को होस्ट से माउंट कर सकते हैं और आपके पास होस्ट के अंदर एक्सेस है। इसे माउंट करें और माउंट की गई निर्देशिका में suid के साथ एक/bin/bash
बनाएं ताकि आप इसे होस्ट से चला सकें और रूट तक एस्केलेट कर सकें।
ध्यान दें कि शायद आप /tmp
फोल्डर को माउंट नहीं कर सकते हैं लेकिन आप एक अलग लिखने योग्य फोल्डर को माउंट कर सकते हैं। लिखने योग्य निर्देशिकाओं को खोजने के लिए आप उपयोग कर सकते हैं: find / -writable -type d 2>/dev/null
ध्यान दें कि लिनक्स मशीन की सभी निर्देशिकाएं suid बिट का समर्थन नहीं करेंगी! suid बिट का समर्थन करने वाली निर्देशिकाओं की जांच करने के लिए mount | grep -v "nosuid"
चलाएं। उदाहरण के लिए आमतौर पर /dev/shm
, /run
, /proc
, /sys/fs/cgroup
और /var/lib/lxcfs
suid बिट का समर्थन नहीं करते हैं।
यह भी ध्यान दें कि यदि आप /etc
या किसी अन्य फोल्डर को माउंट कर सकते हैं जिसमें कॉन्फ़िगरेशन फाइलें होती हैं, तो आप उन्हें डॉकर कंटेनर से रूट के रूप में बदल सकते हैं ताकि होस्ट में उनका दुरुपयोग करके privileges बढ़ा सकें (शायद /etc/shadow
में संशोधन करके)
कंटेनर से बचना
--privileged
-> इस फ्लैग के साथ आप कंटेनर से सभी अलगाव को हटा देते हैं। रूट के रूप में privileged कंटेनर से बचने की तकनीकों की जांच करें docker-breakout-privilege-escalation/#automatic-enumeration-and-escape।--cap-add=<CAPABILITY/ALL> [--security-opt apparmor=unconfined] [--security-opt seccomp=unconfined] [-security-opt label:disable]
-> capabilities का दुरुपयोग करके एस्केलेट करने के लिए, कंटेनर को वह क्षमता प्रदान करें और अन्य सुरक्षा विधियों को अक्षम करें जो एक्सप्लॉइट को काम करने से रोक सकते हैं।
Curl
इस पृष्ठ पर हमने docker फ्लैग्स का उपयोग करके privileges बढ़ाने के तरीकों पर चर्चा की है, आप इन तरीकों का दुरुपयोग करने के तरीके curl कमांड का उपयोग करके पृष्ठ में पा सकते हैं:
pageAuthZ& AuthN - Docker Access Authorization PluginLast updated