GCP - BigQuery Privesc
BigQuery
BigQuery에 대한 자세한 정보는 다음을 확인하십시오:
GCP - Bigquery EnumRead Table
BigQuery 테이블 내부에 저장된 정보를 읽으면 민감한 정보를 찾을 수 있습니다. 정보에 접근하기 위해 필요한 권한은 bigquery.tables.get
, bigquery.jobs.create
및 **bigquery.tables.getData
**입니다:
Export data
이것은 데이터를 액세스하는 또 다른 방법입니다. 클라우드 스토리지 버킷에 데이터를 내보내고 정보를 포함한 파일을 다운로드합니다.
이 작업을 수행하려면 다음 권한이 필요합니다: bigquery.tables.export
, bigquery.jobs.create
및 storage.objects.create
.
Insert data
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
문서에 따르면, 언급된 권한으로 행 정책을 업데이트할 수 있습니다.
그러나, CLI bq
를 사용할 때는 몇 가지 더 필요합니다: bigquery.rowAccessPolicies.create
, bigquery.tables.get
.
행 정책 열거의 출력에서 필터 ID를 찾을 수 있습니다. 예:
만약 bigquery.rowAccessPolicies.delete
권한이 있고 bigquery.rowAccessPolicies.update
권한이 없다면, 정책을 삭제할 수도 있습니다:
또 다른 행 액세스 정책을 우회할 수 있는 잠재적 옵션은 제한된 데이터의 값을 변경하는 것입니다. term
이 Cfba
일 때만 볼 수 있다면, 테이블의 모든 레코드를 term = "Cfba"
로 수정하십시오. 그러나 이것은 bigquery에 의해 방지됩니다.
Last updated