GCP - Storage Privesc

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

HackTricks를 지원하는 다른 방법:

스토리지

기본 정보:

pageGCP - Storage Enum

storage.objects.get

이 권한을 사용하면 Cloud Storage에 저장된 파일을 다운로드할 수 있습니다. 이를 통해 권한 상승이 가능할 수 있으며, 때로는 민감한 정보가 저장됩니다. 또한, 일부 GCP 서비스는 정보를 버킷에 저장합니다:

  • GCP Composer: Composer 환경을 생성할 때 모든 DAG의 코드버킷에 저장됩니다. 이러한 작업에는 코드 내에 흥미로운 정보가 포함될 수 있습니다.

  • GCR (Container Registry): 컨테이너의 이미지버킷에 저장되므로, 버킷을 읽을 수 있다면 이미지를 다운로드하고 유출 및 소스 코드를 검색할 수 있습니다.

storage.objects.setIamPolicy

이 권한을 사용하면 이 섹션의 이전 시나리오 중 어떤 것이든 남용할 수 있습니다.

storage.buckets.setIamPolicy

이 권한을 사용하여 권한을 수정하는 예제는 다음 페이지를 참조하세요:

pageGCP - Public Buckets Privilege Escalation

storage.hmacKeys.create

Cloud Storage의 "상호 운용성" 기능은 AWS S3와 같은 다른 클라우드 간의 상호 작용을 위해 서비스 계정 및 사용자용 HMAC 키를 생성합니다. 공격자는 이를 악용하여 권한이 상승된 서비스 계정을 위한 HMAC 키를 생성할 수 있으며, 이를 통해 Cloud Storage 내에서 권한을 상승시킬 수 있습니다. 사용자와 연결된 HMAC 키는 웹 콘솔을 통해서만 검색할 수 있지만, 액세스 및 비밀 키는 영구적으로 접근 가능하여 잠재적인 백업 액세스 저장소로 사용할 수 있습니다. 반면, 서비스 계정과 연결된 HMAC 키는 API를 통해 액세스할 수 있지만, 생성 후 액세스 및 비밀 키를 검색할 수 없으므로 지속적인 액세스를 위해 복잡성이 추가됩니다.

# Create key
gsutil hmac create <sa-email>

# Configure gsutil to use it
gsutil config -a

# Use it
gsutil ls gs://[BUCKET_NAME]

이 방법에 대한 다른 악용 스크립트는 여기에서 찾을 수 있습니다.

storage.objects.create, storage.objects.delete = 스토리지 쓰기 권한

버킷 내에서 새로운 객체를 생성하려면 storage.objects.create가 필요하며, 문서에 따르면 기존 객체를 수정하려면 storage.objects.delete도 필요합니다.

클라우드에 쓰기 권한이 있는 버킷에서 가장 일반적으로 악용되는 경우는 버킷이 웹 서버 파일을 저장하는 경우입니다. 이 경우 웹 애플리케이션이 사용할 새로운 코드를 저장할 수 있을 수도 있습니다.

Composer

Composer는 GCP 내에서 관리되는 Apache Airflow입니다. 몇 가지 흥미로운 기능이 있습니다:

  • GKE 클러스터 내에서 실행되므로 Composer 내에서 실행되는 코드에서 액세스할 수 있는 SA 클러스터를 사용합니다.

  • 코드를 버킷에 저장하므로 해당 버킷에 쓰기 액세스 권한이 있는 모든 사용자는 DGA 코드(코드 Apache Airflow가 실행)를 변경/추가할 수 있습니다. 따라서 코드를 저장하는 데 사용되는 버킷에 쓰기 액세스 권한이 있다면 GKE 클러스터에서 실행 중인 SA로 권한 상승할 수 있습니다.

Cloud Functions

  • Cloud Functions 코드는 스토리지에 저장되므로, 이를 덮어쓰면 임의의 코드를 실행할 수 있습니다.

App Engine

  • App Engine 소스 코드는 버킷에 저장되며, 코드를 덮어쓰면 임의의 코드를 실행할 수 있습니다. 이는 불가능합니다.

  • 컨테이너 레이어가 버킷에 저장되는 것 같습니다. 이를 변경할 수 있을까요?

GCR

  • Google Container Registry는 이미지를 버킷에 저장합니다. 해당 버킷에 쓰기 권한이 있다면 해당 버킷이 실행 중인 위치로 측면 이동할 수 있습니다.

  • GCR에서 사용하는 버킷의 URL은 gs://<eu/usa/asia/nothing>.artifacts.<project>.appspot.com과 유사합니다. (상위 수준 하위 도메인은 여기에서 지정됩니다).

참고 자료

htARTE (HackTricks AWS Red Team Expert)를 통해 제로에서 영웅까지 AWS 해킹을 배워보세요!

HackTricks를 지원하는 다른 방법:

最終更新