GCP - Privilege Escalation

Reading time: 5 minutes

tip

AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE) Azure 해킹 배우기 및 연습하기: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks 지원하기

Introduction to GCP Privilege Escalation

GCP는 다른 클라우드와 마찬가지로 주체(users, groups, service accounts)와 자원(compute engine, cloud functions 등)을 가지고 있습니다.
그런 다음, 역할을 통해 자원에 대한 주체의 권한이 부여됩니다. 이것이 GCP에서 주체가 자원에 대해 가지는 권한을 지정하는 방법입니다.
특정 권한은 사용자가 자원 또는 제3자 자원에 대해 더 많은 권한을 얻을 수 있게 해주며, 이를 권한 상승(또한, 더 많은 권한을 얻기 위한 취약점 악용)이라고 합니다.

따라서 GCP 권한 상승 기술을 2개 그룹으로 나누고자 합니다:

  • 주체에 대한 권한 상승: 이는 다른 주체를 가장할 수 있게 해주며, 따라서 모든 권한으로 행동할 수 있습니다. 예: _getAccessToken_을 악용하여 서비스 계정을 가장합니다.
  • 자원에 대한 권한 상승: 이는 특정 자원에 대한 더 많은 권한을 얻을 수 있게 해줍니다. 예: setIamPolicy 권한을 악용하여 클라우드 기능을 트리거할 수 있습니다.
  • 일부 자원 권한은 자원에 임의의 서비스 계정을 연결할 수 있게 해줍니다. 이는 SA로 자원을 시작하고, 자원에 들어가서 SA 토큰을 훔칠 수 있게 해줍니다. 따라서 자원 상승을 통해 주체로 상승할 수 있습니다. 이전에 여러 자원에서 이러한 일이 발생했지만, 지금은 덜 빈번하게 발생합니다(하지만 여전히 발생할 수 있습니다).

명백히, 가장 흥미로운 권한 상승 기술은 두 번째 그룹의 기술입니다. 이는 이미 일부 권한이 있는 자원 외부에서 더 많은 권한을 얻을 수 있게 해줍니다. 그러나 자원에서 상승하는 것민감한 정보 또는 다른 주체(아마도 SA의 토큰을 포함하는 비밀을 읽음으로써)에 대한 접근을 제공할 수 있습니다.

warning

GCP 서비스 계정은 주체와 권한 모두를 가지고 있다는 점도 중요합니다. 따라서 SA에서 권한을 상승시키면 SA를 가장할 수 있게 됩니다.

note

괄호 안의 권한은 gcloud로 취약점을 악용하는 데 필요한 권한을 나타냅니다. API를 통해 악용할 경우 필요하지 않을 수 있습니다.

Permissions for Privilege Escalation Methodology

이것은 GCP 내에서 특정 작업을 수행하기 위해 특정 권한을 테스트하는 방법입니다.

  1. github 리포지토리 다운로드 https://github.com/carlospolop/gcp_privesc_scripts
  2. tests/에 새 스크립트 추가

Bypassing access scopes

GCP 메타데이터 서비스에서 유출된 SA의 토큰은 액세스 범위를 가집니다. 이는 토큰이 가진 권한에 대한 제한입니다. 예를 들어, 토큰이 https://www.googleapis.com/auth/cloud-platform 범위를 가지면 모든 GCP 서비스에 전체 접근할 수 있습니다. 그러나 토큰이 https://www.googleapis.com/auth/cloud-platform.read-only 범위를 가지면 SA가 IAM에서 더 많은 권한을 가지고 있더라도 모든 GCP 서비스에 대해 읽기 전용 접근만 가능합니다.

이러한 권한을 우회하는 직접적인 방법은 없지만, 손상된 호스트에서 새 자격 증명을 검색하거나, 제한 없이 OAuth 토큰을 생성하기 위한 서비스 키를 찾거나, 덜 제한된 다른 VM으로 점프하는 것을 시도할 수 있습니다.

access scopes가 사용될 때, 컴퓨팅 인스턴스(VM)에 대해 생성된 OAuth 토큰은 제한이 포함된 범위를 가집니다. 그러나 손상된 계정이 가진 권한을 악용하고 이 제한을 우회할 수 있을지도 모릅니다.

이 제한을 우회하는 가장 좋은 방법은 손상된 호스트에서 새 자격 증명을 찾거나, 제한 없이 OAuth 토큰을 생성하기 위한 서비스 키를 찾거나, 덜 제한된 SA가 있는 다른 VM을 손상시키는 것입니다.

키가 생성된 SA 확인:

bash
for i in $(gcloud iam service-accounts list --format="table[no-heading](email)"); do
echo "Looking for keys for $i:"
gcloud iam service-accounts keys list --iam-account $i
done

권한 상승 기술

AWS에서 권한을 상승시키는 방법은 다른 서비스 계정/사용자/그룹의 권한에 접근할 수 있을 만큼 충분한 권한을 갖는 것입니다. 권한 상승을 연결하여 조직에 대한 관리자 접근 권한을 얻는 것입니다.

warning

GCP에는 수백 (아니면 수천)의 권한이 있습니다. 이 책에서는 내가 아는 모든 권한을 찾을 수 있으며, 이를 악용하여 권한을 상승시킬 수 있지만, 여기 언급되지 않은 어떤 경로알고 있다면 공유해 주세요.

이 섹션의 하위 페이지는 서비스별로 정렬되어 있습니다. 각 서비스에서 권한을 상승시키는 다양한 방법을 찾을 수 있습니다.

GCP를 악용하여 로컬에서 권한 상승하기

GCP의 머신 내부에 있다면 권한을 악용하여 로컬에서도 권한을 상승시킬 수 있습니다:

GCP - local privilege escalation ssh pivoting

참고 문헌

tip

AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE) Azure 해킹 배우기 및 연습하기: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks 지원하기