AWS Codebuild - Token Leakage
Recover Github/Bitbucket Configured Tokens
Najpierw sprawdź, czy są skonfigurowane jakiekolwiek poświadczenia źródłowe, które możesz wyciekować:
Via Docker Image
Jeśli stwierdzisz, że uwierzytelnienie do na przykład Github jest ustawione w koncie, możesz wyekstrahować 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ć adres IP swojego 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
jakngrok 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 w 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
Via HTTP protocol
Ta luka 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 będą wysył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.
Last updated