AWS Codebuild - Token Leakage
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)
Prvo, proverite da li postoje bilo akreditivi izvora koji su konfigurisani koje biste mogli da iscurite:
Ako otkrijete da je autentifikacija, na primer, za Github postavljena na nalogu, možete izvući tu pristup (GH token ili OAuth token) tako što ćete naterati Codebuild da koristi određenu docker sliku za pokretanje izgradnje projekta.
U tu svrhu možete napraviti novi Codebuild projekat ili promeniti okruženje postojećeg da postavite Docker sliku.
Docker slika koju možete koristiti je https://github.com/carlospolop/docker-mitm. Ovo je vrlo osnovna Docker slika koja će postaviti env promenljive https_proxy
, http_proxy
i SSL_CERT_FILE
. Ovo će vam omogućiti da presretnete većinu saobraćaja hosta navedenog u https_proxy
i http_proxy
i verujete SSL CERT-u navedenom u SSL_CERT_FILE
.
Kreirajte i otpremite svoju Docker MitM sliku
Pratite uputstva iz repozitorijuma da postavite svoju proxy IP adresu i postavite svoj SSL certifikat i izgradite docker sliku.
NE POSTAVLJAJTE http_proxy
da ne biste presreli zahteve ka metadata endpoint-u.
Možete koristiti ngrok
kao ngrok tcp 4444
da postavite proxy na vaš host.
Kada izgradite Docker sliku, otpremite je na javni repo (Dockerhub, ECR...)
Postavite okruženje
Kreirajte novi Codebuild projekat ili izmenite okruženje postojećeg.
Postavite projekat da koristi prethodno generisanu Docker sliku.
Postavite MitM proxy na vašem hostu
Kao što je navedeno u Github repozitorijumu, možete koristiti nešto poput:
Verzija mitmproxy koja je korišćena je 9.0.1, prijavljeno je da sa verzijom 10 ovo možda neće raditi.
Pokrenite gradnju i zabeležite akreditive
Možete videti token u Authorization headeru:
Ovo se takođe može uraditi iz aws cli sa nečim poput
Codebuild projekti imaju podešavanje pod nazivom insecureSsl
koje je skriveno na vebu i može se promeniti samo putem API-ja.
Omogućavanje ovoga omogućava Codebuild-u da se poveže sa repozitorijumom bez provere sertifikata koji nudi platforma.
Prvo treba da enumerišete trenutnu konfiguraciju sa nečim poput:
Zatim, sa prikupljenim informacijama možete ažurirati postavku projekta insecureSsl
na True
. Sledeći je primer mog ažuriranja projekta, obratite pažnju na insecureSsl=True
na kraju (ovo je jedina stvar koju treba da promenite iz prikupljene konfiguracije).
Pored toga, dodajte i env varijable http_proxy i https_proxy koje upućuju na vaš tcp ngrok kao:
Zatim pokrenite osnovni primer sa https://github.com/synchronizing/mitm na portu koji su označili proxy varijable (http_proxy i https_proxy)
Na kraju, kliknite na Build the project, akreditivi će biti poslati u čistom tekstu (base64) na mitm port:
Ova ranjivost je ispravljena od strane AWS-a u nekom trenutku tokom nedelje 20. februara 2023. (mislim u petak). Tako da napadač više ne može da je zloupotrebi :)
Napadač sa povišenim dozvolama u CodeBuild-u mogao bi da iscuri Github/Bitbucket token koji je konfigurisan ili ako su dozvole konfigurirane putem OAuth, privremeni OAuth token korišćen za pristup kodu.
Napadač bi mogao dodati promenljive okruženja http_proxy i https_proxy u CodeBuild projekat koje upućuju na njegovu mašinu (na primer http://5.tcp.eu.ngrok.io:14972
).
Zatim, promenite URL github repozitorijuma da koristi HTTP umesto HTTPS, na primer: http://github.com/carlospolop-forks/TestActions
Zatim, pokrenite osnovni primer sa https://github.com/synchronizing/mitm na portu koji su označile proxy promenljive (http_proxy i https_proxy)
Na kraju, kliknite na Build the project, akreditivi će biti poslati u čistom tekstu (base64) na mitm port:
Sada će napadač moći da koristi token sa svoje mašine, da izlista sve privilegije koje ima i (zlo)upotrebi lakše nego korišćenjem CodeBuild servisa direktno.
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)