GCP - IAM Privesc
IAM
IAM에 대한 자세한 정보는 다음에서 확인하세요:
pageGCP - IAM, Principals & Org Policies Enumiam.roles.update
(iam.roles.get
)
iam.roles.update
(iam.roles.get
)해당 권한을 가진 공격자는 할당된 역할을 업데이트하고 다른 리소스에 추가 권한을 부여할 수 있습니다. 예를 들어:
다음은 GCP 권한 상승에 대한 내용입니다. 취약한 환경을 자동으로 생성, 악용 및 정리하는 스크립트는 여기에서 찾을 수 있으며, 이 권한을 악용하기 위한 파이썬 스크립트는 여기에서 찾을 수 있습니다. 자세한 내용은 원본 연구를 확인하십시오.
iam.serviceAccounts.getAccessToken
(iam.serviceAccounts.get
)
iam.serviceAccounts.getAccessToken
(iam.serviceAccounts.get
)해당 권한을 가진 공격자는 서비스 계정에 속한 액세스 토큰을 요청할 수 있으므로, 우리보다 더 많은 권한을 가진 서비스 계정의 액세스 토큰을 요청할 수 있습니다.
취약한 환경을 자동으로 생성, 악용 및 정리하는 스크립트는 여기에서 찾을 수 있으며, 이 권한을 악용하기 위한 파이썬 스크립트는 여기에서 찾을 수 있습니다. 자세한 내용은 원본 연구를 확인하십시오.
iam.serviceAccountKeys.create
iam.serviceAccountKeys.create
해당 권한을 가진 공격자는 서비스 계정에 대한 사용자 관리 키를 생성할 수 있으며, 이를 통해 해당 서비스 계정으로 GCP에 액세스할 수 있습니다.
다음은 GCP 권한 상승에 대한 내용을 포함한 해킹 책의 내용입니다. 다음 내용은 /hive/hacktricks-cloud/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-iam-privesc.md 파일에서 가져온 것입니다. 관련된 영어 텍스트를 한국어로 번역하고, 정확히 동일한 마크다운 및 HTML 구문을 유지한 채 번역을 반환하세요. 코드, 해킹 기법 이름, 해킹 관련 용어, 클라우드/SaaS 플랫폼 이름(예: Workspace, aws, gcp...) 및 'leak', pentesting, 마크다운 태그와 같은 요소는 번역하지 마세요. 또한 번역 및 마크다운 구문 이외의 추가 내용은 추가하지 마세요.
다음은 취약한 환경의 생성, 악용 및 정리를 자동화하는 스크립트를 찾을 수 있는 링크입니다: 여기. 또한 이 권한을 악용하는 파이썬 스크립트는 여기에서 찾을 수 있습니다. 자세한 내용은 원본 연구를 확인하세요.
참고로, iam.serviceAccountKeys.update
는 SA의 키를 수정하는 데 사용할 수 없습니다. 키를 수정하려면 iam.serviceAccountKeys.create
권한도 필요합니다.
iam.serviceAccounts.implicitDelegation
iam.serviceAccounts.implicitDelegation
iam.serviceAccounts.implicitDelegation
권한을 가진 서비스 계정이 세 번째 서비스 계정에 iam.serviceAccounts.getAccessToken
권한을 가지고 있는 경우, implicitDelegation을 사용하여 해당 세 번째 서비스 계정을 위한 토큰을 생성할 수 있습니다. 다음은 이를 설명하기 위한 다이어그램입니다.
다음은 취약한 환경의 생성, 악용 및 정리를 자동화하는 스크립트를 찾을 수 있는 링크입니다: 여기. 또한 이 권한을 악용하는 파이썬 스크립트는 여기에서 찾을 수 있습니다. 자세한 내용은 원본 연구를 확인하세요.
참고로, 문서에 따르면 위임은 generateAccessToken() 메서드를 사용하여 토큰을 생성하는 데만 작동합니다.
iam.serviceAccounts.signBlob
iam.serviceAccounts.signBlob
위 권한을 가진 공격자는 GCP에서 임의의 페이로드를 서명할 수 있습니다. 따라서 대상이 되는 SA의 서명되지 않은 JWT를 생성한 다음 blob으로 보내 JWT를 서명받을 수 있습니다. 자세한 내용은 여기를 참조하세요.
다음은 취약한 환경의 생성, 악용 및 정리를 자동화하는 스크립트를 찾을 수 있는 링크입니다: 여기. 또한 이 권한을 악용하는 파이썬 스크립트는 여기와 여기에서 찾을 수 있습니다. 자세한 내용은 원본 연구를 확인하세요.
iam.serviceAccounts.signJwt
iam.serviceAccounts.signJwt
위 권한을 가진 공격자는 올바르게 구성된 JSON 웹 토큰(JWT)을 서명할 수 있습니다. 이전 방법과의 차이점은 구글이 JWT를 포함한 blob을 서명하는 대신 이미 JWT를 기대하는 signJWT 메서드를 사용한다는 것입니다. 이를 사용하면 더 쉽게 사용할 수 있지만, 임의의 바이트 대신 JWT만 서명할 수 있습니다.
다음은 취약한 환경의 생성, 악용 및 정리를 자동화하는 스크립트를 찾을 수 있는 링크입니다: 여기. 또한 이 권한을 악용하는 파이썬 스크립트는 여기에서 찾을 수 있습니다. 자세한 내용은 원본 연구를 확인하세요.
iam.serviceAccounts.setIamPolicy
iam.serviceAccounts.setIamPolicy
위 권한을 가진 공격자는 서비스 계정에 IAM 정책을 추가할 수 있습니다. 이를 악용하여 서비스 계정을 위장할 수 있는 필요한 권한을 부여할 수 있습니다. 다음 예제에서는 흥미로운 SA에 대해 roles/iam.serviceAccountTokenCreator
역할을 부여합니다.
여기에서 취약한 환경의 생성, 악용 및 정리를 자동화하는 스크립트를 찾을 수 있습니다.
iam.serviceAccounts.actAs
iam.serviceAccounts.actAs
iam.serviceAccounts.actAs 권한은 AWS의 iam:PassRole 권한과 유사합니다. 이는 Compute Engine 인스턴스를 시작하는 등의 작업을 실행하는 데 필수적이며, 서비스 계정을 "actAs"할 수 있는 권한을 부여하여 안전한 권한 관리를 보장합니다. 이 권한이 없으면 사용자가 불필요한 액세스를 얻을 수 있습니다. 또한, iam.serviceAccounts.actAs를 악용하는 것은 여러 가지 방법이 있으며, 각 방법마다 일련의 권한이 필요하므로 다른 방법과 대조됩니다.
서비스 계정 위장
서비스 계정 위장은 새로운 및 더 나은 권한을 얻기 위해 매우 유용할 수 있습니다. 다른 서비스 계정을 위장하는 세 가지 방법이 있습니다:
RSA 개인 키를 사용한 인증 (위에서 다룸)
Cloud IAM 정책을 사용한 권한 부여 (여기에서 다룸)
GCP 서비스에 작업 배포 (사용자 계정 침해와 더 관련됨)
iam.serviceAccounts.getOpenIdToken
iam.serviceAccounts.getOpenIdToken
위에서 언급한 권한을 가진 공격자는 OpenID JWT를 생성할 수 있습니다. 이는 신원을 주장하기 위해 사용되며, 리소스에 대한 암묵적인 인가를 반드시 갖지는 않습니다.
이 흥미로운 게시물에 따르면, 토큰을 사용하여 인증하려는 서비스 (토큰을 사용하려는 서비스)를 지정해야 하며, 구글에서 서비스 계정과 JWT의 대상을 나타내는 서명된 JWT를 받게 됩니다.
액세스 권한이 있는 경우 다음과 같이 OpenIDToken을 생성할 수 있습니다:
그럼 당신은 다음과 같이 서비스에 액세스하기 위해 그것을 사용할 수 있습니다:
이러한 종류의 토큰을 통해 인증을 지원하는 일부 서비스는 다음과 같습니다:
Google Cloud Endpoints (Google OIDC를 사용하는 경우)
서비스 계정을 대신하여 OpenID 토큰을 생성하는 예제는 여기에서 찾을 수 있습니다.
참고 자료
最終更新