GCP - Privilege Escalation

htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요!

HackTricks를 지원하는 다른 방법:

GCP 권한 상승 소개

GCP는 다른 클라우드와 마찬가지로 사용자, 그룹 및 서비스 계정과 같은 **주체(principals)**와 컴퓨팅 엔진, 클라우드 함수와 같은 **리소스(resources)**를 가지고 있습니다. 그런 다음 역할을 통해 주체에게 리소스에 대한 권한이 부여됩니다. 이는 GCP에서 주체가 리소스에 대해 가지는 권한을 지정하는 방법입니다. 일부 권한은 사용자가 리소스 또는 타사 리소스에 대해 더 많은 권한을 얻을 수 있도록합니다. 이를 **권한 상승(privilege escalation)**이라고 합니다(또한 권한을 더 얻기 위해 취약점을 악용하는 것도 포함됩니다).

따라서, GCP 권한 상승 기술을 2 그룹으로 나누고 싶습니다:

  • 주체에 대한 권한 상승: 이를 통해 다른 주체를 가장하는 것이 가능하며, 따라서 해당 주체의 모든 권한으로 작동할 수 있습니다. 예: 서비스 계정을 가장하기 위해 _getAccessToken_을 악용합니다.

  • 리소스에 대한 권한 상승: 이를 통해 특정 리소스에 대해 더 많은 권한을 얻을 수 있습니다. 예: cloudfunctions에서 setIamPolicy 권한을 악용하여 함수를 트리거할 수 있습니다.

  • 일부 리소스 권한은 임의의 서비스 계정을 리소스에 연결할 수도 있습니다. 이는 리소스를 SA와 함께 시작하고, 리소스에 들어가서 SA 토큰을 훔칠 수 있게합니다. 따라서, 리소스 상승을 통해 주체로 권한 상승할 수 있습니다. 이는 이전에 여러 리소스에서 발생했지만, 이제는 덜 일어납니다(하지만 여전히 발생할 수 있습니다).

당연히, 가장 흥미로운 권한 상승 기술은 두 번째 그룹에 속하는 것입니다. 왜냐하면 이미 권한이 있는 리소스 외에도 더 많은 권한을 얻을 수 있기 때문입니다. 그러나, 리소스에서 권한 상승민감한 정보에도 접근하거나 심지어 다른 주체에도 접근할 수 있음을 유의하세요(예: SA 토큰을 포함하는 비밀을 읽어들여 다른 주체에 접근).

GCP 서비스 계정은 주체(principals) 및 권한(permissions) 모두입니다. 따라서 SA에서 권한을 상승하면 해당 SA를 가장할 수도 있습니다.

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

권한 상승 방법론에 대한 권한

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

  1. https://github.com/carlospolop/gcp_privesc_scripts에서 github 저장소를 다운로드합니다.

  2. tests/에 새로운 스크립트를 추가합니다.

액세스 스코프 우회

GCP 메타데이터 서비스에서 유출된 SA 토큰에는 **액세스 스코프(access scopes)**가 있습니다. 이는 토큰이 가지는 권한에 대한 제한입니다. 예를 들어, 토큰에 https://www.googleapis.com/auth/cloud-platform 스코프가 있다면 모든 GCP 서비스에 전체 액세스 권한이 있습니다. 그러나 토큰에 https://www.googleapis.com/auth/cloud-platform.read-only 스코프가 있다면 IAM에서 SA가 더 많은 권한을 가지더라도 모든 GCP 서비스에 대해 읽기 전용 액세스만 있습니다.

이러한 권한을 우회하는 직접적인 방법은 없지만, 유출된 호스트에서 새로운 자격 증명을 찾아보거나 제한 없이 OAuth 토큰을 생성하기 위한 서비스 키를 찾아보거나 제한이 적은 다른 VM으로 이동해볼 수 있습니다.

액세스 스코프가 사용될 때, 컴퓨팅 인스턴스(VM)에 대해 생성된 OAuth 토큰은 포함된 스코프 제한을 가집니다. 그러나 유출된 계정이 가진 권한을 악용하여 제한을 우회하고 권한을 악용할 수 있을 수도 있습니다.

제한을 우회하는 가장 좋은 방법은 유출된 호스트에서 새로운 자격 증명을 찾거나 제한 없이 OAuth 토큰을 생성하기 위한 서비스 키를 찾아보거나 제한이 적은 다른 VM을 침투하는 것입니다.

다음 명령을 사용하여 생성된 키가 있는 SA를 확인하세요:

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에서 권한을 상승시키는 방법은 다른 서비스 계정/사용자/그룹의 권한에 어떤 식으로든 접근할 수 있는 충분한 권한을 갖는 것입니다. 조직 전체에 대한 관리자 액세스를 얻을 때까지 권한 상승을 연결합니다.

GCP에는 엔티티에게 부여할 수 있는 수백 개 (아마도 수천 개)의 권한이 있습니다. 이 책에서는 권한 상승을 악용할 수 있는 모든 권한을 찾을 수 있지만, 여기에 언급되지 않은 다른 경로를 알고 있다면 공유해 주세요.

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

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

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

pageGCP - local privilege escalation ssh pivoting

참고 자료

htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요!

HackTricks를 지원하는 다른 방법:

最終更新