GCP - BigQuery Privesc
BigQuery
BigQuery에 대한 자세한 정보는 다음을 참조하세요:
pageGCP - Bigquery Enum테이블 읽기
BigQuery 테이블에 저장된 정보를 읽으면 민감한 정보를 찾을 수 있습니다. 정보에 액세스하기 위해 필요한 권한은 bigquery.tables.get
, bigquery.jobs.create
및 **bigquery.tables.getData
**입니다:
데이터 내보내기
이것은 데이터에 접근하는 또 다른 방법입니다. 데이터를 클라우드 스토리지 버킷으로 내보내고 정보가 담긴 파일을 다운로드합니다.
이 작업을 수행하기 위해서는 다음 권한이 필요합니다: bigquery.tables.export
, bigquery.jobs.create
및 storage.objects.create
.
데이터 삽입
다른 장소의 취약점을 악용하기 위해 Bigquery 테이블에 특정 신뢰할 수 있는 데이터를 삽입하는 것이 가능할 수 있습니다. 이는 bigquery.tables.get
, bigquery.tables.updateData
및 bigquery.jobs.create
권한을 사용하여 쉽게 수행할 수 있습니다:
bigquery.datasets.setIamPolicy
bigquery.datasets.setIamPolicy
공격자는 이 권한을 악용하여 BigQuery 데이터셋에 대해 자신에게 추가적인 권한을 부여할 수 있습니다:
bigquery.datasets.update
, (bigquery.datasets.get
)
bigquery.datasets.update
, (bigquery.datasets.get
)이 권한만으로도 BigQuery 데이터셋에 대한 액세스를 업데이트하여 액세스할 수 있는 사용자를 나타내는 ACL을 수정할 수 있습니다:
bigquery.tables.setIamPolicy
bigquery.tables.setIamPolicy
이 권한을 악용하는 공격자는 BigQuery 테이블에 대해 자신에게 추가 권한을 부여할 수 있습니다:
bigquery.rowAccessPolicies.update
, bigquery.rowAccessPolicies.setIamPolicy
, bigquery.tables.getData
, bigquery.jobs.create
bigquery.rowAccessPolicies.update
, bigquery.rowAccessPolicies.setIamPolicy
, bigquery.tables.getData
, bigquery.jobs.create
문서에 따르면, 위에 언급된 권한을 사용하면 행 정책을 업데이트할 수 있습니다.
그러나, bq
CLI를 사용하려면 추가로 필요한 권한이 있습니다: bigquery.rowAccessPolicies.create
, bigquery.tables.get
.
행 정책 열거의 출력에서 필터 ID를 찾을 수 있습니다. 예시:
最終更新