AWS - Codebuild Enumeracja

Tip

Ucz się & ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Wspieraj HackTricks

CodeBuild

AWS CodeBuild jest uznawany za w pełni zarządzaną usługę ciągłej integracji. Głównym celem tej usługi jest zautomatyzowanie procesu kompilacji kodu źródłowego, wykonywania testów i pakowania oprogramowania do wdrożenia. Największą zaletą CodeBuild jest to, że odciąża użytkowników od konieczności provisionowania, zarządzania i skalowania serwerów buildowych. Jest tak, ponieważ sama usługa zarządza tymi zadaniami. Do kluczowych funkcji AWS CodeBuild należą:

  1. Zarządzana usługa: CodeBuild zarządza i skaluje serwery buildowe, zwalniając użytkowników z obowiązku utrzymania serwerów.
  2. Ciągła integracja: Integruje się z procesem rozwoju i wdrażania, automatyzując fazy budowania i testowania w procesie wydawniczym.
  3. Produkcja pakietów: Po fazach budowania i testowania przygotowuje paczki oprogramowania gotowe do wdrożenia.

AWS CodeBuild płynnie integruje się z innymi usługami AWS, zwiększając wydajność i niezawodność pipeline’u CI/CD (Ciągła integracja/Ciągłe wdrażanie).

Github/Gitlab/Bitbucket Poświadczenia

Domyślne poświadczenia źródła

To opcja legacy, w której można skonfigurować pewien dostęp (np. token Github lub aplikację), który będzie współdzielony między projektami codebuild, dzięki czemu wszystkie projekty mogą używać tego skonfigurowanego zestawu poświadczeń.

Przechowywane poświadczenia (tokeny, hasła…) są zarządzane przez codebuild i nie istnieje publiczny sposób ich pobrania za pomocą AWS API.

Niestandardowe poświadczenia źródła

W zależności od platformy repozytorium (Github, Gitlab i Bitbucket) dostępne są różne opcje. Jednak ogólnie każda opcja, która wymaga przechowania tokena lub hasła, zapisze go jako secret w secrets manager.

Pozwala to na to, by różne projekty codebuild mogły używać różnych skonfigurowanych dostępów do dostawców zamiast korzystać tylko z domyślnie skonfigurowanego.

Enumeracja

# List external repo creds (such as github tokens)
## It doesn't return the token but just the ARN where it's located
aws codebuild list-source-credentials

# Projects
aws codebuild list-shared-projects
aws codebuild list-projects
aws codebuild batch-get-projects --names <project_name> # Check for creds in env vars

# Builds
aws codebuild list-builds
aws codebuild list-builds-for-project --project-name <p_name>
aws codebuild list-build-batches
aws codebuild list-build-batches-for-project --project-name <p_name>

# Reports
aws codebuild list-reports
aws codebuild describe-test-cases --report-arn <ARN>

Tip

Jeśli masz codebuild:StartBuild, pamiętaj, że często możesz nadpisać zmienne środowiskowe podczas builda (--environment-variables-override). To wystarczy w niektórych atakach nawet bez UpdateProject lub nadpisania buildspec (na przykład: przekierowanie artifact/upload buckets w celu eksfiltracji sekretów, albo nadużycie language/runtime env vars do wykonania poleceń).

Eskalacja uprawnień

Na poniższej stronie możesz sprawdzić, jak nadużyć uprawnień codebuild w celu eskalacji uprawnień:

AWS - Codebuild Privesc

Działania po eksploatacji

AWS - CodeBuild Post Exploitation

Dostęp bez uwierzytelnienia

AWS - CodeBuild Unauthenticated Access

Źródła

Tip

Ucz się & ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Wspieraj HackTricks