취약점분석 (Blue Team)/Cloud

[k8s-goat] 14. Hidden in layers

poiri3r 2026. 6. 27. 19:50

이번 시나리오는 Hidden in layers입니다.

민감 정보 노출은 실제 환경에서 가장 흔하게 발견되는 취약점 중 하나입니다.

컨테이너 환겨에서는 비밀번호, 개인키, 토큰 등을 잘못 다루기 쉽습니다.

시작하려면 k8s안에 존재하는 모든 리소스와 이미지들을 식별하세요.

 

라고 되어있네요.

바로 시작해보겠습니다.

 

hidden-in-layers라는 수상한 jobs가 하나 있습니다.

일단 알아낼 수 있는 정보는

Namespace가 default이고, Pod은 1개입니다.

이미지는 madhuakula/k8s-goat-hidden-in-layers를 사용중이니 이걸 분석해야 될 듯하네요

아래쪽 보면 hidden-in-layersd-q24kf라는 이름으로 pod이 실행되고 있습니다.

이미지 분석으로 가보겠습니다.

docker pull madhuakula/k8s-goat-hidden-in-layers

해당 이미지에서 민감 정보를 찾아보겠습니다.

docker history --no-trunc madhuakula/k8s-goat-hidden-in-layers

글자가 조금 작긴 하지만 secret.txt를 이미지에 넣었다가 다음 레이어에서 삭제한 기록이 있습니다.

docker 이미지는 레이어 구조이기 때문에 삭제해도 이전 레이어에는 secret.txt가 남아있을 수 있습니다.

 

이전 레이어 이미지를 저장해보겠습니다.

docker save madhuakula/k8s-goat-hidden-in-layers -o hidden.tar

 

추출한 이미지를 확인해보면 여러가지 파일들이 있고 여기서 secret을 찾아보겠습니다.

 

for f in *; do tar -tf "$f" 2>/dev/null | grep -i secret && echo "[+] found in $f"; done

for f in *; do tar -xf "$f" root/secret.txt 2>/dev/null && cat root/secret.txt; done

해당 blob에서 찾으면 바로 secret값을 출력하게 했습니다.

 

근데 이거 문제를 풀다보니 blob이 뭔지도 잘 모르겠고, layer 구조에 대한 이해도가 많이 부족했던 것 같아서, 추후에 추가로 포스팅해서 공부해보도록 하겠습니다.

 

읽어주셔서 감사드립니다