Abuso CLI e API Container: Container CLI/API (T1059.013)
La tecnica T1059.013 descrive l'abuso di interfacce a riga di comando e API native degli ambienti containerizzati per eseguire codice arbitrario all'interno di container o cluster orchestrati. Nel mondo Docker, il demone dockerd espone un endpoint API con cui interagiscono client come Docker CLI, Docker Compose o SDK linguistici (Python, Go). In Kubernetes, il control plane risponde a chiamate dirette all'API server oppure mediate da kubectl e client library ufficiali.
Collocata nella tattica TA0002 (Execution), la tecnica si posiziona subito dopo l'accesso iniziale, tipicamente conseguente a credenziali compromesse, token di service account trafugati o daemon esposti su rete senza autenticazione. Un attaccante che raggiunge l'API può scaricare immagini (Ingress Tool Transfer), avviare container privilegiati (Deploy Container), eseguire comandi in container esistenti (Container Administration Command) e mappare l'ambiente cloud tramite docker inspect, docker ps o query alle risorse Kubernetes come pod, deployment, daemonset e namespace.
L'impatto è amplificato dalla natura effimera dei workload: un container malevolo può minare criptovaluta, esfiltrare secret montati come variabili d'ambiente, o pivotare verso il nodo host sfruttando socket Docker montati o capability eccessive. Il gruppo TeamTNT (G0139) ha costruito parte della propria attività proprio su daemon Docker esposti pubblicamente, dimostrando quanto la superficie sia ancora rilevante in produzione.
In un red team engagement contro infrastruttura containerizzata, la prima ricognizione punta a individuare daemon Docker esposti (porta TCP 2375/2376) e API server Kubernetes raggiungibili (6443, 8443, 10250 per kubelet). Strumenti come Nmap (open source) con script docker-version e http-title, o kube-hunter (open source) di Aqua Security, mappano rapidamente la superficie del cluster.
Una volta identificato un endpoint Docker non autenticato, la catena classica prevede l'enumerazione delle immagini e dei container attivi:
docker -H tcp://target:2375 ps -a
docker -H tcp://target:2375 images
docker -H tcp://target:2375 inspect <container_id>
L'output di inspect rivela variabili d'ambiente contenenti credenziali cloud, token e connection string, oltre a mount point che possono indicare filesystem host esposti. Per ottenere esecuzione codice sul nodo host, un pattern documentato consiste nel lanciare un container privilegiato con il filesystem root del nodo montato:
docker -H tcp://target:2375 run -it --rm --privileged --pid=host -v /:/host alpine chroot /host
Su Kubernetes, con un token di service account estratto da un pod compromesso (leggibile in /var/run/secrets/kubernetes.io/serviceaccount/token), l'operatore red team può interrogare l'API server con kubectl (open source) impostando il token nel kubeconfig, oppure direttamente con curl:
curl -sk -H "Authorization: Bearer $TOKEN" https://kube-api:6443/api/v1/namespaces/default/pods
Se il service account dispone di verbi create o exec su pod, il tester può schedulare un pod con host namespace condivisi o eseguire comandi in pod esistenti:
kubectl exec -it
Per automatizzare l'analisi di postura si utilizzano Peirates (open source), pensato specificamente per pentest Kubernetes con moduli per token stealing e privilege escalation, e kubectl-who-can (open source) per enumerare rapidamente chi può eseguire azioni sensibili. Trivy (open source) e kube-bench (open source) verificano rispettivamente vulnerabilità nelle immagini e conformità CIS Benchmark del cluster.
In laboratorio è utile provisionare un cluster kind o minikube (entrambi open source) con configurazioni deliberatamente permissive per esercitarsi su RBAC misconfiguration, pod security policy assenti e socket Docker montati come volume — pattern osservati ripetutamente in ambienti reali.
Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?
Accedi alle lezioni gratuite e segui il percorso corretto fin dal primo passo