AWS - EKS Post Exploitation
EKS
Za više informacija pogledajte
AWS - EKS EnumNabrojavanje klastera iz AWS konzole
Ako imate dozvolu eks:AccessKubernetesApi
možete videti Kubernetes objekte putem AWS EKS konzole (Saznajte više).
Povezivanje sa AWS Kubernetes klasterom
Jednostavan način:
Nije tako jednostavan način:
Ako možete dobiti token sa aws eks get-token --name <ime_klastera>
ali nemate dozvole da dobijete informacije o klasteru (describeCluster), možete pripremiti svoj ~/.kube/config
. Međutim, imajući token, i dalje 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 pronašao informacije u CloudWatch zapisima, ali sam pronašao ih u userData LaunchTemaplates i u EC2 mašinama takođe. Možete lako videti ove informacije u userData, na primer u sledećem primeru (ime klastera je bilo cluster-name):
Od AWS-a do Kubernetesa
Kreator EKS klastera uvek će moći da pristupi delu 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). Takođe, ne postoji način da se ukloni ta privilegija.
Način da se omogući pristup nad K8s više AWS IAM korisnicima ili ulogama je korišćenjem configmap aws-auth
.
Stoga, svako ko ima pristup za pisanje nad config mapom aws-auth
će moći da ugrozi ceo klaster.
Za više informacija o tome kako dodeliti dodatne privilegije IAM ulogama i korisnicima u istom ili drugom nalogu i kako to zloupotrebiti pogledajte ovu stranicu.
Pogledajte takođe ovaj sjajan post da saznate kako autentikacija IAM -> Kubernetes funkcioniše.
Od Kubernetesa do AWS-a
Moguće je omogućiti OpenID autentikaciju za kubernetes servisni nalog kako bi im se dozvolilo da preuzmu uloge u AWS-u. Saznajte kako ovo funkcioniše na ovoj stranici.
DOBIJANJE Api Server Endpoint-a iz JWT Tokena
Dekodiranjem JWT tokena dobijamo ID klastera i takođe region. Znajući da je standardni format za EKS URL
Nisam pronašao nikakvu dokumentaciju koja objašnjava kriterijume za 'dva znaka' i 'broj'. Međutim, praveći neke testove sam primetio da se često pojavljuju sledeći:
gr7
yl4
U svakom slučaju, pošto su samo 3 znaka, možemo ih probati silom. Koristite sledeći skript za generisanje liste
Zatim sa wfuzzom
Zamenite & .
Zaobilaženje CloudTrail-a
Ako napadač dobije akreditive za AWS sa dozvolom nad EKS-om. Ako napadač konfiguriše svoj kubeconfig
(bez pozivanja update-kubeconfig
) kako je objašnjeno ranije, get-token
ne generiše zapise u CloudTrail-u jer ne interaguje sa AWS API-jem (samo kreira token lokalno).
Dakle, kada napadač komunicira sa EKS klasterom, cloudtrail neće zabeležiti ništa što se odnosi na korisnika koji je ukraden i pristupio mu.
Imajte na umu da bi EKS klaster mogao imati omogućene zapise koji će zabeležiti ovaj pristup (mada su podrazumevano onemogućeni).
EKS Otkup?
Podrazumevano, korisnik ili uloga koja je kreirala klaster uvek će imati administratorske privilegije nad klasterom. I to je jedini "siguran" pristup koji će AWS imati nad Kubernetes klasterom.
Dakle, ako napadač kompromituje klaster koristeći fargate i ukloni sve ostale admine i obriše AWS korisnika/rolu koja je kreirala klaster, napadač bi mogao oteti klasterr.
Imajte na umu da ako klaster koristi EC2 VM-ove, moguće je dobiti administratorske privilegije sa Node i povratiti klaster.
Zapravo, ako klaster koristi Fargate, mogli biste EC2 čvorove ili premestiti sve na EC2 do klastera i povratiti ga pristupajući tokenima na čvoru.
Last updated