etcd non-authentication

etcd는 key-value 형태의 오픈소스 데이터베이스이며 Redis와 비슷하지만, 데이터를 디스크에 저장한다는 차이점이 있습니다.

쿠버네티스에서는 클러스터의 모든 상태 정보 등을 저장하고 관리하기 위해 etcd를 사용하는데, etcd 서버에 적절한 인증이 요구되지 않는다면 사실상 모든 정보가 탈취될 수 있습니다.

etcd v3은 gRPC-gateway를 통해 HTTP/JSON API를 제공하여, 원하는 데이터를 얻고자 할 때는 POST 메소드 요청의 바디 값으로 key-value를 JSON 형태로 전달해야 합니다.

추가로 요청하는 모든 값들은 Base64로 인코딩해서 전송해야하며, 서버로부터 응답받은 데이터도 Base64 인코딩되어 전달됩니다.

예시로 /registry/secrets/default/db-credentials 경로에 접근하여 데이터베이스 크리덴셜에 대해 저장된 값을 얻고자 하면

응답의 value 필드를 Base64 디코딩하면 Kubernetes Secret의 JSON 구조가 나오며, 해당 JSON 내부의 data 필드 값들은 한 번 더 Base64로 인코딩되어 있습니다.

Abuse

References

Last updated