GCP - 로컬 권한 상승 SSH 피벗팅
Reading time: 4 minutes
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
Azure 해킹 배우기 및 연습하기:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 Discord 그룹 또는 텔레그램 그룹에 참여하거나 Twitter 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
이 시나리오에서는 VM 내에서 비특권 계정을 침해한 상태라고 가정합니다.
놀랍게도, 당신이 침해한 Compute Engine의 GPC 권한은 기계 내에서 로컬 권한을 상승시키는 데 도움을 줄 수 있습니다. 클라우드 환경에서는 항상 유용하지 않을 수 있지만, 가능하다는 것을 아는 것은 좋습니다.
스크립트 읽기
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 등) 내에서 찾을 수 있습니다.
사용자 정의 메타데이터
관리자는 인스턴스 및 프로젝트 수준에서 사용자 정의 메타데이터를 추가할 수 있습니다. 이는 임의의 키/값 쌍을 인스턴스로 전달하는 방법이며, 환경 변수 및 시작/종료 스크립트에 일반적으로 사용됩니다.
또한, 사용자 데이터를 추가할 수 있으며, 이는 기계가 시작되거나 재시작될 때마다 실행되는 스크립트로, 메타데이터 엔드포인트에서도 접근할 수 있습니다.
자세한 정보는 다음을 확인하세요:
IAM 권한 남용
다음에 제안된 대부분의 권한은 기본 Compute SA에 부여됩니다. 유일한 문제는 기본 액세스 범위가 SA가 이를 사용하는 것을 방지한다는 것입니다. 그러나 cloud-platform
범위가 활성화되거나 compute
범위만 활성화되면, 이를 남용할 수 있습니다.
다음 권한을 확인하세요:
- compute.instances.osLogin
- compute.instances.osAdminLogin
- compute.projects.setCommonInstanceMetadata
- compute.instances.setMetadata
- compute.instances.setIamPolicy
파일 시스템에서 키 검색
다른 사용자가 박스 내에서 gcloud에 로그인하고 파일 시스템에 자격 증명을 남겼는지 확인하세요:
sudo find / -name "gcloud"
이것들은 가장 흥미로운 파일들입니다:
~/.config/gcloud/credentials.db
~/.config/gcloud/legacy_credentials/[ACCOUNT]/adc.json
~/.config/gcloud/legacy_credentials/[ACCOUNT]/.boto
~/.credentials.json
더 많은 API 키 정규 표현식
TARGET_DIR="/path/to/whatever"
# Service account keys
grep -Pzr "(?s){[^{}]*?service_account[^{}]*?private_key.*?}" \
"$TARGET_DIR"
# Legacy GCP creds
grep -Pzr "(?s){[^{}]*?client_id[^{}]*?client_secret.*?}" \
"$TARGET_DIR"
# Google API keys
grep -Pr "AIza[a-zA-Z0-9\\-_]{35}" \
"$TARGET_DIR"
# Google OAuth tokens
grep -Pr "ya29\.[a-zA-Z0-9_-]{100,200}" \
"$TARGET_DIR"
# Generic SSH keys
grep -Pzr "(?s)-----BEGIN[ A-Z]*?PRIVATE KEY[a-zA-Z0-9/\+=\n-]*?END[ A-Z]*?PRIVATE KEY-----" \
"$TARGET_DIR"
# Signed storage URLs
grep -Pir "storage.googleapis.com.*?Goog-Signature=[a-f0-9]+" \
"$TARGET_DIR"
# Signed policy documents in HTML
grep -Pzr '(?s)<form action.*?googleapis.com.*?name="signature" value=".*?">' \
"$TARGET_DIR"
References
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
Azure 해킹 배우기 및 연습하기:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 Discord 그룹 또는 텔레그램 그룹에 참여하거나 Twitter 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.