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)
Najpierw sprawdź, czy są skonfigurowane jakiekolwiek poświadczenia źródłowe, które możesz wyciekować:
Jeśli stwierdzisz, że uwierzytelnienie do na przykład Github jest ustawione w koncie, możesz ekstrahować ten dostęp (token GH lub token OAuth) poprzez sprawienie, że Codebuild użyje konkretnego obrazu docker do uruchomienia budowy projektu.
W tym celu możesz utworzyć nowy projekt Codebuild lub zmienić środowisko istniejącego, aby ustawić obraz Docker.
Obraz Docker, którego możesz użyć, to https://github.com/carlospolop/docker-mitm. To bardzo podstawowy obraz Docker, który ustawi zmienne środowiskowe https_proxy
, http_proxy
i SSL_CERT_FILE
. To pozwoli ci przechwycić większość ruchu hosta wskazanego w https_proxy
i http_proxy
oraz zaufać certyfikatowi SSL wskazanemu w SSL_CERT_FILE
.
Utwórz i prześlij swój własny obraz Docker MitM
Postępuj zgodnie z instrukcjami repozytorium, aby ustawić swój adres IP proxy i ustawić swój certyfikat SSL oraz zbudować obraz docker.
NIE USTAWIAJ http_proxy
, aby nie przechwytywać żądań do punktu końcowego metadanych.
Możesz użyć ngrok
jak ngrok tcp 4444
, aby ustawić proxy do swojego hosta.
Gdy masz zbudowany obraz Docker, prześlij go do publicznego repozytorium (Dockerhub, ECR...)
Ustaw środowisko
Utwórz nowy projekt Codebuild lub zmodyfikuj środowisko istniejącego.
Ustaw projekt, aby używał wcześniej wygenerowanego obrazu Docker.
Ustaw proxy MitM na swoim hoście
Jak wskazano w repozytorium Github, możesz użyć czegoś takiego:
Wersja mitmproxy używana to 9.0.1, zgłoszono, że w wersji 10 może to nie działać.
Uruchom budowę i przechwyć dane uwierzytelniające
Możesz zobaczyć token w nagłówku Authorization:
Można to również zrobić z aws cli za pomocą czegoś takiego
Ta podatność została naprawiona przez AWS w pewnym momencie w tygodniu 20 lutego 2023 roku (myślę, że w piątek). Więc atakujący nie może już tego nadużywać :)
Atakujący z podwyższonymi uprawnieniami w CodeBuild mógłby ujawnić token Github/Bitbucket skonfigurowany lub jeśli uprawnienia były skonfigurowane za pomocą OAuth, tymczasowy token OAuth używany do uzyskania dostępu do kodu.
Atakujący mógłby dodać zmienne środowiskowe http_proxy i https_proxy do projektu CodeBuild wskazujące na jego maszynę (na przykład http://5.tcp.eu.ngrok.io:14972
).
Następnie zmienić URL repozytorium github na używający HTTP zamiast HTTPS, na przykład: **http://**github.com/carlospolop-forks/TestActions
Następnie uruchomić podstawowy przykład z https://github.com/synchronizing/mitm na porcie wskazanym przez zmienne proxy (http_proxy i https_proxy)
Na koniec kliknij na Zbuduj projekt, poświadczenia zostaną wysłane w czystym tekście (base64) do portu mitm:
Teraz atakujący będzie mógł użyć tokena ze swojej maszyny, wylistować wszystkie posiadane uprawnienia i (nadużywać) łatwiej niż korzystając bezpośrednio z usługi CodeBuild.
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)