AWS - EKS Post Exploitation
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Za više informacija proverite
AWS - EKS EnumAko imate dozvolu eks:AccessKubernetesApi
možete videti Kubernetes objekte putem AWS EKS konzole (Learn more).
Easy way:
Nije tako lak način:
Ako možete dobiti token sa aws eks get-token --name <cluster_name>
ali nemate dozvole za dobijanje informacija o klasteru (describeCluster), možete pripremiti svoj ~/.kube/config
. Međutim, imajući token, još uvek vam je potreban url endpoint za povezivanje (ako ste uspeli da dobijete JWT token iz poda pročitajte ovde) i ime klastera.
U mom slučaju, nisam našao informacije u CloudWatch logovima, ali sam pronašao u LaunchTemplates userData i u EC2 mašinama u userData takođe. Ove informacije možete lako videti u userData, na primer u sledećem primeru (ime klastera je bilo cluster-name):
Kreator EKS klastera će UVEK moći da uđe u deo kubernetes klastera grupe system:masters
(k8s admin). U trenutku pisanja ovog teksta ne postoji direktan način da se sazna ko je kreirao klaster (možete proveriti CloudTrail). I ne postoji način da se ukloni ta privilegija.
Način da se dodeli pristup K8s više AWS IAM korisnicima ili rolama je korišćenjem configmap aws-auth
.
Stoga, svako ko ima pristup za pisanje na config mapu aws-auth
će moći da kompromituje ceo klaster.
Za više informacija o tome kako da dodelite dodatne privilegije IAM rolama i korisnicima u isto ili različitoj računu i kako da zloupotrebite ovo da privesc proverite ovu stranicu.
Proverite takođe ovaj sjajan post da saznate kako funkcioniše autentifikacija IAM -> Kubernetes.
Moguće je omogućiti OpenID autentifikaciju za kubernetes servisni nalog da im omogući da preuzmu uloge u AWS-u. Saznajte kako to funkcioniše na ovoj stranici.
Nisam pronašao nikakvu dokumentaciju koja objašnjava kriterijume za 'dva karaktera' i 'broj'. Ali, radeći neke testove u svoje ime, primetio sam da se ovi ponavljaju:
gr7
yl4
U svakom slučaju, to su samo 3 karaktera koje možemo bruteforce-ovati. Koristite ispod navedeni skript za generisanje liste.
Тада са wfuzz
Zapamtite da zamenite & .
Ako napadač dobije akreditive AWS-a sa dozvolama za EKS. Ako napadač konfiguriše svoj kubeconfig
(bez pozivanja update-kubeconfig
) kao što je objašnjeno ranije, get-token
ne generiše logove u Cloudtrail-u jer ne komunicira sa AWS API-jem (samo kreira token lokalno).
Dakle, kada napadač komunicira sa EKS klasterom, cloudtrail neće zabeležiti ništa u vezi sa ukradenim korisnikom i pristupom.
Napomena da EKS klaster može imati omogućene logove koji će zabeležiti ovaj pristup (iako su po defaultu isključeni).
Po defaultu, korisnik ili uloga koja je kreirala klaster uvek će imati administratorske privilegije nad klasterom. I to je jedini "siguran" pristup koji AWS može imati nad Kubernetes klasterom.
Dakle, ako napadač kompromituje klaster koristeći fargate i ukloni sve druge administratore i obriše AWS korisnika/ulogu koja je kreirala klaster, napadač bi mogao da otme klasterr.
Napomena da ako je klaster koristio EC2 VM-ove, moglo bi biti moguće dobiti administratorske privilegije sa Node-a i povratiti klaster.
U stvari, ako klaster koristi Fargate, mogli biste EC2 čvorove ili prebaciti sve na EC2 klaster i povratiti ga pristupajući tokenima u čvoru.
Dekodiranjem JWT tokena dobijamo id klastera i takođe region. Znajući da je standardni format za EKS url
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)