
잘못 구성된 Kubernetes 서버에 보내기 위한 원시 TCP/IP 패킷 제작 - CVE-2020-8558 PoC
원시 TCP/IP 패킷을 제작하는 데 사용할 수 있는 파이썬 스크립트가 포함된 저장소입니다.
쿠버네티스(kube-proxy: CVE-2020-8558)에서 공개된 취약점에 따른 마션 패킷을 테스트하는 데 사용됩니다. 이 PoC는 pod -> node(호스트) localhost 경계 우회를 다룹니다.
취약점의 node -> node 부분에 대한 간단하고 강력한 PoC는 여기를 참조하세요.
패킷 제작 크레딧:
https://inc0x0.com/tcp-ip-packets-introduction/tcp-ip-packets-3-manually-create-and-send-raw-tcp-ip-packets/
https://gist.github.com/NickKaramoff/b06520e3cb458ac7264cab1c51fa33d6
클러스터가 취약한지 여부를 쉽게 증명할 수 있도록 익스플로잇을 쿠버네티스에 배포하기 위한 Dockerfile과 pod manifest가 포함되어 있습니다. 이 스크립트는 마스터 노드에서 실행되는 인증되지 않은 kube API 서버(포트 8080)를 대상으로 업데이트되었습니다(manifest는 pod를 마스터 노드에 배포합니다).
익스플로잇은 kube apiserver의 REST API를 사용하여 클러스터의 기본 네임스페이스에 youve-been-pwned라는 이름의 pod를 생성합니다. 이 pod는 무한 루프로 텍스트를 출력할 뿐이므로 수동으로 삭제해야 합니다.
컨테이너 생성 직후 프로세스를 시작할 때 특정 클러스터(cilium 실행)에서 초기 syn을 보낸 후 호스트로부터 syn/ack를 받지 못하는 문제가 있었습니다. 익스플로잇을 시작하기 전에 네트워크가 작동 중인지 확인하는 start.sh 스크립트로 이 문제를 임시로 우회했으며, 이 방법이 도움이 되는 것 같았습니다.