AWS - EKS Post Exploitation
EKS
Vir meer inligting kyk
AWS - EKS EnumEnumerate die groep vanaf die AWS Konsole
As jy die toestemming eks:AccessKubernetesApi
het, kan jy Kubernetes voorwerpe sien via die AWS EKS konsole (Leer meer).
Koppel aan AWS Kubernetes Groep
Maklike manier:
Nie so maklik nie:
As jy 'n token kan kry met aws eks get-token --name <cluster_name>
maar jy het nie toestemmings om klasterinligting te kry (describeCluster) nie, kan jy jou eie ~/.kube/config
voorberei. Tog, selfs met die token, het jy nog steeds die url eindpunt nodig om mee te verbind (as jy daarin geslaag het om 'n JWT-token van 'n peul te kry, lees hier) en die naam van die klas.
In my geval het ek nie die inligting in CloudWatch-logboeke gevind nie, maar ek het dit in LaunchTemplates userData en ook in EC2-masjiene in userData gevind. Jy kan hierdie inligting in userData maklik sien, byvoorbeeld in die volgende voorbeeld (die klasnaam was cluster-name):
Van AWS na Kubernetes
Die skepper van die EKS groep sal altyd toegang hê tot die kubernetes groep deel van die system:masters
(k8s admin). Op die oomblik van hierdie skrywe is daar geen direkte manier om te vind wie die groep geskep het (jy kan CloudTrail nagaan). En daar is geen manier om daardie voorreg te verwyder nie.
Die manier om toegang tot K8s aan meer AWS IAM-gebruikers of rolle te gee is deur die configmap aws-auth
te gebruik.
Daarom sal enige iemand met skryftoegang tot die config map aws-auth
in staat wees om die hele groep in gevaar te stel.
Vir meer inligting oor hoe om ekstra voorregte aan IAM-rolle & gebruikers in dieselfde of 'n ander rekening te gee en hoe om dit te misbruik kyk na hierdie bladsy.
Kyk ook na hierdie wonderlike pos om te leer hoe die verifikasie IAM -> Kubernetes werk.
Van Kubernetes na AWS
Dit is moontlik om OpenID-verifikasie vir kubernetes-diensrekening toe te laat om hulle in staat te stel om rolle in AWS aan te neem. Leer hoe dit werk op hierdie bladsy.
Kry Api-bediener-eindpunt van 'n JWT-token
Dekodeer die JWT-token om die groep-ID en ook die streek te kry. Wetende dat die standaard formaat vir EKS url is
Ek het nie enige dokumentasie gevind wat die kriteria vir die 'twee karakters' en die 'getal' verduidelik nie. Maar deur 'n paar toetse aan my kant te doen, sien ek dat hierdie gereeld voorkom:
gr7
yl4
Hoe dan ook, aangesien dit net 3 karakters is, kan ons hulle kragtig aanval. Gebruik die onderstaande skripsie om die lys te genereer
Dan met wfuzz
Onthou om & te vervang.
Om CloudTrail te omseil
Indien 'n aanvaller geloofsbriewe van 'n AWS met toestemming oor 'n EKS bekom. As die aanvaller sy eie kubeconfig
configureer (sonder om update-kubeconfig
te roep) soos voorheen verduidelik, genereer die get-token
nie logboeke in Cloudtrail nie omdat dit nie met die AWS API interaksieer nie (dit skep net die token plaaslik).
Dus wanneer die aanvaller met die EKS-cluster praat, sal cloudtrail niks log nie wat verband hou met die gesteelde gebruiker wat dit benader.
Let daarop dat die EKS-cluster dalk logboeke geaktiveer het wat hierdie toegang sal log (alhoewel dit standaard gedeaktiveer is).
EKS Losgeld?
Standaard sal die gebruiker of rol wat 'n cluster geskep het altyd administratiewe regte oor die cluster hê. En dit is die enigste "veilige" toegang wat AWS oor die Kubernetes-cluster sal hê.
Dus, as 'n aanvaller 'n cluster kompromitteer deur fargate te gebruik en alle ander administrateurs verwyder en die AWS-gebruiker/rol wat die Cluster geskep het, verwyder, kon die aanvaller die cluster gegijzel hetr.
Let daarop dat as die cluster EC2 VM's gebruik het, dit moontlik sou wees om Administratiewe regte van die Node te kry en die cluster te herstel.
Eintlik, as die cluster Fargate gebruik, kan jy EC2-nodes gebruik of alles na EC2 skuif om die cluster te herstel deur toegang tot die tokens in die node te verkry.
Last updated