GCP - BigQuery Privesc
BigQuery
BigQuery에 대한 자세한 정보는 다음을 확인하세요:
Read Table
BigQuery 테이블에 저장된 정보를 읽으면 민감한 정보를 찾을 수 있습니다. 정보를 액세스하기 위해 필요한 권한은 bigquery.tables.get
, bigquery.jobs.create
및 **bigquery.tables.getData
**입니다:
데이터 내보내기
이것은 데이터에 접근하는 또 다른 방법입니다. 클라우드 스토리지 버킷에 내보내고 정보가 담긴 파일을 다운로드합니다.
이 작업을 수행하려면 다음 권한이 필요합니다: 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
)이 권한만으로도 ACL을 수정하여 BigQuery 데이터셋에 대한 접근 권한을 업데이트할 수 있습니다.
bigquery.tables.setIamPolicy
bigquery.tables.setIamPolicy
공격자는 이 권한을 악용하여 자신에게 추가 권한을 부여할 수 있습니다.
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