GCP - Understanding Domain-Wide Delegation

htARTE (HackTricks AWS Red Team Expert)를 통해 **제로부터 영웅까지 AWS 해킹 배우기**!

HackTricks를 지원하는 다른 방법:

이 게시물은 https://www.hunters.security/en/blog/delefriend-a-newly-discovered-design-flaw-in-domain-wide-delegation-could-leave-google-workspace-vulnerable-for-takeover의 소개입니다. 자세한 내용은 해당 링크에서 확인할 수 있습니다.

도메인 와이드 위임 이해

Google Workspace의 도메인 와이드 위임은 Google Workspace Marketplace의 외부 앱 또는 내부 GCP 서비스 계정을 통해 사용자를 대신하여 Workspace 전체에서 데이터에 액세스할 수 있게 합니다. Google API와 상호 작용하는 앱 또는 사용자 위임이 필요한 서비스에 중요한 이 기능은 작업을 자동화하여 효율성을 향상시키고 인간 에러를 최소화합니다. OAuth 2.0을 사용하여 앱 개발자 및 관리자는 이러한 서비스 계정에 개별 사용자 동의 없이 사용자 데이터에 액세스 권한을 부여할 수 있습니다. Google Workspace는 두 가지 주요 전역 위임 객체 ID를 생성할 수 있습니다:

  • GWS 애플리케이션: Workspace Marketplace의 애플리케이션을 위임 ID로 설정할 수 있습니다. Workspace 애플리케이션은 잠재적인 남용을 최소화하기 위해 Google에 의해 검토된 후 마켓플레이스에서 사용할 수 있게 됩니다. 이는 남용 위험을 완전히 제거하지는 않지만 해당 사건이 발생하기 어렵도록 크게 어렵게 만듭니다.

도메인 와이드 위임: 내부 작동

이것은 GCP 서비스 계정이 Google Workspace의 다른 ID를 대신하여 Google API에 액세스하는 방법입니다:

  1. ID가 JWT를 생성: ID는 서비스 계정의 개인 키( JSON 키 쌍 파일의 일부)를 사용하여 JWT를 서명합니다. 이 JWT에는 서비스 계정, 표현할 대상 사용자 및 요청된 REST API에 대한 액세스 OAuth 스코프에 대한 클레임이 포함됩니다.

  2. ID가 액세스 토큰을 요청하기 위해 JWT를 사용: 애플리케이션/사용자는 JWT를 사용하여 Google의 OAuth 2.0 서비스에서 액세스 토큰을 요청합니다. 요청에는 표현할 대상 사용자(사용자의 Workspace 이메일) 및 요청된 액세스의 스코프도 포함됩니다.

  3. Google의 OAuth 2.0 서비스가 액세스 토큰을 반환: 액세스 토큰은 서비스 계정이 지정된 스코프를 위해 사용자를 대신하여 작동할 권한을 나타냅니다. 이 토큰은 일반적으로 수명이 짧으며 주기적으로 새로 고쳐져야 합니다(애플리케이션의 필요에 따라). JWT 토큰에 지정된 OAuth 스코프가 액세스 토큰의 유효성과 결과적인 액세스 토큰에 미치는 영향을 이해하는 것이 중요합니다. 예를 들어, 여러 스코프를 보유한 액세스 토큰은 다수의 REST API 애플리케이션에 대해 유효합니다.

  4. ID가 액세스 토큰을 사용하여 Google API를 호출: 관련 액세스 토큰을 사용하여 서비스는 필요한 REST API에 액세스할 수 있습니다. 애플리케이션은 Google API로 전송되는 HTTP 요청의 "Authorization" 헤더에 이 액세스 토큰을 사용합니다. 이러한 API는 토큰을 사용하여 표현된 ID를 확인하고 필요한 권한이 있는지 확인합니다.

  5. Google API가 요청된 데이터를 반환: 액세스 토큰이 유효하고 서비스 계정에 적절한 권한이 있는 경우 Google API는 요청된 데이터를 반환합니다. 예를 들어, 다음 그림에서는 대상 Workspace 사용자와 관련된 모든 Gmail 메시지 ID를 나열하는 users.messages.list 메서드를 활용했습니다.

最終更新