AWS Codebuild - Token Leakage
Odzyskiwanie Skonfigurowanych Tokenów Github/Bitbucket
Najpierw sprawdź, czy skonfigurowano jakiekolwiek poświadczenia źródłowe, które mogą ulec wyciekowi:
Poprzez obraz Docker
Jeśli odkryjesz, że uwierzytelnienie na przykład w Githubie jest ustawione w koncie, możesz wyciec ten dostęp (token GH lub token OAuth) sprawiając, że Codebuild będzie używał określonego obrazu Dockera do uruchomienia budowy projektu.
W tym celu możesz utworzyć nowy projekt Codebuild lub zmienić środowisko istniejącego, aby ustawić obraz Dockera.
Obraz Dockera, który możesz użyć, to https://github.com/carlospolop/docker-mitm. Jest to bardzo podstawowy obraz Dockera, który ustawia zmienne środowiskowe https_proxy
, http_proxy
i SSL_CERT_FILE
. Pozwoli to przechwycić większość ruchu hosta wskazanego w https_proxy
i http_proxy
oraz zaufać CERT 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 ustaw swój certyfikat SSL oraz zbuduj obraz Dockera.
NIE USTAWIAJ
http_proxy
, aby nie przechwytywać żądań do punktu końcowego metadanych.Możesz użyć
ngrok
jakngrok tcp 4444
do ustawienia proxy dla twojego hosta.Gdy już zbudujesz obraz Dockera, 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 Dockera
Ustaw proxy MitM na swoim hoście
Jak wskazano w repozytorium Githuba, możesz użyć czegoś w rodzaju:
Użyta wersja mitmproxy to 9.0.1, zgłoszono, że z wersją 10 to może nie działać.
Uruchomienie budowy i przechwycenie poświadczeń
Token można zobaczyć w nagłówku Authorization:
Można to również zrobić z wiersza poleceń aws, coś w stylu
Przez protokół HTTP
Ta podatność została naprawiona przez AWS w pewnym momencie w tygodniu 20 lutego 2023 r. (Chyba w piątek). Dlatego atakujący nie może już z niej skorzystać :)
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 dostępu do kodu.
Atakujący mógł dodać zmienne środowiskowe http_proxy i https_proxy do projektu CodeBuild wskazujące na swoją maszynę (na przykład
http://5.tcp.eu.ngrok.io:14972
).
Następnie zmień adres URL repozytorium github na użycie protokołu HTTP zamiast HTTPS, na przykład: **http://**github.com/carlospolop-forks/TestActions
Następnie uruchom podstawowy przykład z https://github.com/synchronizing/mitm na porcie wskazanym przez zmienne proxy (http_proxy i https_proxy)
W końcu kliknij Build the project, poświadczenia zostaną wysłane w postaci tekstu jawnego (base64) do portu mitm:
Teraz atakujący będzie mógł użyć tokena ze swojego komputera, wyświetlić wszystkie przywileje, jakie ma, i (nadużywać) łatwiej niż korzystając bezpośrednio z usługi CodeBuild.
Last updated