
खराब तरीके से कॉन्फ़िगर किए गए Kubernetes सर्वरों पर भेजने के लिए कच्चे TCP/IP पैकेट तैयार करना - CVE-2020-8558 PoC
एक रेपो जिसमें एक पायथन स्क्रिप्ट है जिसका उपयोग रॉ TCP/IP पैकेट्स बनाने के लिए किया जा सकता है।
कुबेरनेट्स में घोषित एक कमजोरी (kube-proxy: CVE-2020-8558) के बाद मार्टियन पैकेट्स का परीक्षण करने के लिए उपयोग किया जाता है। यह PoC पॉड -> नोड (होस्ट) लोकलहोस्ट बाउंड्री बाईपास को कवर करता है।
कमजोरी के नोड -> नोड भाग के लिए एक सरल और मजबूत PoC के लिए, यहाँ देखें।
पैकेट क्राफ्टिंग क्रेडिट्स:
https://inc0x0.com/tcp-ip-packets-introduction/tcp-ip-packets-3-manually-create-and-send-raw-tcp-ip-packets/
https://gist.github.com/NickKaramoff/b06520e3cb458ac7264cab1c51fa33d6
एक Dockerfile और पॉड मेनिफेस्ट है जो एक्सप्लॉइट को कुबेरनेट्स पर तैनात करने के लिए है ताकि आसानी से यह साबित किया जा सके कि क्लस्टर कमजोर है या नहीं। स्क्रिप्ट को अपडेट किया गया है ताकि यह मास्टर नोड्स पर चलने वाले अनऑथेंटिकेटेड kube api सर्वर (पोर्ट 8080) को लक्षित करे (मेनिफेस्ट पॉड को मास्टर नोड पर तैनात करेगा)।
एक्सप्लॉइट kube apiserver के REST API का उपयोग करके आपके क्लस्टर के डिफ़ॉल्ट नेमस्पेस में youve-been-pwned नाम से एक पॉड बनाएगा। यह पॉड बस एक अनंत लूप में टेक्स्ट इको करता है और इसे मैन्युअल रूप से हटाने की आवश्यकता होगी।
मुझे कुछ क्लस्टर (cilium चलाने वाले) पर समस्याएँ हुईं जब कंटेनर निर्माण पर तुरंत प्रक्रिया शुरू की गई, जहाँ प्रारंभिक syn भेजने के बाद होस्ट से कोई syn/ack प्राप्त नहीं हुआ। मैंने start.sh स्क्रिप्ट के साथ इसके चारों ओर एक हैक किया, जो एक्सप्लॉइट शुरू करने से पहले नेटवर्क के चालू होने की जाँच करता है - इससे मदद मिलती दिखी।