GCP - local privilege escalation ssh pivoting
이 시나리오에서는 Compute Engine 프로젝트 내의 VM에서 권한이 없는 계정을 침해했다고 가정합니다.
놀랍게도, 침해한 Compute Engine의 GCP 권한을 사용하여 로컬에서 권한 상승을 할 수 있습니다. 클라우드 환경에서 항상 매우 유용하지는 않겠지만 가능하다는 것을 알고 있는 것이 좋습니다.
스크립트 읽기
Compute Instances는 서비스 계정을 사용하여 일부 스크립트를 실행하는 데 사용될 수 있습니다.
IAM이 매우 세분화되어 있기 때문에 계정은 리소스에 대한 읽기/쓰기 권한을 가질 수 있지만 목록 권한은 없을 수 있습니다.
이를 위한 좋은 가상의 예는 instance82736-long-term-xyz-archive-0332893
라는 저장 버킷에 백업을 읽고 쓸 수 있는 권한이 있는 Compute Instance입니다.
명령 줄에서 gsutil ls
를 실행하면 서비스 계정이 storage.buckets.list
IAM 권한이 없기 때문에 아무것도 반환되지 않습니다. 그러나 gsutil ls gs://instance82736-long-term-xyz-archive-0332893
를 실행하면 완전한 파일 시스템 백업을 찾을 수 있으며, 이를 통해 로컬 Linux 계정이 액세스할 수 없는 데이터에 대한 평문 액세스를 얻을 수 있습니다.
이 버킷 이름을 bash, Python, Ruby 스크립트에서 찾을 수 있습니다.
사용자 정의 메타데이터
관리자는 인스턴스 및 프로젝트 수준에서 사용자 정의 메타데이터를 추가할 수 있습니다. 이는 인스턴스로 임의의 키/값 쌍을 전달하는 방법으로, 주로 환경 변수 및 시작/종료 스크립트에 사용됩니다.
또한 userdata를 추가할 수 있으며, 이는 기계가 시작되거나 다시 시작될 때마다 실행되는 스크립트로, 메타데이터 엔드포인트에서도 액세스할 수 있습니다.
자세한 정보는 확인하세요:
IAM 권한 남용
다음 제안된 권한 대부분은 기본 Compute SA에게 부여되지만 기본 액세스 범위로 인해 SA가 사용할 수 없습니다. 그러나 cloud-platform
범위가 활성화되어 있거나 compute
범위만 활성화되어 있다면 이를 남용할 수 있습니다.
다음 권한을 확인하세요:
파일 시스템에서 키 검색
상자 내에서 다른 사용자가 gcloud에 로그인하고 파일 시스템에 자격 증명을 남긴 경우를 확인하세요:
다음은 가장 흥미로운 파일들입니다:
~/.config/gcloud/credentials.db
~/.config/gcloud/legacy_credentials/[ACCOUNT]/adc.json
~/.config/gcloud/legacy_credentials/[ACCOUNT]/.boto
~/.credentials.json
더 많은 API 키 regexes
참고 자료
最終更新