[K8S-Goat] 7. Attacking private registry

쥬스몬·2023년 4월 5일
0

K8S-Goat

목록 보기
6/6

매번 공부를 미루던 k8s에 대한 찍먹을 위해 k8s-goat 프로젝트를 통해 찍먹을 진행한다. 해당 goat 프로젝트에서는 k8s 환경에서 발생할 수 있는 misconfigurations, 취약점, 보안 문제를 의도적으로 취약하게 구성되어있으며 이를 통해 공격을 진행하며 학습한다.

7번 시나리오는 잘못된 설정의 컨테이너 레지스트리로 인해 민감한 내부 정보가 탈취할 수 있는 점에 초점을둔 시나리오이다.

컨테이너 레지스트리는 모든 컨테이너 이미지가 푸시되는 장소로 대부분의 경우 각 조직에는 자체 개인 레지스트리가있다. 이는 때로 잘못된 구성(public/open)으로 문제가 된다.

이번 시나리오를 시작하려면 http://127.0.0.1:1235 에 접근하여 확인할 수 있다.

목표 : 프라이빗 레지스트리 이미지에서 k8s-goat-FLAG 플래그 값을 획득한다.

직접 접근하니 빈페이지만 뜬다.

ffuf로 스캔해보니 아래와 같이 API v2로 구성되어있고 /v2/_catalog에 접근이 가능하다.

해당 경로를 서치해보니 Docker Registry HTTP API v2로 확인됐다.

GET /v2/_catalog

직접 _catalog 경로에 http request를 날리니 아래와 같이 레포지토리 정보가 출력된다.

API 문서를 조금더 훑어보니 각 레포지토리의 이미지 매니패스트를 확인할 수 있다.

GET /v2/<name>/manifests/<reference>

바로 API에 맞게 요청을하니 madhuakula/k8s-goat-alpine, madhuakula/k8s-goat-users-repo 레포지토리에 대한 이미지 매니패스트를 확인할 수 있었다.

그중 madhuakula/k8s-goat-users-repo 레포지포리의 이미지 매니패스트 히스토리에서 API Key 정보 포함된 ENV가 노출되는것을 확인할 수 있다!

이번 시나리오는 트위터의 Vine에서 발견된 버그로 프라이빗 레지스트리가 public으로 open되어있을때 발생할 수 있는 취약점을 통해 소스코드를 덤프할 수 있었던 버그바운티 공개 레포트에 기반으로 만들어졌으며 프라이빗 레지스트리에 대한 액세스 설정을 잘해야될것같다...

done

profile
블로그 이사 (https://juicemon-code.github.io/)

0개의 댓글