GCP - Privilege Escalation

HackTricks 지원

GCP 권한 상승 소개

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

따라서 GCP 권한 상승 기술을 2 그룹으로 분류하고 싶습니다:

  • 주체로의 권한 상승: 이를 통해 다른 주체를 가장할 수 있게 되어 그 주체의 모든 권한으로 작동할 수 있습니다. 예: _getAccessToken_을 남용하여 서비스 계정을 가장하는 것.

  • 리소스에 대한 권한 상승: 이를 통해 특정 리소스에 대해 더 많은 권한을 얻을 수 있게 됩니다. 예: 클라우드 함수에서 setIamPolicy 권한을 남용하여 함수를 트리거할 수 있게 됩니다.

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

명백히, 가장 흥미로운 권한 상승 기술은 두 번째 그룹에 속하는 것입니다. 왜냐하면 이미 일부 권한을 가진 리소스 외의 더 많은 권한을 얻을 수 있기 때문입니다. 그러나 리소스에서의 상승민감한 정보 또는 다른 주체(어떤 경우에는 SA의 토큰을 포함하는 비밀을 읽어 통해)에 대한 액세스도 제공할 수 있음을 유의하십시오.

또한 GCP 서비스 계정은 주체 및 권한이기 때문에, SA에서 권한을 상승하면 해당 SA를 가장할 수도 있습니다.

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

권한 상승 방법론을 위한 권한

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

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

  2. tests/에 새 스크립트 추가

액세스 범위 우회

GCP 메타데이터 서비스에서 유출된 SA 토큰에는 액세스 범위가 있습니다. 이것들은 토큰이 가지는 권한에 대한 제한입니다. 예를 들어, 토큰에 https://www.googleapis.com/auth/cloud-platform 범위가 있다면 모든 GCP 서비스에 대한 전체 액세스가 있습니다. 그러나 토큰에 https://www.googleapis.com/auth/cloud-platform.read-only 범위가 있다면 IAM에서 더 많은 권한을 가지고 있더라도 모든 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의 머신 내부에 있다면 권한을 남용하여 로컬에서 권한을 상승할 수도 있습니다:

GCP - local privilege escalation ssh pivoting

참고 자료

HackTricks 지원

Last updated