AWS - Codebuild Privesc
Last updated
Last updated
Ucz się i ćwicz Hacking AWS: Ucz się i ćwicz Hacking GCP:
Uzyskaj więcej informacji w:
codebuild:StartBuild
| codebuild:StartBuildBatch
Tylko z jedną z tych uprawnień wystarczy, aby uruchomić budowę z nowym buildspec i ukraść token roli iam przypisanej do projektu:
Uwaga: Różnica między tymi dwoma poleceniami polega na tym, że:
StartBuild
uruchamia pojedyncze zadanie budowania przy użyciu konkretnego buildspec.yml
.
StartBuildBatch
pozwala na uruchomienie partii budów, z bardziej złożonymi konfiguracjami (takimi jak uruchamianie wielu budów równolegle).
Potencjalny wpływ: Bezpośrednie privesc do dołączonych ról AWS Codebuild.
iam:PassRole
, codebuild:CreateProject
, (codebuild:StartBuild
| codebuild:StartBuildBatch
)Atakujący z uprawnieniami iam:PassRole
, codebuild:CreateProject
oraz codebuild:StartBuild
lub codebuild:StartBuildBatch
mógłby eskalować uprawnienia do dowolnej roli IAM codebuild poprzez utworzenie działającej.
Potencjalny wpływ: Bezpośrednie privesc do dowolnej roli AWS Codebuild.
W kontenerze Codebuild plik /codebuild/output/tmp/env.sh
zawiera wszystkie zmienne środowiskowe potrzebne do uzyskania dostępu do poświadczeń metadanych.
Ten plik zawiera zmienną środowiskową AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
, która zawiera ścieżkę URL do uzyskania poświadczeń. Będzie to coś w stylu /v2/credentials/2817702c-efcf-4485-9730-8e54303ec420
Dodaj to do URL http://169.254.170.2/
a będziesz mógł zrzucić poświadczenia roli.
Ponadto zawiera również zmienną środowiskową ECS_CONTAINER_METADATA_URI
, która zawiera pełny URL do uzyskania informacji metadanych o kontenerze.
iam:PassRole
, codebuild:UpdateProject
, (codebuild:StartBuild
| codebuild:StartBuildBatch
)Podobnie jak w poprzedniej sekcji, jeśli zamiast tworzenia projektu budowy możesz go modyfikować, możesz wskazać rolę IAM i ukraść token.
Potencjalny wpływ: Bezpośrednie privesc do dowolnej roli AWS Codebuild.
codebuild:UpdateProject
, (codebuild:StartBuild
| codebuild:StartBuildBatch
)Jak w poprzedniej sekcji, ale bez uprawnienia iam:PassRole
, możesz nadużyć tych uprawnień, aby zmodyfikować istniejące projekty Codebuild i uzyskać dostęp do roli, którą już mają przypisaną.
Potencjalny wpływ: Bezpośrednie privesc do dołączonych ról AWS Codebuild.
Posiadając wystarczające uprawnienia do rozpoczęcia sesji ssm, możliwe jest wejście do projektu Codebuild, który jest budowany.
Projekt codebuild musi mieć punkt przerwania:
A następnie:
codebuild:StartBuild
| codebuild:StartBuildBatch
), s3:GetObject
, s3:PutObject
Atakujący, który może uruchomić/ponownie uruchomić budowę konkretnego projektu CodeBuild, który przechowuje swój plik buildspec.yml
w wiadrze S3, do którego atakujący ma dostęp do zapisu, może uzyskać wykonanie poleceń w procesie CodeBuild.
Uwaga: eskalacja jest istotna tylko wtedy, gdy pracownik CodeBuild ma inną rolę, miejmy nadzieję, że bardziej uprzywilejowaną, niż ta atakującego.
Możesz użyć czegoś takiego jak buildspec, aby uzyskać reverse shell:
Wpływ: Bezpośrednie privesc do roli używanej przez pracownika AWS CodeBuild, która zazwyczaj ma wysokie uprawnienia.
Należy zauważyć, że buildspec może być oczekiwany w formacie zip, więc atakujący musiałby pobrać, rozpakować, zmodyfikować buildspec.yml
z katalogu głównego, ponownie spakować i przesłać
Potencjalny wpływ: Bezpośrednie privesc do dołączonych ról AWS Codebuild.
For more info .
Więcej szczegółów można znaleźć .
Ucz się i ćwicz Hacking AWS: Ucz się i ćwicz Hacking GCP:
Sprawdź !
Dołącz do 💬 lub lub śledź nas na Twitterze 🐦 .
Dziel się sztuczkami hackingowymi, przesyłając PR-y do i repozytoriów github.