[K8S-Goat] 3. SSRF in the Kubernetes (K8S) world

쥬스몬·2023년 4월 3일
0

K8S-Goat

목록 보기
4/6

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

3번 시나리오는 k8s에서 SSRF 취약점을 악용하여 클라우드 인스턴스 메타데이터 및 내부 서비스 메타데이터 정보에 접근하는 방법에 대해서 다룬다.

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

목표 : 메타데이터에서 k8s-goat-FLAG 값을 탈취한다.

이번 시나리오는 2번 시나리오 DIND (docker-in-docker exploitation)에서 잠깐 확인했던 AWS 메타데이터를 탈취하는 방법과 비슷할것으로 예상된다. 대상에 접근하면 2번 문제와 비슷하지만 이번엔 API를 호출할 수 있도록 구성된 페이지로 이런식으로 사용자에게 endpoint를 전달받아 전달해주는 프록시 구조는 SSRF에 취약하다.

169.254.169.254는 특수한 IP 주소로 AWS EC2 인스턴스 내에서만 호출가능하며 인스턴스의 메타데이터 정보를 담고있다.

메타데이터 내에서 k8s-goat-FLAG를 찾아보려 다양한 정보에 접근했으나 발견하지 못했다.

이후엔 SSRF을 통해 대상 서버에 대한 포트스캔을 진행했다. (http://127.0.0.1:1232에 POST로 -d 파라미터내 FUZZ 부분에 local-ports.txt의 값을 무차별 대입하고 HTTP Response )

결과적으로 5000/TCP가 열려있는것을 확인할 수 있었고, 내부 호스트 서비스인 http://metadata-db를 참조하라는 응답을 볼 수 있다.

ffuf -w ~/Desktop/Tools/WordList/SecLists/Discovery/Web-Content/local-ports.txt -H "content-type: application/json" -X POST -d '{"endpoint":"FUZZ","method":"","headers":""}' -u http://127.0.0.1:1232 -fs 0

즉시 내부 메타데이터 서비스를 호출하니 아래와 같이 디렉터리 인덱싱 응답을 볼 수 있다. 인덱싱되는 디렉터리를 따라가면서 http://metadata-db/latest/secrets/kubernetes-goat 에서 이번 시나리오의 목적인 k8s-goat-FLAG를 찾을 수 있다.

done

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

0개의 댓글